LangChain ReAct Agent实战:从零构建一个能思考会行动的智能体

发布时间:2026/7/14 12:37:30

LangChain ReAct Agent实战:从零构建一个能思考会行动的智能体
1. 认识LangChain ReAct Agent当AI学会边想边做想象一下你正在教一个实习生完成市场调研任务。优秀的实习生不会直接给你答案而是会先思考我需要先查行业报告再联系几家供应商比价最后整理成表格。这正是ReAct Agent的工作方式——它让AI像人类一样先规划再行动而不是机械地生成文本。LangChain中的ReAct Agent由三个核心部件组成大脑LLM通常是GPT-4或Claude这类大模型负责思考决策工具集Tools就像实习生的调研工具包可能包含搜索引擎、计算器、数据库查询等执行引擎AgentExecutor负责协调思考与行动的循环流程我最近用这个技术帮朋友做了个智能购物助手。当用户问3件T恤加2条牛仔裤总价多少时Agent会调用商品查询工具获取单价使用计算器工具进行运算最后生成带优惠建议的完整回复2. 搭建开发环境五分钟快速起步在开始编码前我们需要准备以下工具pip install langchain langchain-openai python-dotenv建议在项目根目录创建.env文件存储API密钥OPENAI_API_KEY你的密钥 OPENAI_API_BASEhttps://api.deepseek.com/v1 # 国内可用替代端点这里有个实用技巧使用temperature0.1能让Agent的决策更稳定。我在早期测试时曾设为0.7结果Agent经常突发奇想调用错误工具比如用计算器工具查询天气。基础配置代码示例from langchain_openai import ChatOpenAI from dotenv import load_dotenv import os load_dotenv() llm ChatOpenAI( modeldeepseek-chat, temperature0.1 # 降低随机性 )3. 定义智能体的双手工具开发实战工具(Tool)是Agent与真实世界交互的接口。去年我帮电商客户开发库存管理系统时就为Agent定制了这些工具价格查询工具关键代码from langchain_core.tools import tool tool def query_product_price(product_name: str) - float: 查询商品单价输入应为商品全称 price_map { T恤: 99.9, 牛仔裤: 199.0, 运动鞋: 299.0 } return price_map.get(product_name, 0.0)折扣计算工具tool def calculate_discount(total: float, discount: float) - float: 计算折后价格示例calculate_discount(100, 0.1)返回90 return total * (1 - discount)开发工具时我踩过两个坑描述不准确曾把工具描述为处理价格计算结果Agent把运费计算也塞进来缺少类型提示没有声明参数类型时Agent常会传入错误格式建议每个工具都像这样写文档字符串【明确功能】 查询商品当前库存量 参数 - product_id: str 商品SKU编号 返回 int 可用库存量缺货返回0 4. 组装智能大脑Agent初始化详解完整的Agent构建流程就像组装乐高准备工具包tools [query_product_price, calculate_discount]设计提示词模板from langchain_core.prompts import PromptTemplate prompt PromptTemplate.from_template( 你是一个专业的购物助手请用中文回答。 可用工具{tools} 按照以下格式响应 问题用户的问题 思考你的分析过程 行动要调用的工具名 行动输入工具参数 观察工具返回结果 ...循环直到解决问题 最终答案给用户的完整回复 当前问题{input} {agent_scratchpad} # 这里会自动填充历史记录 )创建Agent执行器from langchain.agents import create_react_agent, AgentExecutor agent create_react_agent(llm, tools, prompt) agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, # 调试时建议开启 max_iterations5 # 防止无限循环 )这里有个性能优化技巧使用ConversationBufferMemory可以让Agent记住对话历史。有次用户连续问T恤价格和搭配什么裤子没有记忆功能的Agent就像金鱼一样每次都重新开始。5. 实战演示拆解购物咨询案例让我们看一个完整的工作流程。当用户询问买2件T恤和1条牛仔裤会员能打8折吗Agent的执行日志会显示 进入思考链... 思考需要先获取T恤和牛仔裤的单价 行动query_product_price 行动输入T恤 观察99.9 思考还需要牛仔裤价格 行动query_product_price 行动输入牛仔裤 观察199.0 思考计算总价(2*99.9 199) 398.8 行动calculate_discount 行动输入398.8, 0.2 观察319.04 最终答案2件T恤和1条牛仔裤原价398.8元会员折后319.04元我在测试中发现几个常见问题及解决方案工具选择错误通过优化工具描述加入不要用于...的说明参数格式错误在工具中添加输入验证循环卡死设置max_iterations并添加超时监控6. 高级技巧让Agent更智能的秘诀经过多个项目的实战我总结出这些提升Agent表现的方法1. 少样本学习Few-shot Learning在提示词中加入示例能显著提高工具调用准确率。比如示例1 问题3个苹果多少钱 思考需要查询苹果单价 行动query_price 行动输入苹果 观察5.0/个 最终答案共15元2. 错误处理机制为工具添加try-catch块我常用这个模板tool def safe_query(参数): try: # 正常逻辑 except Exception as e: return f工具执行失败{str(e)}3. 混合工具策略简单任务用单一工具复杂任务启用多工具协作。就像我开发的客服Agent商品咨询 → 知识库工具订单查询 → 数据库工具投诉处理 → 工单系统工具4. 实时监控看板用LangSmith搭建监控系统跟踪工具调用成功率平均思考步数Token消耗分析7. 避坑指南我踩过的那些坑在开发旅游规划Agent时曾遇到这些典型问题问题1无限循环现象Agent反复查询相同信息 解决在AgentExecutor中添加early_stopping_methodgenerate # 当连续两次生成相同Action时停止问题2工具过载现象简单计算也调用外部API 优化为LLM添加工具使用规范优先使用内置计算能力仅在需要实时数据时调用工具问题3敏感操作教训曾有Agent意外执行了删除操作 防护措施tool def delete_item(id): 【危险操作】需要二次确认 if not confirm(确定删除): raise Exception(操作已取消)这些经验让我意识到好的Agent设计强大能力安全护栏。就像教孩子骑车既要放手让他尝试又要准备好保护措施。

