LangChain 学习笔记:核心整理(黑马课程版 vs 新版生产写法)
一、模型初始化2‑2 models.ipynb1、两种初始化模型方式底层模型ChatOpenAI兼容 DeepSeek‑Chat、GPT‑4o 等遵循 OpenAI 协议的模型配置文件统一放在 .env。# .env文件 OPENAI_API_KEYsk‑xxx OPENAI_BASE_URLhttps://api.deepseek.com/v1方式 1实例化模型对象正式项目推荐新版长期可用from dotenv import load_dotenv import os from langchain_openai import ChatOpenAI load_dotenv() llm ChatOpenAI( modeldeepseek-chat, api_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL), temperature0 # 0代表结果更加确定写Agent建议填0 )可以额外配置超时、最大重试次数。方式 2只填写模型名字字符串课程演示写法简单 demo 使用init_chat_model 内部自动读取环境变量完成初始化正式项目不推荐。from langchain.chat_models import init_chat_model model init_chat_model(deepseek‑chat)2、模型调用的两种方式全局通用后面 Agent 同样适用invoke(xxx)阻塞调用等待全部内容返回完毕stream(xxx)流式调用SSE 分片返回用来实现打字机效果后续给前端提供接口必备。res llm.invoke(你好) for chunk in llm.stream(介绍LangGraph): print(chunk.content, end)版本注意点求职必看课程里旧版create_agent(modelmodel)仅传入模型不传入工具新版 LangChain‑1.0 废弃运行报错新版要求使用 create_agent 必须同时传入 model 和 tools。二、消息对象 Messages2‑3 messages.ipynb1、三种基础消息类langchain_core.messagesSystemMessage系统提示词用来设定 AI 的身份、行为规范HumanMessage用户发送的消息AIMessage模型返回的消息。① 纯文本场景可以简写不需要手动写 content 字典from langchain_core.messages import SystemMessage, HumanMessage, AIMessage messages [ SystemMessage(你只能使用工具获取天气), HumanMessage(你好我是虎哥), AIMessage(你好虎哥很高兴认识你), HumanMessage(北京今天天气如何) ]底层原理HumanMessage(文本)只是简写形式LangChain 内部自动封装成下面格式HumanMessage(content[{type:text,text:北京今天天气如何}])② 多模态‑图片识别场景重点不能简写必须手动写 content 嵌套字典文本可以简写但是图片图文混合消息必须手动构造 content[...] 结构由 OpenAI 接口格式强制规定图片传入两种形式图片 URL 地址、本地图片转 Base64 编码。import base64 def encode_image(image_path): with open(image_path, rb) as f: return base64.b64encode(f.read()).decode(utf-8) base64_img encode_image(test.jpg) msg HumanMessage( content[ {type:text,text:详细描述图片内容}, {type:image_url,image_url:{url:fdata:image/jpeg;base64,{base64_img}}} ] )2、消息传入 Agent 的格式调用 agent.invoke 时参数是字典key 固定为 messages值为消息列表response agent.invoke({ messages:[ SystemMessage(使用工具获取天气信息), HumanMessage(北京今天天气如何) ] }) 获取最终结果 print(response[messages][-1].content)三、创建 Agent 智能体课程旧版和新版分开1、旧版课程写法LangChain‑0.0.346仅用于看懂课程代码步骤 1定义工具函数上方写文档字符串docstring模型靠文档理解工具功能def get_weather(location: str) - str: Get the weather in a given location. Args: location: city name or coordinates return fCurrent weather in {location} is sunny新版写法中推荐用 tool 装饰器定义工具比文档字符串更加规范。步骤 2创建 Agent旧版分两种形式废弃写法新版 1.0 不能用只传模型不传工具agent create_agent(modeldeepseek‑chat)合法写法新版 1.0 支持model tools 同时传入对应课程 2.3 节代码from langchain.agents import create_agent agent create_agent(modeldeepseek‑chat, tools[get_weather])缺陷旧版 create_agent 内部逻辑是黑盒你无法控制循环次数、失败重试、人工介入。2、企业新版生产写法简历项目优先使用LangGraph方式 1快速封装版 create_react_agent优先掌握from langgraph.prebuilt import create_react_agent from langchain.tools import tool 1.工具定义 tool def get_weather(location: str): 获取指定城市天气 return f{location}今天晴天 2.创建智能体 agent create_react_agent(modelllm, tools[get_weather]) 3.调用智能体同样支持invoke和stream res agent.invoke({messages:[(user,北京天气)]}) for chunk in agent.stream({messages:[(user,北京天气)]}, stream_modevalues): print(chunk[messages][-1].content, end)方式 2手动实现 State‑Node‑Edge面试加分项进阶抛弃封装好的 create_react_agent自己定义状态、节点、条件分支自定义工具循环次数、失败重试、人工介入Human‑in‑the‑loop这是面试重点。State保存对话消息Nodeagent_node(模型思考)、tool_node(执行工具)Edge条件判断模型需要调用工具就进入 tool_node否则结束。四、核心版本对比面试问答精简版对比维度LangChain‑0.0.346黑马课程LangChain‑1.0 新版create_agent 传参允许只传入模型必须同时传入 model 和 tools只传 model 会报错工具定义方式普通函数 文档字符串优先用 tool 装饰器复杂 Agent 项目整体黑盒自由度低官方推荐 LangGraph放弃原生 create_agent图片消息文本消息可以简写图片消息必须手动写 content 嵌套字典无法简化五、整体调用逻辑Agent 执行流程把历史消息全部传给大模型模型判断是否需要调用工具调用对应工具拿到结果工具返回结果再次交给模型整理成自然语言模型判断是否继续调用工具不需要调用则结束流程。

