生产环境加固
7.1 可靠性设计
7.1.1 重试与超时
┌─────────────────────────────────────────────────────────────┐
│ 分层超时策略 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Tool Level: │
│ ├── 单次工具调用超时: 30s │
│ ├── 重试次数: 2 次 │
│ └── Fallback: 返回错误 + 降级方案 │
│ │
│ Agent Level: │
│ ├── 单 Agent 执行超时: 2min │
│ ├── 超时处理: 返回部分结果 │
│ └── Fallback: 简化流程 │
│ │
│ Workflow Level: │
│ ├── 端到端超时: 10min │
│ ├── 超时处理: 保存当前状态 + 通知用户 │
│ └── Fallback: 异步完成 + 通知 │
│ │
└─────────────────────────────────────────────────────────────┘
7.1.2 熔断机制
# 伪代码示例
class CircuitBreaker:
def __init__(self, failure_threshold=5, recovery_timeout=60):
self.failures = 0
self.failure_threshold = failure_threshold
self.recovery_timeout = recovery_timeout
self.state = "closed" # closed, open, half-open
self.last_failure_time = None
def execute(self, func):
if self.state == "open":
if time.now() - self.last_failure_time > self.recovery_timeout:
self.state = "half-open"
else:
raise CircuitOpenError("Circuit is open")
try:
result = func()
if self.state == "half-open":
self.state = "closed"
self.failures = 0
return result
except Exception as e:
self.failures += 1
self.last_failure_time = time.now()
if self.failures >= self.failure_threshold:
self.state = "open"
raise e7.2 安全边界
7.2.1 权限分级
┌─────────────────────────────────────────────────────────────┐
│ Agent 权限分级 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Level 0: Read-Only (只读) │
│ ├── 允许: 查询、搜索、读取 │
│ ├── 禁止: 写入、修改、删除、发送 │
│ └── 示例: 文档检索 Agent │
│ │
│ Level 1: Draft-Only (只生成草稿) │
│ ├── 允许: Read-Only + 生成内容 │
│ ├── 禁止: 发布、发送、提交 │
│ └── 示例: 内容创作 Agent │
│ │
│ Level 2: Action-Allowed (允许操作) │
│ ├── 允许: 读、写、修改、发送 │
│ ├── 要求: 人工确认敏感操作 │
│ └── 示例: 客服 Agent │
│ │
│ Level 3: Autonomous (自主操作) │
│ ├── 允许: 无需确认的完整操作 │
│ ├── 要求: 审计日志 + 监控告警 │
│ └── 示例: 数据处理 Agent │
│ │
└─────────────────────────────────────────────────────────────┘
7.2.2 工具调用边界
# agent_permissions.yaml
agents:
customer_service_agent:
allowed_tools:
- search_knowledge_base
- search_order_history
- create_refund_ticket # 只创建工单,不执行退款
forbidden_tools:
- process_refund
- delete_order
- access_payment_info
billing_agent:
allowed_tools:
- search_knowledge_base
- search_order_history
- process_refund # 最高权限
forbidden_tools:
- delete_user_account
requires_approval:
- process_refund # 需要人工确认7.3 评估与监控
7.3.1 Multi-Level Evaluation
┌─────────────────────────────────────────────────────────────┐
│ 分层评估 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Level 1: Tool Call Evaluation (工具调用评估) │
│ ├── 是否选择了正确的工具? │
│ ├── 参数是否正确? │
│ └── 方法: 单元测试 + Golden Dataset │
│ │
│ Level 2: Agent Evaluation (Agent 评估) │
│ ├── 是否完成了分配的任务? │
│ ├── 输出质量如何? │
│ └── 方法: LLM-as-Judge + 人工审查 │
│ │
│ Level 3: Workflow Evaluation (工作流评估) │
│ ├── Agent 间协作是否顺畅? │
│ ├── 是否有冗余步骤? │
│ └── 方法: Trace 分析 + 端到端测试 │
│ │
│ Level 4: System Evaluation (系统评估) │
│ ├── 用户满意度? │
│ ├── 成本效率? │
│ └── 方法: A/B 测试 + 用户反馈 │
│ │
└─────────────────────────────────────────────────────────────┘
7.3.2 关键指标定义
| 指标 | 定义 | 计算方式 |
|---|---|---|
| Task Success Rate | 任务成功率 | 成功任务数 / 总任务数 |
| Tool Selection Accuracy | 工具选择准确率 | 正确选择数 / 总工具调用 |
| Human Intervention Rate | 人工介入率 | 人工介入次数 / 总任务数 |
| Token Efficiency | Token 效率 | 有效输出 Token / 总输入 Token |
| P50/P95 Latency | 延迟分位数 | 排序后的中位/95%分位点 |
| Cost per Task | 单任务成本 | (API 费用 + 基础设施费) / 任务数 |