56 lines
4.0 KiB
Markdown
56 lines
4.0 KiB
Markdown
# 会话 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`、追问必要材料或说明待计算项,不得声称已检索或完成精确测算。接入工具后,需要同步更新运行约束并传入真实工具结果。
|
||
|
||
普通发送现在也依赖真实模型配置和响应时间;未配置模型或模型失败时返回错误,不再生成固定模板回复。
|