Files
gangyan/langchain-chat/server/agent/tools/report_knowledgebase_search.py

43 lines
1.7 KiB
Python
Raw Normal View History

from server.chat.report_chat import report_chat
from configs import VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD, MAX_TOKENS, LLM_MODELS, DEFAULT_REPORT_BASE
import json
import asyncio
from typing import List, Tuple, Any
from pydantic import BaseModel, Field
class ReportKnowledgeInput(BaseModel):
location: str = Field(description="The report related query to be searched")
async def report_knowledgebase_search_iter(query: str) -> tuple[str | Any, list[Any] | Any]:
response = await report_chat(query=query,
fileName=None,
knowledge_base_name=DEFAULT_REPORT_BASE,
model_name=LLM_MODELS[0],
temperature=0.01,
history=[],
top_k=VECTOR_SEARCH_TOP_K,
max_tokens=MAX_TOKENS,
prompt_name="default",
score_threshold=SCORE_THRESHOLD,
stream=False)
contents = ""
docs = []
async for data in response.body_iterator: # 这里的data是一个json字符串
data = json.loads(data)
print("data>>>>>", data)
contents = data["answer"] if "answer" in data.keys() else contents
docs = data["docs"] if "docs" in data.keys() else docs
return contents, docs
def report_knowledgebase_search(query: str) -> tuple[str | Any, list[Any] | Any]:
return asyncio.run(report_knowledgebase_search_iter(query))
if __name__ == "__main__":
result = report_knowledgebase_search("大数据男女比例")
print("答案:", result)