LangChain Agent开发入门:从零构建智能决策AI

发布时间:2026/7/22 23:59:55

LangChain Agent开发入门:从零构建智能决策AI
1. 项目概述LangChain Agent开发入门最近在AI应用开发领域LangChain的Agent功能引起了广泛关注。作为一个让大语言模型(LLM)具备自主决策能力的框架它能让开发者构建出真正会思考的AI应用。今天我就带大家从零开始用最直观的方式理解Agent的核心机制并手把手教你完成第一个Agent开发。LangChain 1.0的Agent系统最大的特点是采用了LLM作为大脑的架构设计。简单来说我们提供各种功能工具(Tools)给Agent当用户提出需求时Agent会自动分析应该调用哪些工具、按什么顺序调用最终完成任务。这就像给AI配了一个工具箱让它自己决定用什么工具解决问题。2. 核心概念解析2.1 Agent运行机制Agent的工作流程可以概括为思考-行动-观察的循环LLM根据当前信息决定下一步行动执行选定的工具(Tool)将执行结果反馈给LLM重复直到任务完成这种模式专业术语叫ReAct(Reasoning and Acting)是当前最先进的Agent实现方式之一。2.2 关键组件说明Tools基础功能单元每个Tool就是一个Python函数需要明确定义功能描述。例如tool def get_word_length(word: str) - int: 返回单词的长度。 return len(word)Toolkits相关Tools的集合比如专门处理数学计算的工具包可能包含加减乘除等工具。AgentExecutor执行引擎负责管理整个思考-执行循环处理错误和异常情况。3. 开发环境准备3.1 基础环境配置建议使用Python 3.9环境安装核心依赖pip install langchain langchain-openai3.2 LLM连接配置以OpenAI为例的初始化代码from langchain_openai import ChatOpenAI llm ChatOpenAI( modelgpt-3.5-turbo, temperature0 # 确定性较高的输出 )注意实际开发中建议将API密钥放在环境变量中不要直接写在代码里。4. 第一个Agent开发实战4.1 定义工具集我们创建一个简单的字符串处理工具包from langchain.agents import tool tool def reverse_string(s: str) - str: 反转输入的字符串 return s[::-1] tool def count_words(s: str) - int: 计算字符串中的单词数 return len(s.split()) tools [reverse_string, count_words]4.2 构建Agent系统完整Agent组装代码from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain.agents.format_scratchpad.openai_tools import format_to_openai_tool_messages from langchain.agents.output_parsers.openai_tools import OpenAIToolsAgentOutputParser # 1. 提示词模板 prompt ChatPromptTemplate.from_messages([ (system, 你是一个专业的字符串处理助手), (user, {input}), MessagesPlaceholder(variable_nameagent_scratchpad), ]) # 2. 绑定工具到LLM llm_with_tools llm.bind_tools(tools) # 3. 构建Agent agent ( { input: lambda x: x[input], agent_scratchpad: lambda x: format_to_openai_tool_messages( x[intermediate_steps] ), } | prompt | llm_with_tools | OpenAIToolsAgentOutputParser() ) # 4. 创建执行器 agent_executor AgentExecutor(agentagent, toolstools, verboseTrue)4.3 运行测试执行一个复杂请求result agent_executor.invoke({ input: 先将hello world反转然后计算单词数 })预期会看到Agent自动先调用reverse_string再调用count_words最终输出正确结果。5. 高级功能实现5.1 记忆功能实现让Agent记住对话历史的关键代码from langchain_core.messages import HumanMessage, AIMessage # 在prompt中添加历史消息占位符 MEMORY_KEY chat_history prompt ChatPromptTemplate.from_messages([ (system, 你是字符串处理专家), MessagesPlaceholder(variable_nameMEMORY_KEY), (user, {input}), MessagesPlaceholder(variable_nameagent_scratchpad), ]) # 对话历史存储 chat_history [] # 每次调用时传入历史记录 result agent_executor.invoke({ input: 今天的天气真好, chat_history: chat_history }) # 更新历史记录 chat_history.extend([ HumanMessage(content今天的天气真好), AIMessage(contentresult[output]), ])5.2 多Agent协作通过RouterChain实现任务分发from langchain.agents import AgentRouter math_agent ... # 数学处理Agent text_agent ... # 文本处理Agent router AgentRouter( route_map{ math: math_agent, text: text_agent }, default_agenttext_agent )6. 性能优化技巧6.1 Token使用优化精简工具描述保持工具文档简洁但准确限制最大迭代次数避免无限循环AgentExecutor(max_iterations5)6.2 错误处理机制自定义错误处理策略def handle_error(error): print(f执行出错: {error}) return 抱歉处理时出现问题 agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, handle_parsing_errorshandle_error )7. 实战建议与避坑指南工具设计原则每个工具保持单一职责输入输出类型明确文档描述要清晰准确常见问题排查Agent陷入循环设置max_iterations工具不被调用检查工具描述是否清晰结果不准确降低LLM的temperature值开发调试技巧开启verboseTrue查看详细决策过程使用小模型先测试逻辑正确性对复杂任务进行分步验证我在实际开发中发现给工具起一个好名字能显著提高调用准确率。比如calculate_word_count就比count_words更明确。另外对于关键业务场景建议添加人工验证环节确保AI的决策符合预期。

相关新闻

AI训推一体化平台架构设计与工程实践

AI训推一体化平台架构设计与工程实践

2026/7/22 23:59:55

1. 项目概述"AI模型训练与推理一体化平台"是当前企业级AI应用落地的核心基础设施。作为一名在AI工程化领域深耕多年的从业者,我见证了这个领域从早期的训练与推理分离架构,到如今训推一体化的完整演进过程。这种平台本质上是通过统一的软硬件架…

油泥处理设备哪里能买到

油泥处理设备哪里能买到

2026/7/22 23:59:55

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

2026/7/22 23:59:55

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

影刀RPA 网页评论采集:展开与分页加载

影刀RPA 网页评论采集:展开与分页加载

2026/7/23 0:59:58

影刀RPA 网页评论采集:展开与分页加载 作者:林焱 什么情况用什么 采集商品评论、文章评论、视频评论——评论数据通常不在页面源码里,而是通过AJAX动态加载,还有"展开更多"按钮和分页。在影刀RPA里需要处理评论展开、滚…

2026适合新手的AI官网制作软件有哪些?小白们看过来啦!

2026适合新手的AI官网制作软件有哪些?小白们看过来啦!

2026/7/23 0:59:58

2026适合新手的AI官网制作软件有哪些?小白们看过来啦!据《2026年中国企业数字化建站行业白皮书》显示,超42%的中小微企业在使用低门槛工具搭建官网后,遭遇了“百度/谷歌长期零收录”或“后期改版被平台卡死”的窘境。某广州初创贸…

看过来啦!2026AI建站收费模式有哪些呢?

看过来啦!2026AI建站收费模式有哪些呢?

2026/7/23 0:59:58

2026AI建站收费模式都有哪些?这里一文讲透。各位正在琢磨给自己生意安个“线上门面”的老板们可以看过来了,当然,如果已经被各种建站报价单搞得头昏脑涨、不知道选免费还是选几千块年费的老板也可以看过来,今天小编来聊聊AI建站收…

影刀RPA 网页滚动控制:滚动到底、滚动到元素、懒加载触发

影刀RPA 网页滚动控制:滚动到底、滚动到元素、懒加载触发

2026/7/23 0:59:58

影刀RPA 网页滚动控制:滚动到底、滚动到元素、懒加载触发 作者:林焱 什么情况用 你用影刀RPA采集一个网页,发现只拿到了前几条数据,明明页面上有几十条?你的网页有个"加载更多"按钮,但需要滚动到…

影刀RPA 网页文件下载:触发下载与等待

影刀RPA 网页文件下载:触发下载与等待

2026/7/23 0:59:58

影刀RPA 网页文件下载:触发下载与等待 作者:林焱 什么情况用什么 自动化流程中需要从网页下载文件——导出报表、下载附件、批量获取文档。下载操作看起来简单,但"点击下载→等待下载完成→获取文件路径→重命名"这一串步骤有很多…

一个人只能有一个梦想?

一个人只能有一个梦想?

2026/7/23 0:49:58

一个人不一定只有一个梦想,但需要有一个核心方向,把多个梦想连接起来。很多人困惑: “我到底应该追求哪个?” “我喜欢很多东西怎么办?” “是不是必须找到唯一使命?”其实: 人生不是一条单线任…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

2026/7/23 0:09:56

更多请点击: https://kaifayun.com 第一章:企业级AI搜索落地选型实战手册(含LLMRAGHybrid架构对比矩阵与ROI测算模板) 企业级AI搜索系统落地成败,核心在于技术选型与业务价值的精准对齐。盲目堆砌大模型能力或过度依赖…

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

2026/7/23 0:09:56

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于ARM Cortex-M内核的微控制器项目中,深入理解并熟练配置芯片的片上外设,是从“点亮LED”迈向“实现复杂系统功能”的关键一步。Tiva™ TM4C129LNCZAD作为TI公司Cortex-M4F家族中的高性能成员…

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

2026/7/23 0:09:56

一、快速声明与争议背景本文是对 AtomCode 终端 spinner 时长显示 fmt_dur 相关说法的事实性核验。2026 年 7 月 CSDN 上出现两篇互相矛盾的博文,近期又有 AI 在对话中输出格式描述 XhYm / YmZs / Zs。本文基于 AtomCode 仓库 main4677ddfa 及全分支 Git 历史给出可…