91 lines
3.1 KiB
Python
91 lines
3.1 KiB
Python
import logging
|
||
from flask import Blueprint, request, Response
|
||
from app.services.zhipu_service import ZhipuService
|
||
from app.utils.prompt_repository import PromptRepository # Add this import
|
||
|
||
zhipu_controller = Blueprint('zhipu_controller', __name__)
|
||
zhipu_service = ZhipuService()
|
||
logger = logging.getLogger(__name__)
|
||
|
||
@zhipu_controller.route('/zhipu/stream', methods=['POST'])
|
||
def stream_sse():
|
||
data = request.json
|
||
message = data.get('message', '')
|
||
|
||
def event_stream():
|
||
for chunk in zhipu_service.talk_to_zhipu_sse(message):
|
||
if chunk:
|
||
yield chunk
|
||
|
||
return Response(event_stream(), content_type='text/event-stream')
|
||
|
||
@zhipu_controller.route('/zhipu/non-stream', methods=['POST'])
|
||
def non_stream():
|
||
data = request.json
|
||
message = data.get('message', '')
|
||
|
||
response = zhipu_service.talk_to_zhipu(message)
|
||
print(f'response: {response}')
|
||
return response
|
||
|
||
@zhipu_controller.route('/zhipu/retrive/non-stream', methods=['POST'])
|
||
def retrive_non_stream():
|
||
data = request.json
|
||
message = data.get('message', '')
|
||
knowledge_id = data.get('knowledge_id', '')
|
||
prompt_template = data.get('prompt_template', '')
|
||
|
||
response = zhipu_service.retrive(message, knowledge_id, None)
|
||
print(f'response: {response}')
|
||
return response
|
||
|
||
@zhipu_controller.route('/zhipu/retrive/stream', methods=['POST'])
|
||
def retrive_stream():
|
||
data = request.json
|
||
message = data.get('message', '')
|
||
knowledge_id = data.get('knowledge_id', '')
|
||
prompt_template = data.get('prompt_template', '')
|
||
|
||
response = zhipu_service.retrive_sse(message, knowledge_id, None)
|
||
print(f'response: {response}')
|
||
return response
|
||
|
||
|
||
@zhipu_controller.route('/zhipu/analysis/stream', methods=['POST'])
|
||
def analysis_stream():
|
||
data = request.json
|
||
message = data.get('message', '')
|
||
knowledge_id = data.get('knowledge_id', '')
|
||
|
||
# 获取business info
|
||
prompt_get_business_info = f"""
|
||
请根据用户提供的如下信息,查找相关的 '当前详细状态及Close节奏','Sales stage' 信息,并返回给用户:
|
||
{message}
|
||
"""
|
||
business_info = zhipu_service.retrive(prompt_get_business_info, knowledge_id, None)
|
||
print(f'business_info: {business_info}')
|
||
|
||
analysis_rule = PromptRepository().get_prompt('sales_analysis')
|
||
print(f'analysis_rule: {analysis_rule}')
|
||
|
||
# 根据当前详细状态及Close节奏,以及Sales stage,给出分析
|
||
prompt_analysis = f"""
|
||
请根据查询到的上述商机信息:
|
||
{business_info}
|
||
根据如下各销售阶段的销售阶段任务、销售关键动作、阶段转化标准:
|
||
{analysis_rule}
|
||
结合上述商机信息的对应阶段,分析并判断其销售动作是否完成了前一阶段的准出标准,以及是否支持将销售阶段转化到当前阶段
|
||
1. **销售阶段分析**
|
||
2. **销售动作日志分析**
|
||
3. **销售动作与销售阶段的关系**
|
||
4. **判断结果**
|
||
5. **销售阶段分析报告**
|
||
"""
|
||
|
||
def event_stream():
|
||
for chunk in zhipu_service.talk_to_zhipu_sse(prompt_analysis):
|
||
if chunk:
|
||
yield chunk
|
||
|
||
return Response(event_stream(), content_type='text/event-stream')
|