相关新闻

MySQL游标(cursor) 实战进阶与避坑指南

MySQL游标(cursor) 实战进阶与避坑指南

2026/7/14 12:37:30

1. 游标基础与性能权衡游标是MySQL中一种强大的数据处理机制,它允许开发者像操作数组一样逐行处理查询结果集。想象你手里拿着一支激光笔,可以精确指向PPT上的每一行文字——游标就是数据库里的这种指针,让你能精准控制数据处理的位置。集合操…

双目散斑结构光:从原理到高精度三维重建实践

双目散斑结构光:从原理到高精度三维重建实践

2026/7/14 12:27:30

1. 散斑结构光是什么?为什么选择它? 第一次接触散斑结构光时,我盯着投影仪打出的那些看似杂乱无章的白点,完全无法理解这堆"芝麻饼"怎么能用来做三维测量。后来才发现,这些被称为 伪随机散斑 的图案&#…

如何快速上手PilotGo-plugin-redis?5分钟搭建Redis集群监控系统

如何快速上手PilotGo-plugin-redis?5分钟搭建Redis集群监控系统

2026/7/14 12:27:30

如何快速上手PilotGo-plugin-redis?5分钟搭建Redis集群监控系统 【免费下载链接】PilotGo-plugin-redis PilotGo redis plugin to maintain and monitor redis cluster. 项目地址: https://gitcode.com/openeuler/PilotGo-plugin-redis 前往项目官网免费下载…

OmenSuperHub终极指南:解锁惠普暗影精灵笔记本全部性能

OmenSuperHub终极指南:解锁惠普暗影精灵笔记本全部性能

2026/7/14 14:37:35

OmenSuperHub终极指南:解锁惠普暗影精灵笔记本全部性能 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠…

SleeperX:基于事件驱动的macOS系统睡眠管理工具自动化控制方案

SleeperX:基于事件驱动的macOS系统睡眠管理工具自动化控制方案

2026/7/14 14:37:35

SleeperX:基于事件驱动的macOS系统睡眠管理工具自动化控制方案 【免费下载链接】SleeperX MacBook prevent idle/lid sleep! Hackintosh sleep on low battery capacity. 项目地址: https://gitcode.com/gh_mirrors/sl/SleeperX 在macOS系统管理工具领域&…

猫抓Cat-Catch:浏览器资源嗅探扩展的终极使用秘籍与性能优化指南

猫抓Cat-Catch:浏览器资源嗅探扩展的终极使用秘籍与性能优化指南

2026/7/14 14:37:35

猫抓Cat-Catch:浏览器资源嗅探扩展的终极使用秘籍与性能优化指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法下载在线视…

Snap Hutao:免费开源的原神桌面工具箱终极指南

Snap Hutao:免费开源的原神桌面工具箱终极指南

2026/7/14 14:37:35

Snap Hutao:免费开源的原神桌面工具箱终极指南 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-Source Genshin Impact Toolkit 🧰 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.Hutao …

LG Ultrafine显示器亮度调节:Windows用户的终极解决方案

LG Ultrafine显示器亮度调节:Windows用户的终极解决方案

2026/7/14 14:37:35

LG Ultrafine显示器亮度调节:Windows用户的终极解决方案 【免费下载链接】LG-Ultrafine-Brightness A tool to adjust brightness of LG Ultrafine 4k/5K on Windows 项目地址: https://gitcode.com/gh_mirrors/lg/LG-Ultrafine-Brightness 你是否正在使用LG…

为什么你的ChatGPT话术转化率低于行业均值23.6%?——基于172场真实直播AB测试的数据归因分析

为什么你的ChatGPT话术转化率低于行业均值23.6%?——基于172场真实直播AB测试的数据归因分析

2026/7/14 14:27:35

更多请点击: https://codechina.net 第一章:ChatGPT直播带货话术效能归因的底层逻辑 ChatGPT在直播带货场景中的话术效能并非源于“拟人化表达”本身,而是由三重耦合机制共同驱动:语义意图解构能力、实时上下文锚定能力&#xff…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/14 10:03:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/13 20:43:10

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南

XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南

2026/7/14 0:06:37

1. 项目概述:当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”,我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏,却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am…

2026普通文员学数据分析的价值

2026普通文员学数据分析的价值

2026/7/14 0:06:37

一、2026年普通文员学习数据分析的必要性随着数字化转型加速,数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力,并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公:通过数据分析工具&a…

2026从计划员到主管,生产管理者学数据分析有用吗?

2026从计划员到主管,生产管理者学数据分析有用吗?

2026/7/14 0:06:37

一、生产管理领域的职业发展路径 从计划员到主管的角色转变,是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作,而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&…