(18-4-02)Agents(智能代理):OpenAI Tools代理

好好学习天天向上:

6.4.2  OpenAI Tools代理

OpenAI Tools 是一种先进的代理机制,它允许大型语言模型(LLM)在处理特定的输入或任务时,智能地选择并调用相应的工具或函数。这些工具可以是网络搜索、数据库查询、文件读取等任何可以通过编程接口(API)调用的功能。

OpenAI Tools 是针对 OpenAI大模型的一个功能,它被设计成可以智能地调用一个或多个函数,并返回用于调用这些函数的参数。在使用 OpenAI Tools 的 API 进行调用时,开发者可以描述这些函数,并让模型智能地选择输出一个 JSON 对象,其中包含调用这些函数所需的参数。OpenAI Tools 的目标是比起使用通用的文本生成或聊天 API 更可靠地返回有效和有用的函数调用。

在 OpenAI 的术语中,调用单个函数的能力被称为 "functions",而调用一个或多个函数的能力被称为 "tools"。Functions(功能)与tools(工具)的区别如下所示:

  1. functions(函数):OpenAI将能够调用单个函数的能力称为functions。这些函数可以执行特定的任务,如搜索、计算或数据分析。
  2. tools(工具):调用一个或多个函数的能力称为tools。在某些情况下,为了完成任务,可能需要按顺序或并行调用多个工具。

注意:在OpenAI Chat API中,函数现在被认为是一种已被弃用的旧选项,而工具是更推荐的替代选项。如果正在使用OpenAI模型创建代理,应该使用这个OpenAI Tools代理,而不是OpenAI函数代理。

OpenAI Tools API 的目标是,提供一种比通用文本完成或聊天API更可靠的方法来返回有效和有用的函数调用,这通过允许模型根据输入内容智能地选择最合适的工具来实现。使用 OpenAI Tools 的优势如下所示。

  1. 提高效率:在适当的情况下,允许模型请求调用多个工具可以显著减少代理完成任务所需的时间。
  2. 灵活性:代理可以根据用户的输入和上下文,灵活地选择最合适的工具来处理任务。

在LangChain中使用 OpenAI Tools 代理的基本步骤如下所示。

(1)初始化工具:定义一组工具,这些工具可以是网络搜索、文件读取器或其他任何API。

(2)创建代理:使用语言模型和工具创建代理,并定义一个提示模板来指导代理如何使用这些工具。

(3)运行代理:通过代理执行器(AgentExecutor)来运行代理,它可以调用代理并执行它选择的工具。

例如下面是一个使用OpenAI Tools代理的例子,展示了如何设置和运行一个代理的方法,该代理能够使用搜索工具来回答关于法国首都的问题。

实例6-1使用OpenAI Tools代理回答关于法国首都的问题(源码路径:codes\6\OpenAITools.py

import os
from langchain_openai import ChatOpenAI
from langchain.agents import create_openai_tools_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain.agents import AgentExecutor
from langchain_community.tools.tavily_search import TavilySearchResults

# 设置 OpenAI API 密钥
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
# 初始化模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# 初始化搜索工具
search_tool = TavilySearchResults(max_results=1)
# 设置提示
prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "You are a helpful assistant. Use the search tool to find answers."),
        ("human", "{input}"),
    ]
)
agent = create_openai_tools_agent(llm, [search_tool], prompt)# 创建 OpenAI Tools 代理
agent_executor = AgentExecutor(agent=agent, tools=[search_tool], verbose=True)# 初始化代理执行器
response = agent_executor.invoke({"input": "What is the capital of France?"})# 运行代理
print(response["output"])

在上述代码中,首先导入所需的库,并设置了 OpenAI API 密钥。然后,初始化了一个 ChatOpenAI 模型,并创建了一个 TavilySearchResults 工具,用于进行网络搜索。接下来,设置了一个简单的提示,告诉代理要使用搜索工具来查找答案。然后,使用 create_openai_tools_agent 函数创建了一个 OpenAI Tools 代理,并初始化了代理执行器。最后,使用代理执行器的 invoke 方法来运行代理,并打印输出代理的回复内容。执行后会输出:

> Entering new AgentExecutor chain...
> Invoking: `tavily_search_results_json` with `{'query': 'What is the capital of France?'}`
> Responded with search results
> Finished chain.
Paris

  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值