以下是关于集成 LLM 的工具的相关内容:
一、“手臂和腿部”:赋予模型使用工具的能力
二、无需微调,仅用提示词工程就能让 LLM 获得 tool calling 的功能
通过从知识挖掘转向行动导向,增加手臂和腿部的能力有望在各种公司和用户类型之间实现一系列用例。对于消费者而言,LLMs可能很快就能给出菜谱建议,然后为您订购所需的食材,或者建议一个早午餐地点并为您预订餐桌。在企业领域,创始人可以通过接入LLMs使他们的应用程序更易于使用。正如Amodei所指出的:“对于从用户界面角度来说非常难以使用的功能,我们可能只需用自然语言描述即可实现复杂的操作。”例如,对于Salesforce等应用程序,LLM集成应允许用户用自然语言进行更新,并使模型自动进行这些更改,从而大大减少了维护CRM所需的时间。像Cohere和Adept这样的初创公司正在致力于将LLMs集成到这类复杂工具中。Gomez认为,虽然LLMs能够在2年内使用Excel等应用程序的可能性越来越大,但“仍然需要进行许多细化工作。我们将拥有第一代能够使用工具的模型,这将是引人注目但易碎的。最终,我们将获得梦寐以求的系统,我们可以将任何软件交给模型,并附上一些描述,例如‘这是工具的功能,这是如何使用它的’,它将能够使用它。一旦我们可以为LLMs提供特定和通用的工具,它所带来的自动化将成为我们领域的巅峰之作。”关键突破点:LLMs将能够与我们今天使用的工具进行更加有效的交互。
LLMs的真正威力在于使自然语言成为行动的媒介。LLMs对常见且有详细文档的系统具有复杂的理解能力,但它们无法执行从这些系统中提取的任何信息。例如,OpenAI的ChatGPT、Anthropic的Claude和Character AI的Lily可以详细描述如何预订航班,但它们本身无法原生地预订航班(尽管像ChatGPT的插件等技术进展正在推动这一边界)。Amodei表示:“这个大脑在理论上拥有所有这些知识,只是缺少从名称到按钮的映射。”他说:“连接这些电缆并不需要太多的训练。你有一个没有实体的大脑,它知道如何移动,但它还没有连接上手臂和腿部。”随着时间的推移,我们已经看到公司不断改善LLMs使用工具的能力。像必应和谷歌这样的老牌公司和Perplexity和You.com这样的初创公司推出了搜索API。AI21 Labs推出了Jurassic-X,它通过将模型与一组预定工具(包括计算器、天气API、维基百科API和数据库)结合起来,解决了独立LLMs的许多缺陷。OpenAI推出了ChatGPT的插件测试版,允许ChatGPT与Expedia、OpenTable、Wolfram、Instacart、Speak、网络浏览器和代码解释器等工具进行交互,这一突破被认为类似于苹果的“应用商店”时刻。最近,OpenAI在GPT-3.5和GPT-4中引入了函数调用,允许开发者将GPT的能力与任何外部工具进行链接。
本文采用的提示词工程主要有两部分代码组成:提示词注入和工具结果回传。提示词注入用于将工具信息以及使用工具的提示词添加到系统提示中。工具结果回传则是解析tool calling的输出,并将工具返回的内容再次嵌入LLM。[heading2]1、提示词注入阶段[content]INSTRUCTION为最后注入到系统提示中的字符串,他又包含了TOOL_EAXMPLE、tools_instructions、REUTRN_FORMAT三个部分。TOOL_EAXMPLE用于提示LLM如何理解tool以及如何使用tool。在编写TOOL_EAXMPLE时,请注意用一些无关紧要的工具作为示例,例如本文使用的将数字加一和数字减一的工具,从而避免LLM混淆真正可以使用的工具与示例工具。tools_instructions是由目前通用的工具字典转换成LLM可读的工具列表。实际使用LLM时,可以通过输入不同的工具来动态调整tools_instructions,让LLM得知目前可用的工具有哪些以及如何使用。REUTRN_FORMAT定义了调用API的格式。[heading2]2、工具结果回传阶段[content]利用正则表达式抓取输出中的"tool"和"parameters"参数。对于interpreter工具,使用了另一种正则表达式来提取LLM输出的代码,提高LLM使用interpreter工具的成功率。本文使用代码如下:通过识别LLM返回的调用工具的字典,提取出对应的值,再传入相应的工具函数,最后将工具返回的结果以observation的角色返回给LLM。对于一些不接受observation、tool、function角色的LLM接口,可以改为回传给user角色,例如:通过以上提示词工程,可以避免微调,让完全没有tool calling能力的LLM获得稳定的tool calling能力。