在亚马逊Bedrock上实现编程式工具调用
本文介绍了编程式工具调用(PTC)这一大语言模型(LLM)与外部工具交互的新范式。PTC通过让模型生成代码(如Python)在沙盒中执行多次工具调用,仅将最终结果返回模型,从而显著降低多工具工作流的延迟与token消耗。文章指出PTC适用于大数据处理、精确计算、多步流程及隐私敏感场景,并概述了在Am
85
热度
90
质量
80
影响力
深度分析
传统工具调用的瓶颈
传统的大语言模型工具调用是一个逐步串行的过程。例如,当用户提问“哪些工程团队成员超出了Q3差旅预算?”时,模型需要:
- 调用“获取团队成员”工具,等待结果返回。
- 读取结果,决定调用“获取个人差旅记录”工具(可能需要为每个成员调用一次),再次等待。
- 分析所有记录,进行数值计算和比较,得出最终答案。
这个过程中,每一次中间结果都必须被发送回模型的上下文窗口。对于涉及多个工具、多次调用的复杂任务,这会造成延迟的几何级数增长和token成本的急剧上升,成为性能和成本的双重瓶颈。
PTC的核心思想与运作机制
编程式工具调用(PTC)彻底改变了这一模式。其核心机制可以概括为三个步骤:
- 代码生成:模型被提示后,一次性生成一段可执行的程序代码(通常是Python)。这段代码内置了调用所需工具的逻辑,可能包含循环、条件判断、数据过滤和聚合等操作。
- 沙盒执行:生成的代码在一个隔离的沙盒执行环境中运行。该环境负责按代码逻辑调用实际工具,并处理所有中间结果。
- 结果返回:沙盒仅将代码执行后的最终处理结果返回给模型。模型无需接触原始数据流或中间步骤。
范式转变的核心在于:模型从“逐步决策的调度员”转变为“编写解决方案的程序员”,而繁重、重复的工具交互和中间计算被卸载到了外部执行环境。
PTC的优势与适用场景
这种模式带来了显著的效益:
- 性能提升:模型只被调用一次(用于生成代码),消除了多次模型推理的往返延迟。
- 成本优化:大大减少了消耗在上下文窗口中的token数量,尤其是当原始数据或中间结果体量庞大时。
- 能力增强:模型通过生成代码,可以表达更复杂的控制流(如循环处理大量项目),突破单次工具调用的表达限制。
- 隐私保护:原始数据(如员工个人记录)可以不进入模型的上下文,仅在沙盒内处理,符合数据最小化原则。
因此,PTC特别适合大规模数据处理、需要精确数值计算的逻辑、多步骤编排的流程以及对数据隐私有严格要求的场景。
在Amazon Bedrock上的三种实现路径
文章强调PTC的底层模式是模型无关的,并介绍了在Amazon Bedrock上实践PTC的三种方法,以满足不同团队的需求:
自托管Docker沙盒(于ECS上):
- 特点:提供最高的控制权限和定制化能力。团队可以完全自定义沙盒的镜像、工具和安全策略。
- 适用场景:对执行环境有特殊要求(如特定库版本、严格安全合规)的团队。
托管解决方案(Amazon Bedrock AgentCore Code Interpreter):
- 特点:开箱即用,由AWS托管,免去了沙盒基础设施的搭建和维护工作。集成度高,易于上手。
- 适用场景:希望快速采用PTC,专注于业务逻辑而非基础设施的团队。
Anthropic SDK兼容路径(通过代理):
- 特点:为习惯使用Anthropic SDK开发体验的团队提供了一条兼容路径。通过代理层将请求转换,使其能够在Bedrock上执行PTC模式。
- 适用场景:开发团队已熟悉Anthropic的工具调用接口,希望保持现有开发习惯的同时利用Bedrock的PTC能力。
总结
PTC代表了LLM应用工程的一个重要优化方向,它通过“**代码生成-沙盒执行-结果
免责声明:以上内容由 AI 生成,仅供参考。