dieya_risk_prediction_backend/docs/conversation-prompts.md

56 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 会话 Prompt 动态路由
会话的普通发送 `POST /api/v1/conversations/{id}/messages` 与流式发送 `POST /api/v1/conversations/{id}/stream` 共用同一条模型调用链:
1. 保存本轮用户消息。
2. 用 `app/prompts/semantic_router.md` 结合本轮问题、近期聊天文字和上一轮主题,提取业务字段并选择 `prompt_key`。路由复用现有语义识别调用,不单独增加一次模型请求。
3. 读取通用角色文件,以及本轮选中的一个环节专家文件;补充运行约束、语义 JSON 和最近 20 条消息,调用模型回复。
4. SSE 发送 `semantic`、`delta`、`done`;普通发送等待完成后返回相同的会话数据。
5. 将最终主题与助手回复一起存入 `conversation_messages.structured_data.semantic`,下一次请求从数据库恢复主题。
## 文件与主题
六份原始业务 Prompt 保存在 `app/prompts/product_development/`:
| prompt_key | 文件 | 适用问题 |
| --- | --- | --- |
| product_manager | 开品产品经理-美妆护肤-角色Prompt.md | 通用咨询、综合规划、原有供应商/物料/质量风险查询 |
| selection_insight | 01-选品洞察.md | 值不值得开、需求、市场机会、竞争 |
| project_review | 02-立项评审.md | 立项书、定位、可行性、评审条件 |
| cost_pricing | 03-成本定价.md | 成本、售价、毛利、投产比 |
| compliance_risk | 04-合规风控.md | 成分、资质、备案、功效宣称、广告合规 |
| listing_selling_points | 05-上架卖点.md | 标题、主图、详情页、卖点文案 |
通用角色每轮加载,环节专家按需加载一个。专家环节采用该专家的输出结构,避免把五类模板一起输出。文件使用 UTF-8,每次调用时读取,修改后下一次请求生效。
`app/prompts/conversation_runtime.md` 维护统一的对话节奏、历史信息承接和实际能力边界;OCR 字段抽取及后台预防建议仍使用 `LLMClient` 内各自的 Prompt。
## 追问承接与主题切换
- 用户补充“抖音,89 元”、回答上一轮问题或说“继续”时,模型选择 `inherit`。后端把它解析为最近一条助手消息持久化的主题。
- 用户明确转问新任务,例如从“值不值得做”改问“毛利怎么算”,应重新选择 `cost_pricing`,不能一律继承上一主题。
- 第一次请求、旧记录没有主题,或模型返回未知主题时,回退到 `product_manager`。模型返回的文件路径不会参与文件读取。
- 开品专家环节以文字回复及 Prompt 内的追问为主,避免短答被旧供应商规则误识别,或附上无关的历史风险卡片。原有明确的快捷查询指令仍保留卡片路由。
- 本次只保存主题,不维护独立的完整产品字段状态;产品事实仍从近期聊天中理解,超出上下文窗口的材料需要用户补充。
语义事件及历史消息中的路由信息示例:
```json
{
"prompt_key": "cost_pricing",
"prompt_name": "成本定价",
"prompt_file": "03-成本定价.md",
"prompt_route_source": "semantic"
}
```
`prompt_route_source` 为 `semantic`(模型选择)、`inherited`(追问承接)或 `fallback`(默认角色)。这些字段复用已有 JSONB,不需要数据库迁移。
## 部署与能力
`pyproject.toml` 已将 Markdown 文件加入安装包;部署源码时也需要同步整个 `app/prompts/` 目录。会话路由只使用固定白名单内的文件。
业务 Prompt 中要求的实时检索与确定性计算,并不会因为加载文件而自动获得工具能力。目前文字会话没有联网检索或计算工具;上下文没有实际工具结果时,回复应标记 `MISSING_MATERIAL`、追问必要材料或说明待计算项,不得声称已检索或完成精确测算。接入工具后,需要同步更新运行约束并传入真实工具结果。
普通发送现在也依赖真实模型配置和响应时间;未配置模型或模型失败时返回错误,不再生成固定模板回复。