相关新闻

小程序计算机毕设之基于 SpringBoot + 微信小程序的成都美食分享可视化系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

小程序计算机毕设之基于 SpringBoot + 微信小程序的成都美食分享可视化系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/21 23:53:56阅读更多 →
小程序计算机毕设之基于小程序的川渝短途旅游自助服务平台 川味文化旅游推荐与路线规划小程序 本土化特色文旅推广服务小程序(完整前后端代码+说明文档+LW,调试定制等)

小程序计算机毕设之基于小程序的川渝短途旅游自助服务平台 川味文化旅游推荐与路线规划小程序 本土化特色文旅推广服务小程序(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/21 22:23:40阅读更多 →
Magento登录功能架构设计与安全实践

Magento登录功能架构设计与安全实践

1. Magento登录功能深度解析作为全球最受欢迎的开源电商平台之一,Magento的登录系统设计直接影响着用户转化率和系统安全性。我在多个Magento项目中遇到过各种登录相关的技术挑战,今天就来系统梳理这个看似简单却暗藏玄机的功能模块。Magento的登录流程涉…

2026/7/22 10:21:14阅读更多 →
Peaclock:终端中革命性的时钟、计时器与秒表工具,让你的命令行焕发新活力

Peaclock:终端中革命性的时钟、计时器与秒表工具,让你的命令行焕发新活力

Peaclock:终端中革命性的时钟、计时器与秒表工具,让你的命令行焕发新活力 【免费下载链接】peaclock A responsive and customizable clock, timer, and stopwatch for the terminal. 项目地址: https://gitcode.com/gh_mirrors/pe/peaclock Peac…

2026/7/22 19:09:24阅读更多 →
500通来电,为什么10名客服最后人均只接22通?答案藏在电话漏斗里

500通来电,为什么10名客服最后人均只接22通?答案藏在电话漏斗里

在联络中心的外包合作中,甲方常常会提出一个看似非常基础的要求:“我给你们安排了10个客服,要求每人每天接听40个电话,一天总共接400个,这不过分吧?”然而,当月底查看报表时,甲方却发…

2026/7/22 19:09:24阅读更多 →
Revo框架入门:构建事件驱动的C应用程序完整指南

Revo框架入门:构建事件驱动的C应用程序完整指南

Revo框架入门:构建事件驱动的C#应用程序完整指南 【免费下载链接】Revo Event Sourcing, CQRS and DDD framework for C#/.NET Core. 项目地址: https://gitcode.com/gh_mirrors/revo/Revo Revo是一个基于事件溯源(Event Sourcing)、C…

2026/7/22 19:09:24阅读更多 →
嵌入式System MMU实战:TLB管理、寄存器配置与故障排查详解

嵌入式System MMU实战:TLB管理、寄存器配置与故障排查详解

1. 项目概述:从硬件视角理解System MMU在嵌入式系统开发,尤其是涉及复杂操作系统(如Linux、RTOS)或高性能实时处理的场景里,内存管理单元(MMU)是绕不开的核心硬件。很多开发者对MMU的理解停留在…

2026/7/22 19:09:24阅读更多 →
深入解析TI DM816x硬件邮箱:嵌入式多核通信的中断与轮询实战

深入解析TI DM816x硬件邮箱:嵌入式多核通信的中断与轮询实战

1. 项目概述:从硬件邮箱看嵌入式多核通信的底层逻辑在嵌入式多核系统的开发中,如何让不同的处理器核心(比如ARM Cortex-A8和DSP)或者不同的软件任务之间高效、可靠地“对话”,是一个绕不开的核心问题。这就像在一个办公…

2026/7/22 19:09:24阅读更多 →
2026年AI人才争夺战爆发!小白也能抓住低门槛高薪机会,建议收藏

2026年AI人才争夺战爆发!小白也能抓住低门槛高薪机会,建议收藏

2026年招聘市场AI岗位激增,薪资高,已成主流。近八成公司要求具备AI能力,不再是加分项而是必选项。AI大模型训练师和AI大模型应用开发工程师等岗位低门槛高薪资,适合小白入门。学习AI能力对求职和保住工作都至关重要,掌…

2026/7/22 19:07:24阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →