用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 ChatOpenAI

model = ChatOpenAI(model="qwen-plus",

openai_api_key='',key的值需要你去阿里官网申请对应模型的apikey

openai_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 BaseTool

class 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_agent

from langchain_experimental.tools import PythonREPLTool

python_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_agent

csv_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 Tool

tools=[

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 ConversationBufferMemory

memory = ConversationBufferMemory(

memory_key='chat_history',

return_messages=True

)

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

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

复制代码
from langchain import hub

prompt = hub.pull("hwchase17/structured-chat-agent")

五、创建结构化聊天 agent

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

复制代码
from langchain.agents import create_structured_chat_agent

agent = 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 AgentExecutor

agent_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 数据统计等不同类型的任务。

相关推荐
兔兔爱学习兔兔爱学习4 小时前
ASR+MT+LLM+TTS 一体化实时翻译字幕系统
人工智能·自然语言处理·机器翻译
苦瓜汤补钙4 小时前
论文阅读——Segment Anything(Meta AI)——SAM
论文阅读·图像处理·人工智能·nlp·ai编程
fxshy4 小时前
python使用ffmpeg对视频进行转码
python·ffmpeg·音视频
共绩算力4 小时前
混元图像3.0开源原生多模态生图新篇章
人工智能·ai作画·共绩算力
搞科研的小刘选手4 小时前
【经济方向专题会议】第二届经济数据分析与人工智能国际学术会议 (EDAI 2025)
人工智能·机器学习·网络安全·大数据分析·经济·经济数据分析·绿色经济
六边形架构4 小时前
真相!Dify和n8n这两款LLM应用开发平台的最大区别,90%的人都不知道!
人工智能
敲代码的猴先生4 小时前
技术分享 | torch.profiler:利用探针收集模型执行信息的性能分析工具
人工智能·pytorch·经验分享·语言模型·性能优化
song150265372984 小时前
AI视觉检测设备 精准瑕疵尺寸外观检测机
人工智能·计算机视觉·视觉检测