3.3 KiB
3.3 KiB
对话模块需求文档
1. 模块定位
Chat 模块负责 Agent 对话页面和用户交互,是复试演示时最核心的入口。
该模块接收用户问题,加载场景配置,调用 Agent Core 执行智能编排,并将结构化结果、引用来源、工具调用和审计信息展示给用户。
2. 模块目标
- 提供按场景进入的 Agent 对话页。
- 支持用户输入业务问题。
- 调用 Agent Core 执行完整 Agent 流程。
- 展示结构化输出。
- 展示 RAG 引用片段。
- 展示工具调用记录。
- 触发审计日志写入。
3. 职责边界
3.1 负责
- 对话页面渲染。
- 表单接收和校验。
- 当前场景上下文传递。
- 调用 Agent Core。
- 展示 Agent 返回结果。
3.2 不负责
- 不直接读取 YAML 场景文件。
- 不直接执行 RAG 检索。
- 不直接执行工具函数。
- 不直接调用大模型 API。
- 不直接写复杂审计细节。
4. 页面需求
4.1 Agent 对话页
路径:/chat/<scenario_id>/
页面区域:
- 当前场景摘要。
- 当前场景下已入库文档多选框。
- 用户问题输入框。
- 提交按钮。
- Agent 结构化输出区域。
- 引用来源区域。
- 工具调用区域。
- 执行耗时区域。
- 审计日志详情入口。
5. 表单需求
用户输入表单字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
message |
textarea | 是 | 用户业务问题 |
document_ids |
list[int] | 否 | 本次对话指定使用的已入库文档 |
校验规则:
- 输入不能为空。
- 输入长度建议不超过 4000 字。
- 如果场景不存在,需要返回明确错误。
document_ids只能包含当前场景下状态为indexed的文档。- 未选择文档时,默认使用当前场景下全部已入库文档作为 RAG 范围。
6. Agent 执行流程
Chat 模块调用 Agent Core 的流程:
用户提交问题
↓
校验 scenario_id 和 message
↓
获取场景配置
↓
调用 `run_agent(scenario_config, user_input, options=None)`
↓
获取 AgentResult
↓
调用 Audit 模块记录日志
↓
渲染结果页面
7. AgentResult 展示需求
Agent Core 返回结果建议包含:
| 字段 | 说明 |
|---|---|
answer |
自然语言回答 |
structured_output |
结构化结果 |
references |
RAG 引用来源 |
tool_calls |
工具调用记录 |
raw_output |
模型原始输出 |
latency_ms |
执行耗时 |
error |
错误信息 |
页面需要优先展示结构化结果。如果结构化解析失败,则展示自然语言回答和错误提示。
8. 错误处理需求
需要处理以下错误:
| 错误 | 页面行为 |
|---|---|
| 场景不存在 | 显示场景不存在 |
| 用户输入为空 | 显示表单错误 |
| LLM API Key 缺失 | 显示模型配置缺失 |
| RAG 检索失败 | 显示检索失败,但允许模型基于已有信息回答 |
| 工具调用失败 | 显示工具失败信息,并继续生成结果 |
| 结构化解析失败 | 展示原始回答,并提示结构化解析失败 |
9. 验收标准
- 可以从场景列表进入对话页。
- 可以提交问题并获得 Agent 输出。
- 页面能展示结构化结果。
- 页面能展示引用来源。
- 页面能展示工具调用记录。
- 执行失败时有可理解的错误提示。
- 每次对话都会产生审计日志。