Files
DEMO-AGENT/docs/modules/02_scenarios_module_requirements.md

142 lines
3.5 KiB
Markdown

# Scenarios 模块需求文档
## 1. 模块定位
Scenarios 模块负责管理业务 Agent 场景,是整个平台快速适配未知复试题的核心入口。
场景定义需要尽量配置化,避免把具体业务逻辑写死在 Django View 或 Agent Core 中。
## 2. 模块目标
- 读取预置场景配置。
- 展示可用业务 Agent 列表。
- 提供场景详情。
- 为 Chat 模块提供当前场景的完整配置。
- 支持后续扩展为 Django Admin 可编辑场景。
## 3. 职责边界
### 3.1 负责
- 场景模板定义。
- 场景配置文件读取。
- 场景元信息展示。
- 场景启用/禁用状态。
- 场景与文档、审计日志的关联关系。
### 3.2 不负责
- 不执行 Agent 对话。
- 不直接处理 RAG 检索。
- 不直接调用工具。
- 不直接调用大模型。
- 不解析结构化输出。
## 4. 场景模板需求
V1 预置 5 类场景模板:
| 模板 ID | 模板名称 | 适用题型 |
|---|---|---|
| `knowledge_qa` | 知识库问答助手 | SOP、制度、客服知识库、内部文档问答 |
| `document_review` | 文档审核助手 | 合同审核、制度审核、材料合规检查 |
| `ticket_assistant` | 工单处理助手 | 客服工单、售后工单、运维工单 |
| `quality_analysis` | 质量异常分析助手 | 生产质量、缺陷分析、原因定位 |
| `risk_audit` | 风险审核助手 | 财务审核、采购审核、报销审核、合同风险 |
## 5. 场景配置字段
场景配置文件建议使用 YAML。
必填字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | string | 场景唯一标识 |
| `name` | string | 场景名称 |
| `description` | string | 场景说明 |
| `agent.role` | string | Agent 角色 |
| `agent.goal` | string | Agent 目标 |
| `agent.instructions` | list[string] | Agent 指令 |
| `rag.enabled` | boolean | 是否启用 RAG |
| `tools` | list[string] | 可用工具列表 |
| `output.type` | string | 输出模板类型 |
| `audit.enabled` | boolean | 是否记录审计 |
示例:
```yaml
id: document_review
name: 文档审核助手
description: 检查合同、制度或 SOP 中的风险点和缺失项
agent:
role: 文档审核专家
goal: 根据审核规则和知识库内容输出结构化审核意见
instructions:
- 只基于用户提供文档和知识库进行判断
- 不确定的问题必须标记为需人工复核
- 输出必须包含风险等级和修改建议
rag:
enabled: true
collection: document_review
top_k: 5
tools:
- check_required_fields
output:
type: document_review_report
audit:
enabled: true
```
## 6. 页面需求
### 6.1 场景列表页
路径:`/`
展示内容:
- 场景名称。
- 场景描述。
- 适用题型。
- 是否启用。
- 进入对话按钮。
### 6.2 场景详情页 可选
路径:`/scenarios/<scenario_id>/`
展示内容:
- Agent 角色。
- Agent 目标。
- RAG 是否启用。
- 可用工具列表。
- 输出模板类型。
V1 可以不做独立详情页,在对话页展示当前场景摘要即可。
## 7. 服务接口需求
Scenarios 模块至少需要提供以下服务函数:
```text
list_scenarios() -> list[ScenarioConfig]
get_scenario(scenario_id: str) -> ScenarioConfig
validate_scenario(config: dict) -> ValidationResult
```
## 8. 验收标准
- 首页可以展示 5 个预置场景。
- 点击场景可以进入对应对话页。
- 场景配置来自配置文件,而不是硬编码在 View 中。
- 缺失必填字段时能给出明确错误。
- Chat 模块可以根据 `scenario_id` 获取完整场景配置。