跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

LangChain Agent 基础入门:LLM 外部工具调用

深入解析了 LLM 大模型结合外部工具的 Agent 机制。通过 LangChain 框架,利用 ReAct 模式实现推理与行动协同,解决了大模型知识时效性和幻觉问题。内容涵盖 Agent 核心原理、ReAct 工作流详解,并提供 OpenAI、文心一言及智谱 AI 的集成代码示例,演示了搜索与计算工具的实际应用,同时总结了最佳实践与常见问题解决方案。

不知所云发布于 2025/2/7更新于 2026/7/1241 浏览
LangChain Agent 基础入门:LLM 外部工具调用

LangChain Agent 基础入门:LLM 外部工具调用

大语言模型(LLM)虽然具备强大的生成能力,但其知识训练数据存在时间局限性。当面对实时信息或需要精确计算的任务时,单纯依赖模型内部参数容易产生幻觉或无法回答。为了解决这一问题,可以结合本地知识库、在线搜索 API 或数学计算工具来增强模型能力。这些不属于大模型内部数据的资源被称为外部工具。

LangChain 框架提供了 Agent(代理)模块,使得大模型能够感知环境并调用外部工具,从而完成复杂任务。

Agent 是什么?

当大模型无法仅凭自身数据准确回复时,可能会产生一本正经的胡说八道。此时引入 Agent,可以让模型在遇到知识盲区时主动调用外部工具获取信息。

Agent 系统支持多智能体协作,即一个 Agent 的输出可以作为另一个 Agent 的输入。在这种架构下:

  1. LLM:负责生成预测、理解用户意图和处理输入文本。
  2. Agent:负责接口调用、文件处理、搜索策略制定及执行动作。
  3. 决策机制:当存在多个代理时,需要特定的框架来决定调用哪个工具,通常采用 ReAct 框架。

ReAct 框架详解

人类在日常行为中通常遵循'边观察、边思考,然后再行动'的模式。ReAct(Reasoning + Acting)框架的核心思想正是行动和推理的协同,将人类学习新任务并作出决策或再推理的能力赋予 LLM。

ReAct 工作流示例

以寻找胡椒瓶为例,LLM 会经历以下循环:

  1. Thought(思考):分析当前状态,决定下一步行动。
  2. Action(行动):选择工具并执行。
  3. Observation(观察):接收工具返回的结果。
  4. Repeat:根据观察结果继续思考,直到得出最终答案。

LangChain 中的 Agent 类对 ReAct 逻辑进行了封装和实现,开发者无需手动编写循环逻辑。

实战 Demo:大蒜价格查询与定价

本示例演示如何使用 Agent 让 LLM 找到大蒜的当前价格,并根据加价 20% 的逻辑计算售价。

核心逻辑

  1. 行动:在网上搜索当前成本价。
  2. 观察:分析搜索结果的价格高低。
  3. 思考:决定加价幅度。
  4. 行动:使用计算器计算最终售价。

1. 安装依赖

首先确保安装了必要的库。SerpAPI 是 Google 的搜索工具,用于查找实时价格。

!pip install langchain
!pip install openai
!pip install google-search-results

2. 配置 API Key

需要在环境变量中设置 OpenAI 和 SerpAPI 的密钥。

import os
os.environ["OPENAI_API_KEY"] = "Your_OpenAI_API_Key"
os.environ["SERPAPI_API_KEY"] = "Your_SerpAPI_API_Key"

3. 导入库

加载 LangChain 的工具加载器、Agent 初始化函数及 LLM 类。

# 加载工具
from langchain.agents import load_tools
# 初始化 agent 工具
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI

4. 实例化 LLM 与 Agent

创建 LLM 实例,加载搜索和数学计算工具,并初始化 Agent。

llm = OpenAI(temperature=0)
# serpapi 负责搜索,llm-math 负责计算 20%
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# ZERO_SHOT_REACT_DESCRIPTION 表示使用 React 思维框架,不使用样本提示
agent = initialize_agent(
    tools, 
    llm, 
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, 
    verbose=True
)

5. 执行任务

运行 Agent 并传入自然语言指令。

agent.run("目前市场上大蒜子的平均价格是多少?如果我在此基础上加价 20% 卖出,应该如何定价?")

OpenAI 模型通常会输出详细的 Thought-Action-Observation 过程,并最终给出定价建议。

国产模型集成方案

原生 LangChain 主要支持 OpenAI 生态,对于文心一言、智谱 AI 等国产模型,通常需要自定义 LLM 类进行适配。

文心一言集成

需自定义 Wenxin_LLM 类继承自 LangChain 的 BaseLLM 接口。

import os
from dotenv import find_dotenv, load_dotenv
_ = load_dotenv(find_dotenv())

wenxin_api_key = os.environ.get("wenxin_api_key")
wenxin_secret_key = os.environ.get("wenxin_secret_key")
os.environ["SERPAPI_API_KEY"] = "Your_SerpAPI_API_Key"

