langchain agent 使用外部工具示例

本文详细展示了如何利用LangChain和Playwright工具进行天气查询与网页内容的自动化处理,包括使用LLM进行计算和使用Playwright进行网页访问。

示例1

室外计算机器与天气搜索引擎,但在使用天气查询的时候好像不可以用了

提示词模版:LangSmith

import os
from dotenv import load_dotenv
from langchain_community.llms import Tongyi
load_dotenv('key.env')  # 指定加载 env 文件
key = os.getenv('DASHSCOPE_API_KEY')  # 获得指定环境变量
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]  # 获得指定环境变量
llm = Tongyi(temperature=1)


from langchain import hub
from langchain.agents import load_tools
from langchain.agents import AgentExecutor
from langchain.agents.output_parsers import ReActSingleInputOutputParser
from langchain.agents.format_scratchpad import format_log_to_str
from langchain.tools.render import render_text_description


llm_with_stop = llm.bind(stop=["\nObservation"])

# 准备我们的工具:这里用到 DuckDuckGo 搜索引擎,和一个基于 LLM 的计算器
tools = load_tools(["ddg-search", "llm-math"], llm=llm)
<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]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值