什么是代理?

构建有效的代理

什么是代理?

"代理"的定义多样:

  • 完全自主的系统(长期独立运行,使用工具完成复杂任务)

  • 遵循预定义工作流的规范性实现

在Anthropic的架构体系中:

  • 工作流:通过预定义代码路径编排LLM和工具

  • 代理:动态自主决策流程和工具使用的系统


何时(不)使用代理

基本原则

  1. 优先选择最简单的解决方案

  2. 仅在必要时增加复杂性

权衡考量

  • 代理系统以延迟/成本换取任务性能

  • 明确定义任务 → 工作流(可预测性)

  • 灵活决策需求 → 代理

  • 多数场景:优化单次LLM调用(检索+上下文示例)已足够


框架使用指南

常见框架

  • LangGraph

  • Amazon Bedrock AI Agent

  • Rivet/Vellum(可视化工作流工具)

建议

  • 优先直接使用LLM API(多数模式只需数行代码)

  • 使用框架时需理解底层逻辑

  • 参考官方示例手册


核心构建模块

增强型LLM

基础架构单元,集成以下能力:

  • 检索

  • 工具调用

  • 记忆存储

关键设计原则

  • 定制化增强能力

  • 提供清晰接口

  • 推荐使用Model Context Protocol集成工具


工作流模式

1. 提示链

将任务分解为顺序步骤,前序输出作为后续输入:

graph LR  
A[步骤1] --> B{检查门限} --> C[步骤2]  

适用场景

  • 营销文案生成+翻译

  • 文档大纲→正文撰写


2. 路由

分类输入并导向专用流程:

graph TD  
A[输入] --> B[分类器]  
B --> C[子流程1]  
B --> D[子流程2]  

适用场景

  • 客户服务分流(咨询/退款/技术支持)

  • 问题难度路由(Haiku/Sonnet模型调度)


3. 并行化

两种形态

  • 切片:并行处理独立子任务

  • 投票:多版本输出聚合

graph TD  
A[输入] --> B[任务1]  
A --> C[任务2]  
B & C --> D[聚合结果]  

适用场景

  • 内容安全双检

  • 代码漏洞多角度审查


4. 协调器-工作器

动态任务分解架构:

graph TD  
A[协调器] --> B[工作器1]  
A --> C[工作器2]  
B & C --> D[结果合成]  

适用场景

  • 多文件代码修改

  • 跨源信息搜索分析


5. 评估器-优化器

迭代优化循环:

graph LR  
A[生成响应] --> B[评估反馈] --> C[优化调整]  

适用场景

  • 文学翻译润色

  • 复杂搜索迭代


自主代理系统

核心特征

  • 接受人类指令/交互

  • 自主规划执行

  • 环境实时反馈

  • 检查点人工介入

graph TD  
A[启动] --> B[规划] --> C[执行] --> D{检查点}  
D -->|继续| C  
D -->|完成| E[终止]  

最佳实践

  1. 沙盒环境测试

  2. 严格防护机制

  3. 终止条件设置(如最大迭代次数)

应用案例

  • SWE-bench代码问题修复

  • 计算机操作代理


工具设计准则

ACI(代理-计算机接口)原则

  • 格式自然(接近互联网文本范式)

  • 避免复杂转义/计数需求

  • 包含示例用法/边界说明

改进方法

  • 模拟LLM视角优化文档

  • 参数命名自解释化

  • 防错设计(如强制绝对路径)


成功要素

  1. 简单性:避免过度设计

  2. 透明性:显式展示决策过程

  3. 接口质量:工具文档>代码实现

正如软件开发需要重视HCI(人机交互),构建代理系统更需要精心设计ACI(代理-计算机接口)。


附录

典型应用场景

A. 客户支持

  • 自然对话流+工具集成

  • 成功指标:用户定义解决率

  • 商业模型:按解决结果收费

B. 编码代理

  • 自动化测试验证

  • 问题空间结构化

  • 人类审核关键环节


工具提示工程

格式选择原则

  • 给模型足够"思考"空间

  • 采用常见文本格式(如Markdown>JSON)

  • 避免精确计数需求

优化案例

  • 文件编辑:差异对比>全文件重写

  • 路径处理:绝对路径>相对路径

通过持续测试迭代工具定义,最终在SWE-bench任务中实现了91%的准确调用率。

你可能感兴趣的:(大数据,运维)