LangChain 1.x环境搭建+首个Agent实战(3-5小时可上手,建议收藏)
本文详细介绍了如何在本地搭建LangChain 1.x开发环境配置OpenRouter免费模型API并创建第一个具备聊天和工具调用能力的Agent。通过完整示例代码和详细步骤讲解读者可以学习到Agent的核心组成部分模型、工具、系统提示以及基于LangGraph的新架构调用方式。文章还提供了两个实践练习帮助读者从抄代码过渡到自主修改为构建更复杂的AI应用打下基础。本篇的目标很简单在本地搭好 LangChain 1.x 开发环境撰写本文时最新版本是 1.2.3配好一个 LLM 提供商以 OpenRouter 为例使用免费模型写出并跑通你的第一个create_agent示例让它会正常聊天自动决定是否调用工具比如查询天气、做加法整篇看完、照着做一遍大约 3–5 小时内可以完成。一、准备开发环境1.1 基本要求项目建议配置操作系统macOS / Linux / Windows 10Win 推荐 WSL2Python 版本≥ 3.10建议 3.11IDEVS Code / PyCharm / 其他你习惯的先确认 Python 版本任意终端$ python3 -V # 或 python -V版本 ≥ 3.10 即可。推荐用uv管理依赖包括 python 版本也可以直接用 uv 来管理。以下命令可以查看当前系统安装了哪些 Python 版本$ uv python list1.2 安装 LangChain 1.x 和模型依赖初始化 langchain1.x-agent 项目$ uv init langchain1.x-agent自动生成如下目录结构同时会自动进行 git initlangchain1.x-agent├── main.py├── pyproject.toml└── README.md然后安装 langchain$ uv add langchain langchain-openai python-dotenvUsing CPython 3.11.14Creating virtual environment at: .venvResolved 44 packages in 1.63sPrepared 3 packages in 33.43sInstalled 42 packages in 100ms langchain1.2.3 langchain-core1.2.7 langchain-openai1.1.7 langgraph1.0.5 python-dotenv1.0.1 ...注意LangChain 1.2.3 使用了全新的基于LangGraph的 Agent 架构与旧版本0.x的 API 有较大差异。如果后续打算用别的模型可以对应再装$ uv add langchain-anthropic$ uv add langchain-google-genai二、配置 LLM 提供商 API Key为了方便大家试验这里推荐注册 OpenRouter使用它们的免费模型比如GLM-4.5-Air。2.1 用环境变量管理 Key推荐在项目根目录创建.env文件不提交到 Git# OpenRouter 配置OPENROUTER_API_KEYyour_openrouter_api_key_here在 Python 里读这个变量import osfrom dotenv import load_dotenvload_dotenv() # 读取 .env 文件OPENROUTER_API_KEY os.getenv(OPENROUTER_API_KEY)如果你暂时不想用.env也可以在终端里直接设置仅当前会话有效$ export OPENROUTER_API_KEYyour_openrouter_api_key_here # macOS / Linux三、写第一个 Agent会聊天 查天气新建文件agent01.py填入下面的代码。建议你先整段复制跑通再逐行理解。from __future__ import annotationsimport osfrom dotenv import load_dotenvfrom langchain.agents import create_agentfrom langchain.tools import toolfrom langchain_openai import ChatOpenAI# 1. 加载环境变量包含 OPENROUTER_API_KEYload_dotenv()# 从环境变量获取 OpenRouter API KeyOPENROUTER_API_KEY os.getenv(OPENROUTER_API_KEY)# 2. 定义一个天气查询工具这里只是模拟tooldef get_current_weather(city: str) - str: 根据城市名返回当前天气信息示例工具内部数据是写死的 city city.lower() if beijing in city or 北京 in city: return 北京当前天气晴-4℃空气质量良。 if shanghai in city or 上海 in city: return 上海当前天气多云2℃有阵风。 return f{city} 当前天气信息暂不可用请稍后再试。def main(): # 3. 初始化聊天模型 llm ChatOpenAI( modelz-ai/glm-4.5-air:free, base_urlhttps://openrouter.ai/api/v1, api_keyOPENROUTER_API_KEY, temperature0.2, ) # 4. 准备工具 tools [get_current_weather] # 5. 使用 create_agent 创建 AgentLangChain 1.2.3 新 API # 返回 CompiledStateGraph基于 LangGraph agent create_agent( modelllm, toolstools, system_prompt( 你是一个乐于助人的中文 AI 助手。 当用户询问与天气相关的问题时请优先考虑调用相应工具。 ), ) # 6. 准备输入状态 user_input 帮我查一下北京的天气然后再用一句话建议我要不要带伞。 # 7. 调用 Agent使用 invoke 方法 # LangChain 1.x 的状态包含 messages 字段 result agent.invoke({messages: [(user, user_input)]}) # 8. 打印最终回答 # result 是一个状态字典包含 messages 字段 messages result.get(messages, []) if messages: print(【Agent 最终回答】) # 最后一条消息通常是 AI 的回复 last_message messages[-1] print(last_message.content) # 9. 打印中间步骤工具调用轨迹 print(\n【中间步骤工具调用轨迹】) step_count 0 for msg in messages: # 检查是否是 AI 消息且包含工具调用 if msg.type ai and hasattr(msg, tool_calls) and msg.tool_calls: for tool_call in msg.tool_calls: step_count 1 print(f\nStep {step_count}:) print(f 工具名: {tool_call.get(name, unknown)}) print(f 工具参数: {tool_call.get(args, {})}) # 检查是否是工具返回消息 elif msg.type tool: print(f 工具返回: {msg.content}) if step_count 0: print( (本次调用未使用工具)) print(\n【完整消息历史】) for msg in messages: content_preview ( f {msg.type}: {msg.content[:100]}... if len(msg.content) 100 else f {msg.type}: {msg.content} ) print(content_preview)if __name__ __main__: main()运行$ uv run python agent01.py预期效果【Agent 最终回答】根据北京当前晴天、-4℃的天气情况建议您不需要带伞但要注意保暖。【中间步骤工具调用轨迹】Step 1: 工具名: get_current_weather 工具参数: {city: 北京} 工具返回: 北京当前天气晴-4℃空气质量良。【完整消息历史】 human: 帮我查一下北京的天气然后再用一句话建议我要不要带伞。 ai: 我来帮您查询北京的天气情况。 tool: 北京当前天气晴-4℃空气质量良。 ai: 根据北京当前晴天、-4℃的天气情况建议您不需要带伞但要注意保暖。到这一步你已经成功调用了 OpenRouter 提供的 GLM-4.5-Air 模型用create_agent构建了一个基于LangGraph的标准 1.x Agent让它自己决定是否要调用get_current_weather工具并基于工具结果给出最终回答能看见中间工具调用轨迹这对后面调试非常重要。四、理解一下你刚刚写的这个 Agent轻度拆解不需要完全吃透只要知道大致层次即可后面会在专门的章节展开讲。4.1 模型ChatOpenAIllm ChatOpenAI( modelz-ai/glm-4.5-air:free, base_urlhttps://openrouter.ai/api/v1, api_keyOPENROUTER_API_KEY, temperature0.2,)这是一个统一的模型封装把各种聊天接口包装成一个通用的ChatModel通过base_url参数可以轻松切换到其他提供商当然如果换 Anthropic、Google 的得换类不是 ChatOpenAI换模型时只需要修改model和base_url其他逻辑基本不变。4.2 工具tool装饰器tooldef get_current_weather(city: str) - str: 根据城市名返回当前天气信息 ...任何一个普通 Python 函数加上tool装饰器就变成了 Agent 可以看见和调用的工具函数签名参数名、文档字符串会被自动转成模型可理解的工具描述文档字符串很重要模型会根据它来决定何时调用这个工具。后面你会把数据库查询、RAG 检索、HTTP 请求、业务接口调用都包成类似的工具。4.3 Agentcreate_agentagent create_agent( modelllm, toolstools, system_prompt你是一个乐于助人的中文 AI 助手...,)这是 LangChain 1.x 的核心入口基于LangGraph构建返回一个CompiledStateGraph对象有状态的 DAG 图system_prompt参数直接传入系统指令无需额外创建 Prompt 模板Agent 会自动处理工具调用的决策循环。重要变更与旧版本0.0.x不同新版本不再需要AgentExecutor使用起来更简洁。4.4 调用方式invoke 状态result agent.invoke({messages: [(user, user_input)]})messages result[messages]LangChain 1.x 使用状态字典作为输入输出格式输入格式{messages: [消息列表]}输出格式{messages: [完整对话历史]}消息类型包括human用户、aiAI 回复、tool工具返回4.5 工具调用信息的提取for msg in messages: if msg.type ai and hasattr(msg, tool_calls) and msg.tool_calls: for tool_call in msg.tool_calls: print(f工具名: {tool_call.get(name)}) print(f工具参数: {tool_call.get(args)}) elif msg.type tool: print(f工具返回: {msg.content})AI 消息的tool_calls属性包含工具调用请求工具返回消息的type为toolcontent包含返回结果通过遍历消息历史可以完整还原 Agent 的决策过程。五、两个建议练习从抄代码到自己改一改当你已经能把上面的agent01.py跑通之后建议你立刻做下面两件事把别人的 Demo转成你自己的东西。练习 1再加一个「计算器工具」在文件中添加tooldef add_numbers(a: float, b: float) - str: 返回两数之和以字符串形式返回 return str(a b)然后把tools [get_current_weather]改成tools [get_current_weather, add_numbers]修改user_inputuser_input 请先帮我算一下 12.5 7.3然后顺便告诉我上海的天气。观察Agent 是否会在一次对话内依次调用两个工具中间步骤打印是否有add_numbers和get_current_weather两个工具调用。练习 2改写系统指令System Prompt把system_prompt( 你是一个乐于助人的中文 AI 助手。 当用户询问与天气相关的问题时请优先考虑调用相应工具。),改成类似system_prompt( 你是一位冷静理性的 AI 助手说话简洁只给结论。 如果不确定答案请明确说不确定不要乱编。),重新运行感受回答语气是否变得更冷静简洁对天气数据库中没有的城市是否会更倾向于说不确定。这是你后面做「提示词工程」「安全控制」的基础。六、本阶段小结到目前为止你已经完成了在本地搭建了一个干净的 LangChain 1.x 开发环境配置了 OpenRouter API Key使用免费的 GLM-4.5-Air 模型用create_agent写出了一个最小可用的 Agent它已经可以和你自然语言对话根据问题内容自己决定要不要调用工具把工具返回的结果融合进最终回答把中间思考路径和工具调用轨迹暴露给你看。关键要点回顾要点LangChain 1.2.3 的变化Agent 创建使用create_agent(model, tools, system_prompt)返回类型返回CompiledStateGraph基于 LangGraph调用方式agent.invoke({messages: [...]})结果格式result[messages]包含完整对话历史工具调用从 AI 消息的tool_calls属性获取从实战角度讲你已经具备了写一个简单实用机器人的基础能力——它可以接第三方 API当成聊天入口 业务工具总调度。下一步练习建议尝试连接真实的天气 API如和风天气、OpenWeather添加更多工具时间查询、单位转换、数据存储等学习如何添加对话历史实现多轮对话AI时代未来的就业机会在哪里答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具到自然语言处理、计算机视觉、多模态等核心领域技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。掌握大模型技能就是把握高薪未来。那么普通人如何抓住大模型风口AI技术的普及对个人能力提出了新的要求在AI时代持续学习和适应新技术变得尤为重要。无论是企业还是个人都需要不断更新知识体系提升与AI协作的能力以适应不断变化的工作环境。因此这里给大家整理了一份《2026最新大模型全套学习资源》包括2026最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题、AI产品经理入门到精通等带你从零基础入门到精通快速掌握大模型技术由于篇幅有限有需要的小伙伴可以扫码获取1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。5. 大模型行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。为什么大家都在学AI大模型随着AI技术的发展企业对人才的需求从“单一技术”转向 “AI行业”双背景。企业对人才的需求从“单一技术”转向 “AI行业”双背景。金融AI、制造AI、医疗AI等跨界岗位薪资涨幅达30%-50%。同时很多人面临优化裁员近期科技巨头英特尔裁员2万人传统岗位不断缩减因此转行AI势在必行这些资料有用吗这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。大模型全套学习资料已整理打包有需要的小伙伴可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

