修改部分接口逻辑

This commit is contained in:
Tiger Ren 2024-10-21 14:15:47 +08:00
parent 0ca425811f
commit 54772d6c0b
3 changed files with 19 additions and 13 deletions

View File

@ -32,8 +32,8 @@ def retrive_stream():
prompt_template = data.get('prompt_template', '')
logger.info(f'/zhipu/retrive/stream v2: {message}')
classification_result_str = zhipu_alltool_service.func_call_classify(message)
classify_rule = "只有当输入明确表示需要搜索互联网时才返回web_search"
classification_result_str = zhipu_alltool_service.func_call_classify(message, additional_desc=classify_rule)
print(f'classification_result: {classification_result_str}')
classification_result = json.loads(classification_result_str)
@ -49,13 +49,18 @@ def retrive_stream():
return Response(event_stream_websearch_sse(),mimetype='text/event-stream', headers=response_headers)
elif classification_result.get('category')== 'retrive_knowledge':
logger.info(f'question classify: retrive_knowledge')
message = message.replace("", "我(徐春峰)")
def event_stream_retrive():
for chunk in zhipu_service.retrive_sse(message, knowledge_id, None):
accumulated_result = ""
for chunk in zhipu_service.retrive_sse(message, knowledge_id, system_prompt="你是一个销售助理,语言对话请以第一人称你我进行"):
if chunk:
accumulated_result += chunk
chunk_out = format_chunk(chunk, None, None)
yield json.dumps(chunk_out) + '\n'
yield json.dumps(format_chunk("", "日报缺乏来源信息", "请补充日报缺乏的信息")) + '\n'
yield json.dumps(format_chunk("", None, None)) + '\n'
logger.info(f'accumulated_result: {accumulated_result}')
return Response(event_stream_retrive(), mimetype='text/event-stream', headers=response_headers)
elif classification_result.get('category')== 'generate_report':

View File

@ -10,7 +10,7 @@ class ZhipuAlltoolService:
self.app_secret_key = "d54f764a1d67c17d857bd3983b772016.GRjowY0fyiMNurLc"
logger.info("ZhipuAlltoolService initialized with model: %s", self.model_name)
def func_call_classify(self, message, categories:list=None):
def func_call_classify(self, message, categories:list=None, additional_desc = None):
logger.info("Starting func_call_classify call")
start_time = time.time()
default_categories = ["web_search", "retrive_knowledge", "generate_report", "update_report", "clear_report"]
@ -21,7 +21,7 @@ class ZhipuAlltoolService:
"type": "function",
"function": {
"name": "classify_user_input",
"description": "根据用户输入,判断用户意图,返回意图类型",
"description": f"根据用户输入,判断用户意图,返回意图类型{additional_desc}",
"parameters": {
"type": "object",
"properties": {

View File

@ -90,19 +90,20 @@ class ZhipuService:
logger.error("Error in retrive: %s", str(e))
raise
def retrive_sse(self, message, knowledge_id, prompt_template):
logger.info("Starting retrive_sse call with knowledge_id: %s", knowledge_id)
def retrive_sse(self, message, knowledge_id, prompt_template=None,system_prompt=None):
logger.info("Starting retrive_sse call with knowledge_id: %s, message:%s", knowledge_id, message)
start_time = time.time()
client = ZhipuAI(api_key=self.app_secret_key)
default_prompt = "从文档\n\"\"\"\n{{knowledge}}\n\"\"\"\n中找问题\n\"\"\"\n{{question}}\n\"\"\"\n的答案,找到答案就仅使用文档语句回答问题,找不到答案就用自身知识回答并且告诉用户该信息不是来自文档。\n不要复述问题,直接开始回答。"
default_prompt = "从文档\n\"\"\"\n{{knowledge}}\n\"\"\"\n中找问题\n\"\"\"\n{{question}}\n\"\"\"\n的答案,找到答案就仅使用文档语句回答问题,找不到答案就告诉用户知识库中没有该信息。\n不要复述问题,直接开始回答。"
messages = [{"role": "user", "content": message}]
# if system_prompt != None:
# messages.append({"role": "system", "content": system_prompt})
if prompt_template is None or prompt_template == "":
prompt_template = default_prompt
try:
response = client.chat.completions.create(
model="glm-4",
messages=[
{"role": "user", "content": message},
],
messages=messages,
tools=[
{
"type": "retrieval",