生产环境加固

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 e

7.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 费用 + 基础设施费) / 任务数