构建有效的代理系统
我们与数十个团队合作,帮助他们在各行各业构建大型语言模型(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),使模型更容易使用。