Lazy loaded image
👨‍🍳让大模型更加精确可控地调用工具 | 🦜️🔗 LangChain
Words 1412Read Time 4 min
2024-12-31
2024-12-31
type
status
date
slug
summary
tags
category
icon
password
comment
Status
一些模型已经针对工具调用进行了微调,并提供了专门的API用于工具调用。通常,这些模型在工具调用方面比未微调的模型表现得更好,并且建议用于需要工具调用的使用场景。请参阅如何使用聊天模型调用工具的指南以获取更多信息。
 
在这个指南中,我们将看到如何为语言模型添加特别定制的工具调用支持。这是一种替代方法,用于在您使用的模型不原生支持工具调用时调用工具。
我们将通过简单地编写一个提示来实现这一点,这个提示将使模型调用适当的工具。以下是一个逻辑图示:
notion image

Setup

对于已经支持原生工具调用的大模型,不需要使用显示的提示策略。这里我们尝试使用不支持原生工具调用的大模型
为了说明这个概念,我们将使用Ollama的phi3模型,该模型没有原生支持工具调用。如果您也想使用Ollama,请按照这些指示进行操作。
首先,我们来创建一个加法和乘法工具。如需了解更多关于创建自定义工具的信息,请参考此指南
API Reference:tool

创建提示词

我们将编写一个提示,指定模型可以访问的工具、这些工具的参数,以及模型所需的输出格式。在这种情况下,我们将指导它输出一个JSON格式的数据块,形式如下:{"name": "...", "arguments": {...}}。
 

添加输出转换器

现在模型已经能够请求调用一个工具。
现在,我们来创建一些逻辑来实际运行这个工具!
既然模型现在可以请求调用工具,我们需要编写一个可以实际调用这个工具的函数。
这个函数将根据名称选择适当的工具,并将模型生成的参数传递给它。

执行链

让我们将其整合成一个链条,创建一个具有加法和乘法功能的计算器。
RunnablePassthrough 组件可以结果赋值给指定的变量,这样就可以把工具的输入和输出完全打印出来。

总结

这个指南展示了当模型正确输出所有所需工具信息时的“顺利路径”。
实际上,如果您使用的是更复杂的工具,您将开始遇到模型的错误,特别是对于没有针对工具调用进行微调的模型,以及对于能力较弱的模型。
您需要准备添加策略来改善模型的输出;例如,
  1. 提供少量示例。
  1. 添加错误处理(例如,捕获异常并将其反馈给大语言模型,要求它纠正之前的输出)。
上一篇
主流国产大模型工具调用测试| 🦜️🔗 LangChain
下一篇
使用本地模型构建 RAG 应用| 🦜️🔗 LangChain