GPT实战系列-如何让LangChain的Agent选择工具

GPT实战系列-如何让LangChain的Agent选择工具

LangChain

GPT实战系列-LangChain如何构建基通义千问的多工具链

GPT实战系列-构建多参数的自定义LangChain工具

GPT实战系列-通过Basetool构建自定义LangChain工具方法

GPT实战系列-一种构建LangChain自定义Tool工具的简单方法

GPT实战系列-搭建LangChain流程简单应用

GPT实战系列-简单聊聊LangChain搭建本地知识库准备

GPT实战系列-LangChain + ChatGLM3构建天气查询助手

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-简单聊聊LangChain

大模型查询工具助手之股票免费查询接口

随着OpenAI的GPT-4这样的大型语言模型(LLMs)已经风靡全球,现在让它们自动执行各种任务,如回答问题、翻译语言、分析文本等。LLMs是在交互上真正体验到像“人工智能”。

如何管理这些模块呢?

LangChain在这方面发挥重要作用。LangChain使构建由LLMs驱动的应用程序变得简单,使用LangChain,可以在统一的界面中轻松与不同类型的LLMs进行交互,管理模型版本,管理对话版本,并将LLMs连接在一起。

在这里插入图片描述

对于任何用户输入,当知道工具使用的具体顺序时,Chain就很好。但是对于某些情况,使用哪些工具,调用多少次取决于用户输入。在这些情况下,我们就希望让模型决定使用工具的次数和顺序。这就是Agent。

LangChain自带了许多内置的Agent,这些Agent针对 不同情况,类型。

举个例子,如果尝试一下 OpenAI 工具代理,它利用新的 OpenAI 工具调用 API。

设置环境变量

import getpass
import os

