当前位置: 首页 > news >正文

用langchain搭建简单agent

在开始用 langchain 搭建简单 agent 之前,首先配置好相关环境。请打开命令行终端,执行以下 pip 命令安装所需依赖包,确保后续代码能够顺利运行:

pip install langchain langchain-openai langchain-experimental pandas

安装完成后,我们就可以正式开启 langchain 简单 agent 的搭建。

一、初始化 ChatOpenAI 模型

要搭建 agent,首先需要一个大语言模型作为核心驱动。这里我们使用 ChatOpenAI 模型,并指定调用 “qwen-plus” 模型,同时配置好对应的 API 密钥和 API 基础地址,具体代码如下:

from langchain_openai import ChatOpenAImodel = ChatOpenAI(model="qwen-plus",openai_api_key='',key的值需要你去阿里官网申请对应模型的apikeyopenai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1",temperature=0)

其中,temperature参数设置为 0,意味着模型输出会更加确定、稳定,减少随机性,适合在需要精准结果的场景下使用。

二、自定义工具与集成现有工具

agent 的核心能力之一在于使用各种工具来完成任务,我们既可以自定义工具,也可以集成 langchain 提供的现有工具。

1. 自定义文本字数计算工具

通过继承BaseTool类,我们可以自定义一个用于计算文本字数的工具。需要指定工具的name(工具名称)和description(工具描述,用于让 agent 判断何时使用该工具),并实现_run方法定义工具的核心功能,代码如下:

from langchain.tools import BaseToolclass TextLengthTool(BaseTool):name = "文本字数计算工具"description = "当你需要计算文本包含的字数时,使用此工具"def _run(self, text):return len(text)

2. 集成 Python 代码工具

借助langchain_experimental中的create_python_agent方法,我们可以集成 Python 解释器工具,让 agent 能够执行 Python 代码来完成复杂计算任务。配置时同样需要指定模型信息,并且设置verbose=True以便查看工具运行过程中的详细日志推理过程,handle_parsing_errors=True来处理可能出现的解析错误,代码如下:

from langchain_experimental.agents.agent_toolkits import create_python_agentfrom langchain_experimental.tools import PythonREPLToolpython_agent_executor = create_python_agent(llm=ChatOpenAI(model="qwen-plus",openai_api_key="",openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1"),temperature=0,tool=PythonREPLTool(),verbose=True,agent_executor_kwargs={"handle_parsing_errors": True})

3. 集成 CSV 分析工具

对于 CSV 文件数据的分析需求,我们可以使用create_csv_agent方法集成 CSV 分析工具,指定 CSV 文件路径(这里为 “house_price1.csv”),让 agent 能够利用 Pandas 库对 CSV 数据进行查询和计算,代码如下:

from langchain_experimental.agents.agent_toolkits import create_csv_agentcsv_agent_executor = create_csv_agent(llm=ChatOpenAI(model="qwen-plus",openai_api_key="",openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1", temperature=0,),path="house_price1.csv",verbose=True,agent_executor_kwargs={"handle_parsing_errors": True})

4. 整合所有工具

将自定义的TextLengthTool和集成好的Python代码工具、CSV分析工具整合到一个工具列表中,方便后续 agent 调用,代码如下:

from langchain.tools import Tooltools=[Tool(name="Python代码工具",description="""当你需要借助Python解释器时,使用这个工具。用自然语言把要求给这个工具,它会生成Python代码并返回代码执行的结果。""",func=python_agent_executor.invoke),Tool(name="CSV分析工具",description="""当你需要回答有关house_price.csv文件的问题时,使用这个工具。它接受完整的问题作为输入,在使用Pandas库计算后,返回答案。""",func=csv_agent_executor.invoke),TextLengthTool()]

三、配置对话记忆

为了让 agent 能够记住之前的对话内容,实现上下文连贯的交互,我们使用ConversationBufferMemory配置对话记忆。设置memory_key为 “chat_history”,用于在提示词中引用记忆内容,return_messages=True表示返回的记忆内容是消息对象形式,代码如下:

from langchain.memory import ConversationBufferMemorymemory = ConversationBufferMemory(memory_key='chat_history',return_messages=True)

四、获取结构化聊天提示词

从 langchain 的 hub 中拉取 “hwchase17/structured-chat-agent” 提示词模板,该模板专为结构化聊天 agent 设计,能够引导 agent 合理选择工具、处理对话逻辑,代码如下:

from langchain import hubprompt = hub.pull("hwchase17/structured-chat-agent")

五、创建结构化聊天 agent

结合前面准备好的模型、工具和提示词,使用create_structured_chat_agent(主要用于构建能够遵循特定格式输出(如 JSON)的智能代理)方法创建结构化聊天 agent,代码如下:

from langchain.agents import create_structured_chat_agentagent = create_structured_chat_agent(llm=model,tools=tools,prompt=prompt)

六、创建 agent 执行器并调用

最后,通过AgentExecutor.from_agent_and_tools方法创建 agent 执行器,将 agent、工具和记忆整合起来,同时配置verbose=True查看执行过程日志,handle_parsing_errors=True处理解析错误。创建完成后,就可以调用执行器来处理具体问题了。

1. 计算第 8 个斐波那契数列的数字

调用 agent 执行器,输入问题 “第 8 个斐波那契数列的数字是多少?”,agent 会自动选择 Python 代码工具,生成对应的 Python 代码并执行,得到结果,代码如下:

from langchain.agents import AgentExecutoragent_executor = AgentExecutor.from_agent_and_tools(agent=agent,tools=tools,memory=memory,verbose=True,handle_parsing_errors=True)agent_executor.invoke({"input": "第8个斐波那契数列的数字是多少?"})

2. 计算 house_price1 数据集房子价格平均值

输入问题 “house_price1 数据集里,所有房子的价格平均值是多少?用中文回答”,agent 会选择 CSV 分析工具,利用 Pandas 库对 “house_price1.csv” 数据进行计算,返回中文的平均值结果,代码如下:

agent_executor.invoke({"input": "house_price1数据集里,所有房子的价格平均值是多少?用中文回答"})

通过以上步骤,我们成功搭建了一个具备多种工具使用能力、支持对话记忆的简单 langchain agent,能够处理斐波那契数列计算、CSV 数据统计等不同类型的任务。

http://www.dtcms.com/a/553743.html

相关文章:

  • 在 Windows 11 中安装 VirtualBox 7.2.4
  • 【开题答辩全过程】以 基于Java的社交健身系统的设计与实现为例,包含答辩的问题和答案
  • Ubuntu20.04升级autoconf
  • 网站名注册最佳商城ui网站设计
  • R包kuenm和ENMeval--你用对了吗?
  • 接口自动化测试项目框架详解
  • 临安网站建设海口网红
  • 10.string(上)
  • 集团公司手机站网站报送举报网站建设情况
  • 【Spring Boot】Spring AOP动态代理,以及静态
  • 使用Requests和正则表达式实现网络小说爬取技术解析
  • spine动画监听动作播放完成重复执行
  • ui设计网站开发乡村建设的网站
  • 最新版 dify 如何离线安装插件
  • html网站的直播怎么做绵阳个人网站建设
  • 苯乙烯自由基聚合与丙交酯开环聚合的MATLAB模拟
  • 从一到无穷大 #53 Beyond TSDB Query performance: Homomorphic Compression
  • 张掖建设网站眉山市建设局网站
  • Android和springboot的后端json数据库mysql传送
  • 旅游网站系统商标购买网商标
  • 好用的 display: flow-root
  • 做路牌的网站深圳做外贸网站公司
  • C++笔记(面向对象)多重继承 菱形继承
  • 淘宝商品详情 API(taobao.item.get)从 0 到 1:申请流程、核心参数与首次调用实战
  • 大连市建设部网站官网权威的网站建设公司
  • 【Day 83】虚拟化-openstack
  • C语言类型转换和溢出常见错误
  • 《计算类云服务》
  • CentOS7 搭建DHCP服务器(一台服务器虚拟机+2台客户端虚拟机演示)
  • 【MySQL】mysqldump使用方法