type
status
date
slug
summary
tags
category
icon
password
comment
Status
一些模型已经针对工具调用进行了微调,并提供了专门的API用于工具调用。通常,这些模型在工具调用方面比未微调的模型表现得更好,并且建议用于需要工具调用的使用场景。请参阅如何使用聊天模型调用工具的指南以获取更多信息。
在这个指南中,我们将看到如何为语言模型添加特别定制的工具调用支持。这是一种替代方法,用于在您使用的模型不原生支持工具调用时调用工具。
我们将通过简单地编写一个提示来实现这一点,这个提示将使模型调用适当的工具。以下是一个逻辑图示:
Setup
对于已经支持原生工具调用的大模型,不需要使用显示的提示策略。这里我们尝试使用不支持原生工具调用的大模型
为了说明这个概念,我们将使用Ollama的phi3模型,该模型没有原生支持工具调用。如果您也想使用Ollama,请按照这些指示进行操作。
首先,我们来创建一个加法和乘法工具。如需了解更多关于创建自定义工具的信息,请参考此指南。
API Reference:tool
创建提示词
我们将编写一个提示,指定模型可以访问的工具、这些工具的参数,以及模型所需的输出格式。在这种情况下,我们将指导它输出一个JSON格式的数据块,形式如下:{"name": "...", "arguments": {...}}。
添加输出转换器
现在模型已经能够请求调用一个工具。
现在,我们来创建一些逻辑来实际运行这个工具!
既然模型现在可以请求调用工具,我们需要编写一个可以实际调用这个工具的函数。
这个函数将根据名称选择适当的工具,并将模型生成的参数传递给它。
执行链
让我们将其整合成一个链条,创建一个具有加法和乘法功能的计算器。
RunnablePassthrough 组件可以结果赋值给指定的变量,这样就可以把工具的输入和输出完全打印出来。
总结
这个指南展示了当模型正确输出所有所需工具信息时的“顺利路径”。
实际上,如果您使用的是更复杂的工具,您将开始遇到模型的错误,特别是对于没有针对工具调用进行微调的模型,以及对于能力较弱的模型。
您需要准备添加策略来改善模型的输出;例如,
- 提供少量示例。
- 添加错误处理(例如,捕获异常并将其反馈给大语言模型,要求它纠正之前的输出)。
- Author:小灰
- URL:https://blog.opencontent.cn//article/langchain-call-tool
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!