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

完整教程:Langchain之Agent代理的使用

完整教程:Langchain之Agent代理的使用

目录:

    • 1、简介
    • 2、Agent 的核心概念与使用模式
      • 1. 工具
      • 2. 代理类型
      • 3. 关键组件
    • 3、案例分析
    • 4、疑点解答

1、简介

在人工智能领域,一个 Agent 是一个能够感知环境、自主决策并执行行动以实现目标的系统。相比于单纯根据输入生成输出的模型,Agent 具备 主动性、持续性和目标导向性。

2、Agent 的核心概念与使用模式

1. 工具

这是 Agent 与外界交互的桥梁。任何可以被调用的函数都可以封装成工具,例如:

  • 搜索工具:Tavily、Google Search
  • 计算工具:Python REPL(代码执行环境)
  • 信息查询工具:SQL 数据库查询、Wolfram Alpha
  • 软件工具:发送邮件、操作文件、调用 API

2. 代理类型

代理的类型决定了其决策逻辑,常见的有:

3. 关键组件

  • AgentExecutor:这是 Agent 的运行时环境。它负责调用 Agent,执行其选择的工具,处理错误,并将结果反馈给 Agent 进行下一步决策,直到任务完成或达到步骤限制。

3、案例分析

案例一:复杂数据分析与可视化 Agent

这个案例展示了一个更强大的、能链式调用多个工具的 Agent。

目标:“获取特斯拉过去一周的股价资料,计算其每日涨跌幅,并用折线图展示价格走势。”

为什么需要 Agent?
单一工具无法做完此任务。要求串联多个步骤:获取数据 -> 处理数据 -> 生成图表。

代码实现:

from langchain.agents import AgentType, initialize_agent, Tool
from langchain_openai import ChatOpenAI
from langchain_experimental.agents.agent_toolkits import create_python_agent
from langchain_experimental.tools import PythonAstREPLTool
import yfinance as yf  # 用于获取金融数据的库
import matplotlib.pyplot as plt
import io
import base64
# --- 自定义工具定义 ---
def get_stock_price(symbol: str) -> str:
"""获取股票过去一周的历史数据。"""
ticker = yf.Ticker(symbol)
hist = ticker.history(period="5d")
return hist.to_string()
def generate_plot(data_str: str) -> str:
"""
根据数据字符串生成图表,并返回base64编码的图片。
这是一个简化版,实际应用中需要解析data_str。
"""
# 这里为了演示,我们直接生成一个简单的图表
plt.figure(figsize=(10, 5))
plt.plot([1, 2, 3, 4, 5], [100, 110, 105, 120, 115])
plt.title("Tesla Stock Price (Example)")
plt.xlabel("Day")
plt.ylabel("Price (USD)")
# 将图表保存到内存缓冲区
buffer = io.BytesIO()
plt.savefig(buffer, format='png')
buffer.seek(0)
image_png = buffer.getvalue()
buffer.close()
# 编码为base64,方便在HTML或某些前端中显示
graphic = base64.b64encode(image_png).decode('utf-8')
plt.close()
return graphic
# 1. 初始化LLM
llm = ChatOpenAI(model="gpt-4", temperature=0)
# 2. 创建自定义工具列表
tools = [
Tool(
name="Get Stock Data",
func=get_stock_price,
description="Useful for fetching historical stock price data. Input should be a stock ticker symbol, e.g., TSLA."
),
Tool(
name="Generate Plot",
func=generate_plot,
description="Useful for generating a line plot from data. Input should be a string representation of the data."
),
PythonAstREPLTool()  # Python代码执行工具,用于计算涨跌幅等复杂操作
]
# 3. 创建代理
agent = initialize_agent(
tools,
llm,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, # 适合处理多输入的工具
verbose=True
)
# 4. 运行代理
result = agent.run("Get Tesla's stock price for the past week, calculate the daily percentage change, and show me a line chart of the price movement.")
print(result)
# 注意:生成的base64图像数据可以嵌入到网页或报告中。

