# Agent 设计文档 ## 1. 设计目标 Agent 设计的核心目标是支持未知复试题的快速适配。 系统不针对单一业务写死,而是通过场景配置、知识库、工具和输出模板组合出不同业务 Agent。 ```text 业务 Agent = 场景配置 + 知识库 + 工具集 + 输出模板 + 审计日志 + 模型适配器 ``` ## 2. Agent 类型 V1 预置 5 类 Agent 场景: | Agent ID | 名称 | 适用场景 | |---|---|---| | `knowledge_qa` | 知识库问答助手 | SOP、制度、客服知识库 | | `document_review` | 文档审核助手 | 合同、制度、SOP、材料审核 | | `ticket_assistant` | 工单处理助手 | 客服、售后、运维工单 | | `quality_analysis` | 质量异常分析助手 | 生产、质检、缺陷分析 | | `risk_audit` | 风险审核助手 | 财务、采购、报销、合同风险 | ## 3. Agent 执行链路 ```text 用户输入 ↓ 加载场景配置 ↓ 判断是否启用 RAG ↓ 检索知识库片段 ↓ 加载可用工具 ↓ 构造 Prompt ↓ 调用大模型 ↓ 解析工具调用和结构化输出 ↓ 生成 AgentResult ↓ 写入审计日志 ↓ 页面展示 ``` ## 4. 场景配置结构 场景配置建议使用 YAML。 ```yaml id: quality_analysis name: 质量异常分析助手 description: 用于分析生产质量异常、检索 SOP、生成处理建议 agent: role: 质量管理专家 goal: 根据用户问题、知识库和工具结果,输出可执行的质量分析报告 instructions: - 回答必须基于知识库或工具结果 - 不确定时必须说明缺失信息 - 涉及质量风险时给出风险等级 rag: enabled: true collection: quality_docs top_k: 5 tools: - get_recent_defect_records - calculate_defect_rate output: type: quality_report audit: enabled: true log_retrieval: true log_tool_calls: true ``` ## 5. Prompt 组成 Prompt 建议由以下部分组成: ```text 系统角色 任务目标 行为约束 输出格式要求 知识库检索内容 工具调用结果 用户问题 ``` V1 不追求复杂 Prompt 框架,优先保证可读、可改、可解释。 ## 6. RAG 策略 RAG 在 V1 中负责给 Agent 提供题目材料和业务知识。 入库流程: ```text 上传文件 ↓ 抽取文本 ↓ 文本切分 ↓ 生成 embedding ↓ 写入 Chroma ``` 检索流程: ```text 用户问题 ↓ 按 scenario_id 过滤 ↓ 向量检索 top_k ↓ 返回片段内容、来源和分数 ``` ## 7. 工具调用策略 工具用于补足大模型不能直接可靠完成的业务动作。 V1 内置工具: | 工具 | 用途 | |---|---| | `calculate_rate` | 计算比例、缺陷率、通过率 | | `query_demo_records` | 查询模拟业务数据 | | `check_required_fields` | 检查必填项 | | `generate_action_items` | 生成行动项 | 工具返回格式: ```json { "tool_name": "calculate_rate", "success": true, "arguments": {}, "result": {}, "error": "" } ``` ## 8. 结构化输出 V1 支持以下输出类型: - `general_answer` - `document_review_report` - `ticket_response` - `quality_report` - `risk_audit_report` 结构化输出优先使用 JSON。 解析失败时: - 保留模型原始输出。 - 返回解析错误。 - 页面展示原始回答。 - 审计日志记录失败原因。 ## 9. AgentResult Agent Core 统一返回: ```json { "answer": "", "structured_output": {}, "references": [], "tool_calls": [], "raw_output": "", "model_name": "", "latency_ms": 0, "status": "success", "error": "" } ``` ## 10. Adapter 策略 V1 默认使用自研轻量 Orchestrator。 后续可以扩展: - OpenAI Agents SDK Adapter。 - Dify API Adapter。 - LangGraph Adapter。 所有 Adapter 应保持统一接口: ```text run(scenario_config, user_input, options=None) -> AgentResult ``` 这样可以保证 Django 业务层不受底层 Agent 编排实现影响。