构建有效的代理系统

我们与数十个团队合作,帮助他们在各行各业构建大型语言模型(LLM)代理。最成功的实现都采用简单、可组合的模式,而非复杂框架。

什么是代理系统?
工作流

系统通过预定义的代码路径编排LLM和工具。

代理

系统中LLM动态指导自身流程和工具使用,保持对任务完成方式的控制。

何时使用代理系统
1
寻找最简方案

构建LLM应用时,先寻找最简单的解决方案,仅在必要时增加复杂性。

2
权衡取舍

代理系统通常以延迟和成本换取更好的任务表现。

3
选择合适类型

工作流适合明确定义的任务,代理适合需要灵活性和模型驱动决策的场景。

框架的使用
流行框架

LangGraph、Amazon Bedrock AI Agent、Rivet和Vellum等框架简化了代理系统实现。

优势

简化标准低级任务,如调用LLM、定义和解析工具,以及链接调用。

挑战

额外的抽象层可能掩盖底层提示和响应,增加调试难度。

建议

从直接使用LLM API开始,确保理解底层代码。

基础构建模块
1
2
3
4
1
代理

自主系统

2
复杂工作流

评估-优化、编排-工作者

3
基础工作流

提示链接、路由、并行化

4
增强型LLM

基础构建块

工作流模式
1
提示链接

将任务分解为步骤序列,每个LLM调用处理前一个的输出。适用于可清晰分解的任务。

2
路由

对输入分类并引导至专门的后续任务。适用于有明显类别的复杂任务。

3
并行化

LLM同时处理任务,输出以编程方式聚合。适用于可并行的子任务。

4
编排-工作者

中央LLM动态分解任务,委派给工作者LLM,并综合结果。

自主代理
1
任务理解

代理通过命令或交互讨论明确任务。

2
独立执行

代理独立规划和操作,必要时返回人类获取信息或判断。

3
环境反馈

代理从环境获取"基本事实"(如工具调用结果)评估进度。

4
任务完成

任务完成或达到停止条件(如最大迭代次数)时终止。

实践中的代理应用
客户支持

结合聊天界面与工具集成,访问客户数据、订单历史和知识库,执行退款等操作。

编码代理

解决软件开发问题,通过自动化测试验证代码,使用测试结果迭代解决方案。

工具工程

精心设计工具定义和规范,创建良好的代理-计算机接口(ACI),使模型更容易使用。