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')