Excel高效查找技巧:SMALL函数结合模糊查找与超链接应用

Excel高效查找技巧:SMALL函数结合模糊查找与超链接应用

一、前言 在日常数据处理工作中,我们经常需要从大量数据中筛选出特定信息。今天我将分享一个Excel中非常实用的技巧:使用SMALL函数结合模糊查找和超链接功能,实现动态数据查询和快速跳转。这种方法特别适用于需要在大型数据表中按条件筛选并…

2026/7/4 10:38:06 阅读更多 →
AI自己学会“地图细胞“和“秘密语言“!程序员:这波操作太秀了,代码都省了!

AI自己学会“地图细胞“和“秘密语言“!程序员:这波操作太秀了,代码都省了!

近日,香港城市大学博士生方政儒和所在团队让一群智能体在虚拟迷宫里共同探索,只给它们一个极其简单的目标——那就是学会预测同伴下一秒会看到什么以及会走到哪里。结果发现这些智能体不仅学会了高效合作,还在自己的“大脑”里自发形成了类似…

2026/7/5 10:29:00 阅读更多 →
改进的鲸鱼优化算法GSWOA优化神经网络模型BP做二分类和多分类预测模型。 程序注释详细,可学习性强

改进的鲸鱼优化算法GSWOA优化神经网络模型BP做二分类和多分类预测模型。 程序注释详细,可学习性强

