当前位置:   article > 正文

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

openai tools agent

好好学习天天向上:

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

  1. import os
  2. from langchain_openai import ChatOpenAI
  3. from langchain.agents import create_openai_tools_agent
  4. from langchain_core.prompts import ChatPromptTemplate
  5. from langchain.agents import AgentExecutor
  6. from langchain_community.tools.tavily_search import TavilySearchResults
  7. # 设置 OpenAI API 密钥
  8. os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
  9. # 初始化模型
  10. llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
  11. # 初始化搜索工具
  12. search_tool = TavilySearchResults(max_results=1)
  13. # 设置提示
  14. prompt = ChatPromptTemplate.from_messages(
  15. [
  16. ("system", "You are a helpful assistant. Use the search tool to find answers."),
  17. ("human", "{input}"),
  18. ]
  19. )
  20. agent = create_openai_tools_agent(llm, [search_tool], prompt)# 创建 OpenAI Tools 代理
  21. agent_executor = AgentExecutor(agent=agent, tools=[search_tool], verbose=True)# 初始化代理执行器
  22. response = agent_executor.invoke({"input": "What is the capital of France?"})# 运行代理
  23. print(response["output"])

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/867495
推荐阅读
相关标签
  

闽ICP备14008679号