from langchain.agents import load_tools, initialize_agent, AgentType
from wenxin_llm import Wenxin_LLM  # 假设已自定义该类

llm = Wenxin_LLM(api_key=wenxin_api_key, secret_key=wenxin_secret_key)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

agent.run("目前市场上大蒜子的平均价格是多少?如果我在此基础上加价 20% 卖出,应该如何定价?")

*注意:部分国产模型直接调用可能因上下文长度限制导致报错,需调整 Prompt 或截断策略。

智谱 AI 集成

类似地,智谱 AI 也需要自定义 LLM 适配器。

import os
zhipuai.api_key = "Your_Zhipu_API_Key"
os.environ["SERPAPI_API_KEY"] = "Your_SerpAPI_API_Key"
import zhipuai

from langchain.agents import load_tools, initialize_agent, AgentType
from zhipuai_llm import ZhipuAILLM  # 假设已自定义该类

llm = ZhipuAILLM(model="chatglm_std", temperature=0, zhipuai_api_key=zhipuai.api_key)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

agent.run("目前市场上大蒜子的平均价格是多少?如果我在此基础上加价 20% 卖出,应该如何定价?")

智谱模型通常能较好地完成搜索与计算任务,输出包含具体的 Action 和 Final Answer。

最佳实践与常见问题

1. 温度设置 (Temperature)

在 Agent 任务中,建议将 temperature 设置为 0 或较低值。Agent 需要遵循确定的逻辑流程,过高的随机性可能导致工具调用顺序混乱。

2. 工具选择

并非所有工具都适合所有场景。例如,llm-math 适合简单算术,复杂数学问题建议使用 Wolfram Alpha 插件。serpapi 适合实时信息,但需注意隐私合规。

3. 错误处理

Agent 可能会陷入死循环(如反复调用同一工具)。建议在 initialize_agent 时设置 max_iterations 限制最大步数,防止 Token 耗尽。

4. 自定义 LLM 注意事项

在使用非 OpenAI 模型时,务必确保自定义类实现了 generate 或 call 方法,且返回格式符合 LangChain 预期。同时注意模型的上下文窗口大小,长对话可能需要分段处理。

总结

通过 LangChain 的 Agent 模块,开发者可以将大模型从单纯的文本生成器转变为能够感知环境、调用工具的自主智能体。ReAct 框架提供了清晰的推理路径,而多样化的工具链则扩展了模型的能力边界。在实际应用中,结合合适的模型与工具,可以构建出解决复杂现实问题的 AI 应用。

目录

  1. LangChain Agent 基础入门:LLM 外部工具调用
  2. Agent 是什么?
  3. ReAct 框架详解
  4. ReAct 工作流示例
  5. 实战 Demo:大蒜价格查询与定价
  6. 核心逻辑
  7. 1. 安装依赖
  8. 2. 配置 API Key
  9. 3. 导入库
  10. 加载工具
  11. 初始化 agent 工具
  12. 4. 实例化 LLM 与 Agent
  13. serpapi 负责搜索,llm-math 负责计算 20%
  14. ZEROSHOTREACT_DESCRIPTION 表示使用 React 思维框架,不使用样本提示
  15. 5. 执行任务
  16. 国产模型集成方案
  17. 文心一言集成
  18. 智谱 AI 集成
  19. 最佳实践与常见问题
  20. 1. 温度设置 (Temperature)
  21. 2. 工具选择
  22. 3. 错误处理
  23. 4. 自定义 LLM 注意事项
  24. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Linux TCP 服务器开发:Echo 实现、并发优化与安全实践
  • Spring Boot 自定义注解实战:5 个高频案例详解
  • Linux 常见命令及基础知识指南
  • Stable Diffusion v2-1-base 从安装到 AI 绘画创作指南
  • 算法实战:消失的两个数字(位运算解法)
  • Java Lambda forEach 遍历中如何实现类似 break 的退出操作
  • Kotlin 面试算法实战:二叉树遍历与转换
  • Stable Diffusion 多模态大模型 LoRA 微调实战指南
  • 职场经验谈:若无必要离职原因,建议谨慎跳槽
  • Web 团队开发 App 是否应选用 Capacitor
  • 缓存算法实战:LRU 与 LFU 的 Java 实现与原理解析
  • 多模态模型开发实战:文本、图像与语音融合应用
  • Java 容器类详解:架构、实现与使用实践
  • Python sum 函数用法及源码签名误解解析
  • Z-Image-Turbo 模型本地部署与 AI 绘画应用指南
  • 基于微信小程序的同学录管理系统设计与实现
  • Vue 开发前置:Node.js 安装与环境配置
  • 30 行 Python 脚本:将公开接口封面图链接转为本地图库
  • 融合知识图谱的大语言模型在问答系统中的应用
  • AIGC 赋能元宇宙:虚拟人物创作与智能交互技术

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online