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.投标确认状态为输单 """ DEFAULT_REPORT_TEMPLATE = """ # 销售日志信息 ## 【项目名称】 - **时间**:【时间】 - **参与人**:【职务-姓名】 - **事件**:【电话、会议、邮件、拜访等】 - **获得信息**:【信息内容】 - **信息来源**:【信息来源】 - **项目进展描述**:【项目进展描述】 """ DEFAULT_DETAILED_ACTION_GUIDE = """ 请根据实际需求定义详细行动指南内容 """ PROMPTS = { "default_retrieval": DEFAULT_RETRIEVAL_PROMPT, "sales_analysis": DEFAUT_SALES_ANALYSIS_PROMPT, "report_template": DEFAULT_REPORT_TEMPLATE, "detailed_action_guide": DEFAULT_DETAILED_ACTION_GUIDE, # 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)