AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Tulip Agent:一种利用增删改查让LLM使用大量工具解决复杂任务的新框架!
发布日期:2024-09-16 11:28:42 浏览次数: 1744 来源:PaperAgent


LLM在工具使用方面仍存在限制,如上下文窗口限制和成本问题:
  • 成本问题:工具描述会占用LLM的上下文窗口,增加推理时间和成本。

  • 注意力和工具限制:从大量工具中选择合适工具对LLM来说是一个挑战,类似于“大海捞针”。

  • 静态性问题:工具使用是静态的,仅限于预先定义的工具,限制了自主智能体的适应性和应用范围。

使用郁金香智能体架构解决一个简单数学问题的示例应用。

Tulip Agent(郁金香智能体架构:允许LLM通过具有创建、读取、更新和删除(CRUD)权限的工具库来解决任务,工作流程:

  • 初始化工具库:自动提取工具信息并创建嵌入向量。

  • 接收用户提示:LLM分解任务并搜索工具库以找到合适的工具。

  • 工具搜索:基于子任务描述,使用语义搜索找到最相关的工具。

  • 工具调用:LLM生成工具调用,工具执行器执行工具并返回结果。

  • 结果反馈:LLM根据工具返回的结果进行进一步操作或响应用户。


郁金香智能体架构及其信息流的概览:大语言模型、工具库、工具本身、搜索模块、功能执行模块以及工具自省模块。

问题阐述

  • 郁金香智能体被设计为一个拥有大量工具集的LLM支持的自主智能体

  • 当接收到自然语言查询时,代理需要将任务分解为可使用现有工具解决的子任务序列。

工具和工具库

  • 工具定义为可执行的函数,具有特定目的并返回结果或状态消息。

  • 通过代码内省自动提取工具信息,生成嵌入向量并存储在工具库中。

  • 工具库可以是任何支持搜索的数据库,这里使用向量存储来实现语义搜索。

任务分解和工具检索

  • 郁金香智能体接收自然语言输入,使用LLM将任务分解为更细粒度的子任务。

  • 通过创建子任务的嵌入向量并匹配工具描述的嵌入向量,来搜索适合的工具。

  • 支持递归分解和搜索工具,如果找不到合适的工具,则进一步细化子任务。

工具使用

  • 基于子任务和识别的工具,LLM生成工具调用,由工具执行器执行并返回结果。

  • LLM可以根据前一个调用的返回值来生成后续的工具调用。

自主工具管理

  • 提供了AutoTulipAgent变体,具备创建、读取、更新和删除工具库中工具的能力。

  • 使用LLM的代码生成能力来创建或更新工具,确保新工具的有效性,并动态加载到工具库中。

架构变体

  • 郁金香智能体架构可以与其他LLMznt范式结合使用,例如使用CoT(Chain of Thought)提示来指导LLM按固定方式执行任务。

在数学任务上的评估和多项消融实验得出了一些结论:

  • 1) 工具对于解决复杂任务至关重要;

  • 2) 使用工具库显著降低了成本;

  • 3) 任务分解改善了工具的使用;

  • 4) 语言模型的性能影响智能体设计的适用性;

  • 5) 嵌入模型的性能(在当前OpenAI模型的高水平上)对工具检索影响很小;

  • 6) 更好的规划允许更精确地搜索工具;

  • 7) 郁金香智能体架构适合于不断创建工具和即时构建工具库。

在几个数学任务上,几个Agent在成本(以美元计)、工具使用精确度、工具使用召回率以及结果正确性方面的表现。设置:语言模型 gpt-3.5-turbo-0125,嵌入模型 text-embedding-3-large,top_k = 5,运行5次。

CotTulipAgent 在模拟环境中控制一个辅助机器人,协助两个人类(穿红色衣服的 Felix 和穿橙色衣服的 Daniel)在具有不同饮品选择的桌面场景中完成各种任务。

附录:

Agent的Prompt:

Tool的定义:

NaiveToolAgent关于“What is 45342 * 23487 + 32478?”的日志

1 INFO:root:Query: What is 45342 * 23487 + 32478?2 INFO:base_agent:Usage for chatcmpl-94zcjnURFRF2nyTMlcVzhWJmfjdTZ in tokens: 3960 prompt and 19 completion.3 INFO:base_agent:Function multiply returned `1064947554` for arguments {'a': 45342, 'b': 23487}.4 INFO:base_agent:Usage for chatcmpl-94zcliQksrQsOMn72GamhLxiJRqN3 in tokens: 3990 prompt and 21 completion.5 INFO:base_agent:Function add returned `1064980032` for arguments {'a': 1064947554, 'b': 32478}.6 INFO:base_agent:Usage for chatcmpl-94zcyDN3oBC8rh5hzFNZkn1iXakLJ in tokens: 4022 prompt and 25 completion.7 base_res='The result of \\(45342 \\times 23487 + 32478\\) is \\(1064980032\\).'

CotTulipAgent关于“What is 45342 * 23487 + 32478?”的日志

1 INFO:root:Query: What is 45342 * 23487 + 32478?2 INFO:tulip_agent:Usage for chatcmpl-94zjNuHaG36iH6FtEuE4po0gRhTG4 in tokens: 182 prompt and 25 completion.3 INFO:root:actions_response_message=ChatCompletionMessage(content='1. Multiply 45342 by 23487.\n2. Add the result ofstep 1 to 32478.', role='assistant', function_call=None, tool_calls=None)4 INFO:tulip_agent:Usage for chatcmpl-94zjPPlK1ySBo6VZJLFMZhPyE0NJK in tokens: 234 prompt and 13 completion.5 INFO:root:Tool search for: {'action_descriptions': ['multiply two numbers', 'add two numbers']}6 INFO:root:Functions for `multiply two numbers`: [...]7 INFO:root:Functions for `add two numbers`: [...]8 INFO:tulip_agent:Usage for chatcmpl-94zjRk9IrLzy5QKpfNEs5bsrXCGvp in tokens: 413 prompt and 19 completion.9 INFO:tulip_agent:Function multiply returned `1064947554` for arguments {'a': 45342, 'b': 23487}.10 INFO:tulip_agent:Usage for chatcmpl-94zjTXb58ZHJiNYDugqpwpaeffzzB in tokens: 443 prompt and 21 completion.11 INFO:tulip_agent:Function add returned `1064980032` for arguments {'a': 1064947554, 'b': 32478}.12 INFO:tulip_agent:Usage for chatcmpl-94zjVrSx0sLQN9ZqoI8f4z6JW0eVx in tokens: 475 prompt and 25 completion.13 tulip_res='The result of \\(45342 \\times 23487 + 32478\\) is \\(1064980032\\).'
Tulip Agent – Enabling LLM-Based Agents to Solve Tasks Using Large Tool Librarieshttps://hri-eu.github.io/tulip_agent/https://arxiv.org/pdf/2407.21778https://github.com/HRI-EU/tulip_agent


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询