改进的鲸鱼优化算法GSWOA优化神经网络模型BP做二分类和多分类预测模型。 程序注释详细,可学习性强。 程序语言为matlab。 直接替换数据就可以用。 程序有混淆矩阵,分类预测图,ROC图。 江湖救急!分类任务总被BP神经网络的参数调优…

2026/7/2 21:03:28 阅读更多 →

最新新闻

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 你是…

2026/7/5 14:58:26 阅读更多 →
4-20mA电流环检测与PIC单片机信号处理方案

4-20mA电流环检测与PIC单片机信号处理方案

1. 4-20mA电流环基础与行业应用工业现场最可靠的信号传输方式莫过于4-20mA电流环,这个看似简单的标准已经统治过程控制领域半个多世纪。电流信号相比电压信号具有显著优势:抗干扰能力强,可长距离传输(理论可达数公里)&…

2026/7/5 14:56:26 阅读更多 →
6. 【C语言】格式化输入输出:和程序说说话

6. 【C语言】格式化输入输出:和程序说说话

前面五篇文章,我们熟悉了变量、常量、数据类型,但程序还像个闷葫芦——要么沉默不语,要么只喊一句固定的“Hello, World”。要让程序真正和人互动,就得学会两样本事: 输出:把数据展示给用户看(…

2026/7/5 14:56:25 阅读更多 →
MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场

MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场

MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场 6 月 24 日,MWC26 上海世界移动通信大会开幕。今年最大的看点不是 5G,不是 6G,而是人工智能。 人形机器人点球大战 MWC26 上海首次举办了"人…

2026/7/5 14:52:25 阅读更多 →
2026 AI 开发者生存指南(10):AI 开发者职业发展与学习路线图——从入门到精通

2026 AI 开发者生存指南(10):AI 开发者职业发展与学习路线图——从入门到精通

AI 开发者职业发展与学习路线图 2026 版:从入门到精通怎么走? 2026 年的 AI 行业,招聘需求在变、技能要求在变、薪资结构在变。不管是刚入行还是想转型,都需要一张清晰的路线图。 这篇文章整理 AI 开发者的职业发展路径和学习方向…

2026/7/5 14:52:25 阅读更多 →
Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现

Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现

Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现 【免费下载链接】unreal-vdb This repo is a non-official Unreal plugin that can read OpenVDB and NanoVDB files in Unreal. 项目地址: https://gitcode.com/gh_mirrors/un/unreal-vdb …

2026/7/5 14:52:25 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