# prompts.py class Prompts: # --- 判别器 Prompt --- # 用于判断信息是否充足(隐式触发) INFORMATION_SUFFICIENCY_CHECK = """ 你是一个运筹优化领域的专家,你的任务是分析一段对话历史,判断其中包含的信息是否足够构建一个基础的运筹优化数学模型。 一个完整的模型至少需要明确三个核心要素: 1. **决策变量 (Decision Variables)**: 需要决定的未知数。 2. **目标函数 (Objective Function)**: 需要最大化或最小化的目标,通常与决策变量相关。 3. **约束条件 (Constraints)**: 决策变量必须满足的限制。 请分析以下对话历史,并以JSON格式回答信息是否足够。 对话历史: --- {conversation_history} --- 请判断: - "sufficient": 布尔值(true/false),表示信息是否足够建模。 - "missing_elements": 字符串数组,列出仍然缺失的核心要素(如果 "sufficient" 为 false)。例如:["目标函数", "部分约束条件"]。 - "reason": 简要说明你的判断理由。 请严格按照以下JSON格式输出,不要包含任何其他多余的文字或解释。 {{ "sufficient": boolean, "missing_elements": [], "reason": "..." }} """ # 用于判断用户是否明确要建模(显式触发) EXPLICIT_TRIGGER_CHECK = """ 你是一个意图识别助手,请判断用户的最新一句话是否明确表达了“开始建模”或“信息收集完毕”的意图。 意图只有两类: "StartModeling" 或 "ContinueElicitation"。 一些“StartModeling”的例子: - "可以了,开始建模吧" - "信息应该够了" - "我们现在可以建立模型了吗?" - "就这些了,帮我建模" - "下一步就是建模对吧" 用户的最新输入: "{user_input}" 根据用户的输入,最符合哪个意图?请只回复 "StartModeling" 或 "ContinueElicitation"。 """ # --- 对话模块 Prompt --- # 需求梳理阶段的系统指令 REQUIREMENT_ELICITATION_SYSTEM_PROMPT = """ 你是一名专业的运筹学领域专家,当前的任务是帮助用户通过多轮对话,理清一个运筹优化问题。 你的目标是引导用户说出建模所需的【决策变量】、【目标函数】和【约束条件】。 请以友好、启发性的方式提问,逐步收集信息。避免使用过于专业的术语。 """ # 触发建模时的系统消息 AI_MODELING_NOTICE = "信息收集基本完毕,我将开始为您构建运筹优化模型..." # 分析单段长文本信息是否充足 SINGLE_TEXT_SUFFICIENCY_CHECK = """ # 指令:分析下面这段用户提供的问题描述,判断这段文本本身是否已经包含了构建一个完整的运筹优化(OR)模型所需的所有关键要素。 ## 关键要素定义: 1. **明确的目标 (Objective)**: 必须清楚说明是要最大化还是最小化某个指标(如利润、成本、时间等)。 2. **决策变量 (Decision Variables)**: 必须能推断出需要决定的量是什么(如生产多少产品、分配多少资源等)。 3. **约束条件 (Constraints)**: 必须包含限制决策的条件(如资源限制、需求限制、时间限制等),并且这些条件需要有具体的数字或可计算的关系。 ## 分析文本: --- {text_block} --- ## 你的任务: 以JSON格式返回你的分析。JSON对象必须包含以下键: - "sufficient": (布尔值) 如果所有关键要素都存在且信息足够建模,则为 true,否则为 false。 - "reason": (字符串) 简要解释你为什么认为信息是充足的。 - "missing_elements": (字符串列表) 如果信息不充足 (sufficient: false),请列出还缺少哪些关键信息(例如:"缺少具体的资源总量"、"目标不明确")。 请严格按照JSON格式输出,不要添加任何额外的解释。 """