增加销售日志分析接口

This commit is contained in:
Tiger Ren 2024-10-09 21:53:58 +08:00
parent 2c663d66d7
commit df1b5c3278
3 changed files with 106 additions and 2 deletions

View File

@ -1,5 +1,6 @@
from flask import Blueprint, request, jsonify, Response
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()
@ -48,3 +49,40 @@ def retrive_stream():
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')

View File

@ -1,5 +1,6 @@
from zhipuai import ZhipuAI
class ZhipuService:
def __init__(self):
self.model_name = "glm-4"
@ -88,4 +89,3 @@ class ZhipuService:
for chunk in response:
print(chunk.choices[0].delta.content)
yield chunk.choices[0].delta.content

View File

@ -0,0 +1,66 @@
class PromptRepository:
DEFAULT_RETRIEVAL_PROMPT = """从文档
\"\"\"
{{knowledge}}
\"\"\"
中找问题
\"\"\"
{{question}}
\"\"\"
的答案找到答案就仅使用文档语句回答问题找不到答案就用自身知识回答并且告诉用户该信息不是来自文档
不要复述问题直接开始回答"""
DEFAUT_SALES_ANALYSIS_PROMPT = """
1. 01-prospecting:
- 销售阶段任务: 了解客户信息与客户进行交流初步了解客户需求并确定项目对接人进入客户供应商名单
- 销售关键动作: 1了解客户组织架构了解客户现有系统使用情况竞品使用情况 2判断匹配度 3明确关键部门及其关键人 4明确客户是否有对应预算
- 阶段转化标准: 1.客户有需求 2.有明确的项目联系人
2. 02-evaluation:
- 销售阶段任务: 收集客户信息了解客户内部预算情况预期的项目落地时间产品和数量等判断商机可靠性组织技术交流讲解公司解决方案传递公司价值
- 销售关键动作: 1整理需求确认文档客户确认 2在CRM录入组织架构明确决策链和决策人 3了解决策链的每个客户动力; 4.发展线人 5组织技术交流传递公司及产品价值引导客户的场景和我们的特性结合 6组织技术交流了解预期的项目落地时间产品和数量等 7.和客户确认是否需要测试 8对客户提出的测试需求进行评估确定需求我们优势够决定是否跟进测试
- 阶段转化标准: 1.客户有预算 2.有明确的项目时间 3.有预期的产品和数量
3. 03-qualification:
- 销售阶段任务: 收集确认项目立项信息明确产品和数量组织测试必要性并引导客户做poc测试验证应用场景和技术适用性平鼎成功入围
- 销售关键动作: 1和客户确认是否需要测试 2对客户提出的测试需求进行评估确定需求我们优势够决定是否跟进测试 3引导客户的测试方案制定引导将我们优势点加入到测试方案中性能扩展性边界 4在公司内部组织测试资源 5获取客户内部的测试报告了解真实的测试结论 6了解客户对测试结果的态度和对手情况 7做测试正式汇报和客户达成一致
- 阶段转化标准: 1.项目预算批准项目已立项 2.有确定产品和数量 3.完成场景应用/技术适用性验证客户确定平鼎入围完成poc
4. 04-bidding/negotiating:
- 销售阶段任务: 确认项目是否需要招标提前影响招投标结果并赢得标书若不需要招标则完成商务谈判确认价格和产品可交付沟通与评审
- 销售关键动作: 1.制定关单策略及竞争策略 2.控制立项报告对对手不利的参数 3.如果无法控制立项制定应对策略 4.创造机会与高层沟通汇报 5.沟通交付计划及SOW 6. 确定关键联系人
- 阶段转化标准: 1.完成可交付评审 2.投标通过审批; 3.投标结果确认赢标或完成商务谈判确定价格和产品
5. 05-contract review:
- 销售阶段任务: 发起合同协议审批申请确认合同条款
- 销售关键动作:
- 阶段转化标准: 合同评审通过完成合同协商审批确认合同条款
6. 06-closed won:
- 销售阶段任务: 合同归档项目赢单
- 销售关键动作:
- 阶段转化标准: 合同归档
7. 06-closed cancel:
- 销售阶段任务: 复盘项目输单原因
- 销售关键动作:
- 阶段转化标准: 1.客户明确表示取消项目 2.投标确认状态为输单
"""
PROMPTS = {
"default_retrieval": DEFAULT_RETRIEVAL_PROMPT,
"sales_analysis": DEFAUT_SALES_ANALYSIS_PROMPT,
# Add more prompts here as needed
}
@classmethod
def get_prompt(cls, prompt_name):
return cls.PROMPTS.get(prompt_name, None)
@classmethod
def add_prompt(cls, prompt_name, prompt_content):
cls.PROMPTS[prompt_name] = prompt_content
@classmethod
def remove_prompt(cls, prompt_name):
cls.PROMPTS.pop(prompt_name, None)