增加销售日志分析接口

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)