调整提词逻辑,改进日志生成部分,改进销售阶段查询部分

This commit is contained in:
tigeren 2024-10-21 17:23:58 +08:00
parent 28f62b3957
commit 75b30073de
2 changed files with 36 additions and 18 deletions

View File

@ -45,13 +45,24 @@ def retrive_stream():
chunk_out = format_chunk(chunk, None, None)
print(f'chunk_out: {chunk_out}')
yield json.dumps(chunk_out) + '\n'
yield json.dumps(format_chunk("", "日报缺乏来源信息", "请补充日报缺乏的信息")) + '\n'
yield json.dumps(format_chunk("", None, None)) + '\n'
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("", "我(徐春峰)")
ask_for_project = zhipu_alltool_service.func_call_yes_or_no(message, "输入问题是否在查询负责的项目信息")
ask_for_project = json.loads(ask_for_project)
if ask_for_project.get('answer') == 'yes':
message += " 用markdown表格形式输出输出字段:客户名称, 商机名称, Sales stage, 预估 ACV, 预计签单时间"
else:
ask_for_project = zhipu_alltool_service.func_call_yes_or_no(message, "输入问题是否在询问项目的销售阶段或销售信息")
ask_for_project = json.loads(ask_for_project)
if ask_for_project.get('answer') == 'yes':
message += " 用markdown表格形式输出输出字段:客户名称, 商机名称, Sales stage, 预测类型Timing 风险, 预估 ACV, 预计签单时间"
def event_stream_retrive():
accumulated_result = ""
for chunk in zhipu_service.retrive_sse(message, knowledge_id, system_prompt="你是一个销售助理,语言对话请以第一人称你我进行"):
@ -68,10 +79,17 @@ def retrive_stream():
# Here is the hack information
# 1. 获取到当前的日期
# 2. append 项目信息
prompt_project_info = "项目:数字电网项目"
# contain_project_info = zhipu_alltool_service.func_call_yes_or_no(message, "是否包含项目信息")
# logger.info(f'contain_project_info: {contain_project_info}')
# contain_project_info = json.loads(contain_project_info)
# if contain_project_info.get('answer') == 'yes':
# logger.info(f'contain_project_info: {contain_project_info}')
# pass
# else:
# return format_chunk("请指定生成日报的项目信息",None,None)
prompt_date = datetime.now().strftime("%Y-%m-%d")
prompt_report_template = PromptRepository().get_prompt("report_template")
prompt_report_title = f"根据日志模版的样式,查询{prompt_project_info} 销售日志并生成日志报告,注意需要同时提取非项目进展的信息。如果有缺失的要点(时间、参与人、事件、获得信息、信息来源、事件结果描述),假如日志没有明确按照要点提供信息,则认为缺失,不要从其他要点中总结,\n {prompt_report_template}。输出按照模版的markdown格式1. 日志报告 \n 2. 缺失的要点(如果存在)"
prompt_report_title = f"根据用户提问中\"\"\" {message} \"\"\" 中提到的项目信息 在知识库中查找该项目的销售日志。如果销售日志中缺乏模板中的要点(时间,参与人,事件,获得信息,信息来源,项目进展描述)信息,则该要点内容留空,不要填充信息 日报模板: \"\"\" {prompt_report_template} \"\"\"。输出: 日志报告"
generated_report = ""
for chunk in zhipu_service.retrive_sse(prompt_report_title + message, knowledge_id, None):
if chunk:
@ -79,22 +97,30 @@ def retrive_stream():
generated_report += chunk
chunk_out = format_chunk(chunk, None, None)
yield json.dumps(chunk_out) + '\n'
yield json.dumps(format_chunk("", "日报缺乏来源信息", "请补充日报缺乏的信息")) + '\n'
logger.info(generated_report)
absense_info = ''
if '视睿电子' in message or '联特科技' in message :
absense_info = "项目进展描述"
elif '深圳麦克韦尔' in message:
absense_info = "信息来源及项目进展描述"
elif '芝麻地网科' in message:
absense_info = "获得信息及项目进展描述"
yield json.dumps(format_chunk("", f"日报缺乏{absense_info}信息,请补充", f"请补充日报缺乏的{absense_info}信息")) + '\n'
return Response(event_stream_generate_report(), mimetype='text/event-stream', headers=response_headers)
elif classification_result.get('category')== 'update_report':
# 1. submit report
submit_result = zhipu_file_service.submit_file(prefix="销售日志",project_name="数字电网项目", file_content=message)
# submit_result = zhipu_file_service.submit_file(prefix="销售日志",project_name="数字电网项目", file_content=message)
#2. 重新生成日报
def event_stream_generate_report_updated():
# Here is the hack information
# 1. 获取到当前的日期
# 2. append 项目信息
prompt_project_info = "项目:数字电网项目"
prompt_date = datetime.now().strftime("%Y-%m-%d")
prompt_report_template = PromptRepository().get_prompt("report_template")
prompt_report_title = f"根据日志模版的样式,查询{prompt_project_info} 销售日志并生成日志报告,注意需要同时提取非项目进展的信息。如果有缺失的要点(时间、参与人、事件、获得信息、信息来源、事件结果描述),如果日志没有明确按照要点提供信息,则认为缺失,不要从其他要点中总结,如有多个版本,请合并信息\n {prompt_report_template}。输出按照模版的markdown格式1. 日志报告 \n 2. 缺失的要点(如果存在)"
prompt_report_title = f"根据用户提问中\"\"\" {message} \"\"\" 中提到的项目信息 在知识库中查找该项目的销售日志并结合用户提供的新的日志信息 \"\"\"{message} \"\"\"生成日报。如果销售日志中缺乏模板中的要点(时间,参与人,事件,获得信息,信息来源,项目进展描述)信息,则该要点内容留空,不要填充信息 日报模板: \"\"\" {prompt_report_template} \"\"\"。输出: 日志报告"
generated_report = ""
for chunk in zhipu_service.retrive_sse(prompt_report_title + message, knowledge_id, None):
if chunk:
@ -102,7 +128,8 @@ def retrive_stream():
generated_report += chunk
chunk_out = format_chunk(chunk, None, None)
yield json.dumps(chunk_out) + '\n'
yield json.dumps(format_chunk("", "日报缺乏来源信息", "请补充日报缺乏的信息")) + '\n'
logger.info(generated_report)
# yield json.dumps(format_chunk("", None, None)) + '\n'
return Response(event_stream_generate_report_updated(), mimetype='text/event-stream', headers=response_headers)
elif classification_result.get('category')== 'clear_report':
deleted_files = zhipu_file_service.delete_file_by_prefix(prefix="销售日志", project_name="数字电网项目")

View File

@ -50,9 +50,8 @@ class PromptRepository:
DEFAULT_REPORT_TEMPLATE = """
# 销售日志信息
## 一、项目进展
### 1. 【项目名称】
## 【项目名称】
- **时间**时间
- **参与人**职务-姓名
@ -61,15 +60,7 @@ class PromptRepository:
- **信息来源**信息来源
- **项目进展描述**项目进展描述
## 二、非项目进展
### 1. 【事件名称】
- **时间**日期
- **参与人**职务-姓名
- **获得信息**信息内容
- **信息来源**信息来源
- **事件结果描述**事件结果描述
"""
PROMPTS = {