Agent 的思考与执行过程:

  • Thought: 这个任务需要三个步骤:获取数据、计算变化、生成图表。我先从获取特斯拉的股价数据开始。

  • Action: 调用 Get Stock Data 工具,输入 TSLA。

  • Observation: 获得了一个包含日期和价格的 DataFrame 字符串。

  • 通过Thought: 现在我需计算每日涨跌幅。这涉及到数学运算,我能够用 Python 工具来处理这些数据。

  • Action: 调用 PythonAstREPLTool,编写一小段 Pandas 代码来计算百分比变化。

  • Observation: Python 代码成功执行,返回了计算结果。

  • Thought: 最后,我需要将处理好的数据可视化。我能够调用 Generate Plot 工具。

  • Action: 调用 Generate Plot 工具,传入处理后的数据。

  • Observation: 器具返回了一个 base64 编码的图表图像。

  • Final Answer: 我已经完成了您的请求。特斯拉过去一周的股价数据显示…(附上数据和图表)。

要点:Agent 展示了出色的任务分解和规划能力,像一个真正的数据分析师一样,按顺序调用不同的专业软件来消除复杂问题。

4、疑点解答

2025诺贝尔获得者 这个上面tavily工作做了 为啥还要agent代理?
让大家用一个类比来理解:

  • 只使用 Tavily:就像你亲自打开浏览器,在谷歌里搜索“2025诺贝尔获得者”,然后从一堆结果中自己阅读、筛选、整理信息,最后形成答案。
  • 使用 Tavily + Agent:就像你有一个私人助理。你只需要下命令:“帮我查一下2025年诺贝尔奖得主。” 这个助理会自动帮你完成搜索、阅读、理解、筛选、总结等一系列动作,继而把最终的、精炼的答案呈现在你面前。

在这里插入图片描述

http://www.jsqmd.com/news/373103/

相关文章:

  • 内部审计备忘录
  • 2026超轻便携掌上型三维扫描仪选购指南 - 十大品牌深度解析 - 匠言榜单
  • 动态ip和静态ip的区别
  • ksuid 类似uuid的唯一id 算法
  • 细聊不错的工程师申报企业,江苏地区哪家费用合理 - 工业推荐榜
  • 2026年天津、北京、河北包装实物设计开发打样公司排名,哪家性价比高? - 工业品牌热点
  • 2025-2026年度AI搜索优化(GEO)源头厂商竞争格局深度分析报告 - 2026年企业推荐榜
  • 2026年生成式引擎优化加盟产品权威推荐。GEO新纪元:选对伙伴,定义未来三年增长曲线 - 2026年企业推荐榜
  • 新东方技工学校企业实训模式好用吗?对就业有啥帮助? - myqiye
  • 总结流量型蠕动泵选购要点,山东流量型蠕动泵生产厂家推荐 - 工业品网
  • 2026年2月关于DeepSeek关键词优化系统竞争格局的深度分析报告 - 2026年企业推荐榜
  • python+springboot+django/flask基于深度学习的音乐推荐系统 - 指南
  • 吉林好用的短视频代运营公司有哪些,性价比高不高? - mypinpai
  • 2026年2月西安孩子视力矫正/近视防控/品牌竞争格局深度分析报告 - 2026年企业推荐榜
  • 中国移动APP开发工程师职位深度解析与面试指南
  • 模板方法模式 (Template Method Pattern)
  • 分析石灰厂产品质量,曌鹏石灰品质达标性价比高靠谱吗 - 工业设备
  • CSDN编辑时如何写上标、下标、同时写上下标?
  • 深度解析安卓软件开发工程师:珠海斯巴克电子设备有限公司职位剖析与技术面试指南
  • 牛客题解-二维斐波那契数列
  • 汽车移动端开发核心技术深度解析与面试指南
  • RAG不是万能的,但没有RAG是万万不能的:8种主流架构全景解析
  • 深入解析服装MES系统移动端开发:岗位要求、技术栈与面试全攻略
  • 从“端到端”到“人到人”:一种以需求直接满足为核心的新一代人机交互范式
  • Linux命令-lscpu(显示有关CPU架构的信息)
  • 2026市面上好用的纤维素抑尘剂厂家排名 - 品牌排行榜
  • 2026市面上道路抑尘剂厂家排名及综合实力评析 - 品牌排行榜
  • 固生堂看病贵不贵?2026年真实反馈与费用解析 - 品牌排行榜
  • 2026市面上好用的中铁标准抑尘剂厂家推荐 - 品牌排行榜
  • 2026常州本地主要ERP服务商一览 - 品牌排行榜