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

在使用OpenAI提供的API进行开发时,我们可能会碰到工具调用默认是并行执行的场景。这意味着如果我们询问类似“东京、纽约和芝加哥的天气如何?”的问题,并且我们有一个获取天气的工具,OpenAI将会同时对这三个城市分别发起调用。

然而,在某些开发场景中,我们可能希望限制工具调用的并行性,比如在顺序依赖较强的任务中,或者对于某些需要节约资源的场景。本文将通过代码示例,详细讲解如何禁用并行工具调用。

核心原理解析

OpenAI的工具调用是通过设置参数parallel_tool_calls来控制的。默认情况下,parallel_tool_callsTrue,即工具调用会并行执行。我们可以通过将该参数设置为False来让工具调用以串行方式进行。

代码实现演示

下面的示例代码展示了如何禁用OpenAI API的并行工具调用功能:

from langchain_core.tools import tool
from langchain_openai import ChatOpenAI
import os
from getpass import getpass

# 设置环境变量来存储API密钥
os.environ["OPENAI_API_KEY"] = getpass("Enter your OpenAI API Key:")

# 定义工具函数
@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]

# 初始化ChatOpenAI对象
llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)

# 绑定工具并禁用并行调用
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)

代码说明

  • parallel_tool_calls=False: 这一行代码设置工具调用为串行模式。
  • llm_with_tools.invoke: 发起工具调用请求。

在此示例中,即便我们请求调用工具两次,通过设置parallel_tool_callsFalse,我们可以观察到工具只被调用了一次。

应用场景分析

  1. 顺序任务执行:当工具调用之间存在先后顺序依赖时,需要确保前一个调用完成后再进行下一个调用。
  2. 资源优化:在有限的资源环境中,串行调用可以防止同时发起过多请求导致的资源耗竭。

实践建议

  • 明确使用场景:在需要高效处理独立任务的场景中,保留并行调用;在需要顺序处理的场景中,考虑禁用并行。
  • 监控和优化:注意监控调用的性能指标,确保工具调用优化符合业务需求。

如果遇到问题欢迎在评论区交流。
—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值