os.environ
<think>首先,用户的题是关于LangChain Agent的使用示例或教程。用户引用了几个来源,但系统提示说这些引用仅供参考,我需要参考用户上一次的题和我的回答。用户上一次的题没有被提供,所以我只能基于当前的题和引用来回答。 系统指令要求: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 - 回答结构清晰,帮助用户逐步解决题,保证真实可靠。 - 用户意图是寻找LangChain Agent的使用示例或教程。 用户的题:"请Langchain agent 使用示例 教程",意思是询LangChain Agent的使用示例或教程。 从引用中: - 引用[1]:提到LangChain Agents概念及执行逻辑,并给出演示用例。 - 引用[2]:讨论代理类型和何时使用代理。 - 引用[3]:提供代码示例,使用LangChain Agents执行搜索。 - 引用[4]:关于LangChain Agent的教程学习。 我需要构建一个清晰的回答结构: 1. **介绍LangChain Agent**:简要解释什么是LangChain Agent。 2. **核心概念**:基于引用,解释Agent的执行逻辑和类型。 3. **使用示例**:提供一个代码示例,展示如何使用LangChain Agent。 4. **教程资源**:建议一些学习资源。 5. **生成相关题**:在末尾添加相关题。 确保使用中文回答。 步骤: - **引入**:以用户的题开头,确认意图。 - **解释**:逐步解释LangChain Agent- **示例**:提供一个代码块,类似于引用[3]中的示例。 - **引用**:在解释中自然地添加引用标识。 - **相关题**:在末尾添加相关题。 代码示例:从引用[3]中,有一个代码示例: ```python from dotenv import load_dotenv from langchain import hub from langchain.agents import AgentExecutor, create_openai_functions_agent, load_tools from langchain.tools.tavily_search import TavilySearchResults from langchain.utilities.tavily_search import TavilySearchAPIWrapper from langchain_openai import ChatOpenAI load_dotenv() def get_function_tools(): search = TavilySearchAPIWrapper() tavily_tool = TavilySearchResults(api_wrapper=search) tools = [tavily_tool] tools.extend(load_tools(['wikipedia'])) return tools def init_action(): llm = ChatOpenAI(model="gpt-4", temperature=0.1) prompt = hub.pull("hwchase17/openai-functions-agent") tools = get_function_tools() agent = create_openai_functions_agent(llm, tools, prompt) agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) agent_executor.invoke({"input": "Who is the owner of Tesla company? Let me know details about owner."}) init_action() ``` 我将基于这个示例,提供一个简化的版本或解释它。 回答结构: 1. **什么是LangChain Agent?** 解释基本概念。 2. **如何使用LangChain Agent?** 描述步骤。 3. **代码示例**:提供一个简单的示例。 4. **教程资源**:推荐一些资源。 5. **相关题**:生成相关题。 在末尾添加相关题。 确保引用标识:在解释时,如果基于引用,添加[^数字]。 例如: - 根据引用[1],LangChain Agent通过智能体执行任务... - 引用[3]中的代码展示了如何初始化Agent... 最终,生成相关题: - §§相关题§§ 1. ... 2. ... 3. ...</think>### LangChain Agent 使用示例与教程 LangChain Agent 是一个强大的框架,用于构建基于大语言模型(LLM)的智能代理系统。它允许代理使用外部工具(如搜索引擎、API、数据库)来解决复杂题。以下是基于您提供的引用和LangChain官方文档的逐步教程与示例,帮助您快速入门。所有内容均使用中文,并确保真实可靠。 --- #### 1. **LangChain Agent 核心概念** LangChain Agent 的核心是**代理执行器(AgentExecutor)**,它通过以下流程工作: - **输入解析**:将用户查询分解为可执行的任务。 - **工具调用**:代理选择合适的工具(如搜索、计算、API调用)处理子任务。 - **结果整合**:将工具输出整合为最终响应[^1]。 代理适用于需要动态决策的场景,例如多源信息检索或复杂推理。引用[2]指出,代理的成本不可预测,但能处理链式工具调用,而简单任务可能更适合直接使用链(Chains)。 --- #### 2. **LangChain Agent 使用示例 以下是一个完整的Python代码示例,基于引用[3]简化而来。它使用**OpenAI函数代理**执行搜索任务,查询特斯拉公司所有者的详细信息。 ```python # 导入必要库(需安装langchain, langchain-openai, python-dotenv) from dotenv import load_dotenv from langchain import hub from langchain.agents import AgentExecutor, create_openai_functions_agent from langchain.tools import Tool from langchain_community.tools.tavily_search import TavilySearchResults from langchain_openai import ChatOpenAI # 加载环境变量(包含OpenAI API密钥) load_dotenv() # 初始化工具:Tavily搜索 + Wikipedia def get_tools(): tavily_tool = TavilySearchResults() # Tavily搜索引擎工具 wikipedia_tool = Tool( name="Wikipedia", func=lambda query: "Wikipedia数据加载中...", # 实际应用中替换为Wikipedia API调用 description="用于查询百科知识" ) return [tavily_tool, wikipedia_tool] # 主函数:执行代理 def run_agent(): llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.1) # 使用GPT-3.5,低成本 prompt = hub.pull("hwchase17/openai-functions-agent") # 预定义提示模板 tools = get_tools() # 创建代理 agent = create_openai_functions_agent(llm, tools, prompt) agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) # 执行查询 result = agent_executor.invoke({"input": "特斯拉公司的所有者是谁?请提供详细信息。"}) print(result["output"]) run_agent() ``` ##### 代码说明: - **工具定义**:`TavilySearchResults` 用于实时网络搜索,`Wikipedia` 工具查询百科知识(示例中简化,实际需集成API)。 - **代理初始化**:`create_openai_functions_agent` 创建基于OpenAI函数的代理,支持动态工具选择- **执行流程**:代理解析输入 → 调用工具 → 整合结果 → 输出响应。 - **运行结果**:例如,输入查询后,代理可能输出:*“特斯拉公司的所有者是埃隆·马斯克(Elon Musk),他是CEO和联合创始人...”*[^3]。 --- #### 3. **LangChain Agent 学习教程推荐 - **官方教程**:LangChain文档的[Agents部分](https://python.langchain.com/docs/modules/agents/)提供基础到高级示例。 - **实战课程**:引用[4]提到的教程涵盖RAG(检索增强生成)、向量数据库和代理开发,适合构建对话机器人[^4]。 - **关键学习点**: - **代理类型**:如`Zero-shot ReAct`(单次推理)或`Conversational`(对话式),引用[2]建议根据任务复杂度选择[^2]。 - **优化技巧**:使用`temperature=0.1`减少随机性,添加`verbose=True`调试工具调用过程。 - **成本控制**:简单任务优先使用链(Chains),复杂多工具任务用代理[^2]。 --- #### 4. **常见题与解决方案** - **题:代理响应慢?** 解决方案:限制工具数量或使用轻量模型(如`gpt-3.5-turbo`)。 - **题:工具调用失败?** 解决方案:检查API密钥(通过`.env`文件管理),并确保工具描述清晰(如`description`参数)。 - **进阶应用**:结合Gradio构建交互界面,引用[1]演示了如何用代理集成Gradio Tools[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Alex_StarSky

你的鼓励是创作的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值