LangChain Models 篇章学习笔记 — 从模型到 Agent 的认知闭环
LangChain Models 篇章学习笔记 — 从模型到 Agent 的认知闭环本文基于 LangChain 官方文档 Models 章节学习整理梳理大语言模型的核心能力、标准化接口与 Agent 协作模式适合 AI Agent 开发入门者建立系统性认知。一、开篇大语言模型是什么大语言模型LLM是一个有能力的 AI 工具它可以解释和生成像人类所说一样的文本。它们是多功能的足够能够去写内容、翻译语言、总结或回答问题且不需要再进行任何一次训练。这是因为大语言模型在生成过程中经过两个阶段预训练Pre-training在海量文本上学习语言规律和世界知识微调Fine-tuning在预训练基础上通过指令微调等方式让模型具备听从指令的能力关键认知微调阶段已经让大语言模型具备了这些通用能力。所以之后如果想用这些大语言模型去做文本生成、翻译、总结等事情不需要再进行特殊的训练直接调用即可。二、模型的核心能力矩阵2.1 Tool Calling工具调用除了文本生成之外一些模型还支持工具调用这也是在微调阶段实现的。现在是 Agent 元年很多大语言模型如通义千问、Claude、GPT都训练了自己的 Agent 能力让大语言模型拥有工具调用的能力。模型不再是只会说话而是能动手干活。2.2 Structured Output结构化输出让模型的输出更加规范化。规范模型输出可以使用 MCP 或 Tool。只要输出是规范化的就可以获取这些输出的参数。这类似于前后端开发的模式前端传入 JSON固定规范 → 后端 Spring Boot MVC 拦截 HTTP 请求 → 得到 JSON 数据 → 转化为 Java 相关对象POJO大模型调用工具或者说调用 MCP 的过程也是一样的模型输出按 schema 约束 → 转化为格式化的 JSON → 传给 MCP 系统或 Tool Calling 函数 → 执行工具调用这个类比非常关键Tool Calling 的本质就是模型输出了一个符合接口规范的 JSON框架拿这个 JSON 去调用对应函数。模型本身不执行工具它只生成调用意图。2.3 Multimodality多模态模型还可以处理和返回非文本数据如图片、Audio、Video 等。这让 Agent 的感知能力不再局限于文字。2.4 Reasoning推理思考模型具备多步思考能力去到达最后的结果。如果说 Agent 是一个人的话那模型就是这个人的大脑也就是他的思考引擎。它可以驱使智能体进行决策Making Processing / Determine which tools to call — 决定哪个 Tools 需要被调用解释如何去解释工具返回的 Result判断终止什么时候去 Provide the final answerThe credit and capacity of the model you choose directly impact your agent’s baseline reliability and performance.你选择的模型的能力和容量直接决定了你的 Agent 的基线可靠性和性能。2.5 不同模型各有所长Different models excel in different tests:擅长领域说明复杂指令遵循有的模型擅长跟随复杂的 Instructions结构化推理有的模型具备更强的框架化思考能力大上下文有的模型支持更大的上下文窗口从而可以获得更多信息选型启示没有万能模型按任务特点选模型。三、LangChain标准化模型接口LangChain 提供了一个标准化的模型接口它给了我们一个统一的方式去使不同的大语言模型提供商进行集成Integrations。这使得它更容易去解释统一接口学习成本低实验带着一个 Switch 去实验切换在不同的大语言模型之间进行切换发现最适合你这个 Case 的一个模型你的代码 → LangChain 标准接口 → [Qwen / Claude / GPT / Kimi / ...] ↑ 可随时切换代码不变四、模型的两种使用方式最基础使用模型最终能用在两种方式里方式一直接调用无 Agent 框架对于一个任务如文本生成、分类或提取任务不需要一个 Agent 的 Framework直接用模型接口调用即可。# 直接调用简单任务无需 Agent 循环responsellm.invoke(总结这段文字...)方式二Agent 驱动模型能够被动态地去规定当你创建一个 Agent 的时候模型作为 Agent 的大脑驱动整个工具调用循环。# Agent 调用复杂任务模型自主决策工具调用agentcreate_agent(modelllm,tools[...],system_prompt...)resultagent.invoke({messages:[...]})两种方式的协同价值相似的模型接口工作在两个 Context上下文里面这给了你非常大的灵活性从一个简单的最小 Demo 开始— 直接调用模型验证想法逐渐增加复杂度— 实验成功后再接入 Agent 模型进行以 Agent 为基础的 Workflow也就是说你可以使用同一个模型接口先做最小实验再平滑过渡到 Agent 模式。这种渐进式开发路径是 LangChain 设计哲学的核心价值之一。五、实战初始化一个 Chat Model5.1 引入 os 库os是 Python 系统函数库通过os.getenv()可以读取系统环境变量。这是获取 API Key 的安全方式——不要把 Key 硬编码在代码里。importosfromdotenvimportload_dotenv load_dotenv()# 加载 .env 文件api_keyos.getenv(BAILIAN_API_KEY)# 参数是变量名不是 Key 本身易错点os.getenv(BAILIAN_API_KEY)里传的是环境变量名不是 Key 的值。os.getenv去系统环境变量里找名为BAILIAN_API_KEY的变量并返回其值。5.2 两种初始化方式初始化一个 model 有两种方式方式一ChatOpenAI — 直接 new 一个具体品牌的对象fromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelqwen-plus,api_keyapi_key,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,)方式二init_chat_model — 工厂函数通过 model_provider 切换厂商fromlangchain.chat_modelsimportinit_chat_model llminit_chat_model(modelqwen-plus,model_provideropenai,# 百炼是 OpenAI 兼容协议api_keyapi_key,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,)5.3 两种方式的本质区别ChatOpenAIinit_chat_model本质具体厂商的类直接 new 对象工厂函数根据 model_provider 路由到对应类类比直接去 4S 店买特定品牌去汽车超市告诉它你要哪个品牌切换厂商要改 import 类名只改model_provider参数import 不动适合场景固定用一家如项目固定用百炼需要实验对比多家、A/B 测试核心认知init_chat_model是一个工厂你传入 model_provider它帮你创建对应厂商的对象。无论遵循怎样的协议只要用init_chat_model就可以在不同协议之间切换。ChatOpenAI、ChatAnthropic是特定的类传入模型名称和 API Key、base_url直接返回该协议的对象。如果要切换协议/模型就要重新导入相对应的包。百炼为什么用model_provideropenai百炼是 OpenAI 兼容端点走的是 OpenAI 通信协议。LangChain 不需要知道你是百炼只要协议兼容就行。百炼没有专门的model_providerbailian因为它复用 OpenAI 协议即可。5.4 参数说明初始化模型时的核心参数参数说明获取方式model模型名称打开千问百炼平台搜索 model推荐使用 qwen-plus 或 qwen-maxapi_keyAPI 密钥去阿里云百炼平台获取放到环境变量里安全base_urlAPI 端点地址查看大语言模型 API 文档填入对应的 API URLtemperature温度控制随机性选填默认 0.7代码生成建议 0model_provider厂商仅 init_chat_model百炼用openai其余参数config_files、config_prefix、**kwargs不是必要的可以不填。5.5 调用方式详解Chat Model 必须被调用才能生成 output。LangChain 提供 3 种同步调用方式 对应的 3 种异步调用方式。invoke — 同步调用传入参数为单独的消息字符串或消息列表直接调用后返回单个 AIMessage。# 形态一直接传字符串自动包装为 HumanMessageresponsellm.invoke(请用一句话解释什么是 LangChain)# 形态二传消息列表可带 SystemMessage 设定角色fromlangchain_core.messagesimportSystemMessage,HumanMessage responsellm.invoke([SystemMessage(content你是一个 Python 专家),HumanMessage(content什么是装饰器),])print(response.content)# 文本内容print(response.usage_metadata)# token 用量 {input_tokens: 16, output_tokens: 63, ...}特点阻塞等待在所有 response 生成完成后才返回单个 AIMessage。消息类型invoke 可传入的消息类型包括 HumanMessage、SystemMessage、AIMessage、ToolMessage 等下一章详细讲。stream — 流式调用大多数 model 支持流式输出类似网页对话中 AI 逐字输出的效果。返回一个迭代器遍历拿到多个 AIMessageChunk。forchunkinllm.stream(请用三句话介绍 Python):print(chunk.content,end,flushTrue)chunk 拼合原理“A chunk in a stream is designed to be regenerated into a full message via simple summation.”意思是流式返回的每个 chunk碎片可以通过简单的拼接相加重新组合成一个完整的 message。# chunk 可以相加拼回完整消息chunks[]forchunkinllm.stream(你好):chunks.append(chunk)full_messagechunks[0]forcinchunks[1:]:full_messagec# simple summation# full_message 等价于 llm.invoke(你好) 的返回值类比就像视频是一帧一帧的chunk所有帧拼起来就是完整视频full message。batch — 批量调用可以发送多个独立的 request 给模型能显著提升 performance并发执行减少总等待时间。resultsllm.batch([什么是递归,什么是闭包,什么是装饰器])forrinresults:print(r.content)注意batch 省的是时间并发不一定省 token。每个问题该花多少 token 还是多少。真正省 token 的方式是用更短的 prompt、更小的 model、或 SummarizationMiddleware 压缩上下文。异步调用每个同步方法都有对应的异步版本加a前缀同步异步说明invokeainvoke异步单次调用streamastream异步流式batchabatch异步批量importasyncioasyncdefmain():responseawaitllm.ainvoke(你好)print(response.content)asyncio.run(main())异步调用的价值在 Web 服务如 FastAPI中不阻塞主线程可同时处理多个请求。学习阶段用同步即可生产环境用异步。调用方式对比总览方式返回类型场景特点invokeAIMessage单次问答阻塞等待返回完整结果streamAIMessageChunk 迭代器实时输出如聊天逐 token 返回用户体验好batchlist[AIMessage]批量处理并发执行效率高ainvokeAIMessage异步单次不阻塞主线程astreamAIMessageChunk 异步迭代器异步流式不阻塞 实时输出abatchlist[AIMessage]异步批量不阻塞 并发易错点response.usage_metadata是 dict 类型不能直接用拼接字符串要用 f-stringf{response.usage_metadata}。六、总结概念一句话理解LLM经预训练微调无需再训练即可执行多种任务Tool Calling微调获得的能力模型输出工具调用意图JSONStructured Output类比前后端 JSON 规范模型输出符合 schema 的结构化数据Multimodality支持图片/音频/视频等非文本输入输出Reasoning模型是 Agent 的大脑负责决策、解释、判断终止LangChain 接口标准化统一接口可无缝切换不同模型提供商两种使用方式直接调用简单任务vs Agent 驱动复杂任务同一接口渐进升级核心认知模型是 Agent 的大脑LangChain 是标准化的神经系统Tool/MCP 是 Agent 的双手。先从最小 Demo 开始再渐进到 Agent 工作流。

相关新闻

查看文件/grep etc/passwd字段含义/cut

查看文件/grep etc/passwd字段含义/cut

1.cat格式:cat 【参数】 文件名参数;-n 显示行号-b 所有非空行显示行号,1开始tac命令用于倒序输出2.more/lessmore/less用于查看内容较多的纯文本文件,可以使用空格键或回车键向下翻页,q退出,而cat命令查看长文本文件时…

2026/7/2 7:54:04阅读更多 →
Corrective RAG与Real-Time PPO协同实践:构建可纠错、能权衡的企业级RAG系统

Corrective RAG与Real-Time PPO协同实践:构建可纠错、能权衡的企业级RAG系统

1. 这不是又一篇“RAG综述”,而是一份实操者手记:当检索不再只是“找文档”,大模型开始真正学会“纠错”与“权衡”你有没有遇到过这样的场景:用RAG系统查技术文档,结果返回的段落里混着一个早已废弃的API参数&#xf…

2026/7/2 7:49:04阅读更多 →
QuickVina 2:20倍加速的分子对接革命,让药物发现进入高速时代

QuickVina 2:20倍加速的分子对接革命,让药物发现进入高速时代

QuickVina 2:20倍加速的分子对接革命,让药物发现进入高速时代 【免费下载链接】qvina Accurately speed up AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/qv/qvina 想象一下,你正在进行药物筛选研究,需要对接成…

2026/7/2 7:49:04阅读更多 →
三步解锁QQ音乐格式限制:QMCFLAC2MP3让你的音乐真正属于你

三步解锁QQ音乐格式限制:QMCFLAC2MP3让你的音乐真正属于你

三步解锁QQ音乐格式限制:QMCFLAC2MP3让你的音乐真正属于你 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件,突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 你是否曾经遇到过这样的困扰&#xff1…

2026/7/2 9:09:33阅读更多 →
拼箱业务信息化管理:从集货匹配到欧洲拆箱的系统支撑

拼箱业务信息化管理:从集货匹配到欧洲拆箱的系统支撑

拼箱业务(LCL)的核心挑战在于“集货匹配”和“拆箱分拨”——如何高效地将全国各地的小批量货物拼装入柜,到达目的地后又如何快速分拆派送。这个过程高度依赖信息系统的支撑。 拼箱业务的关键环节 拼箱操作涉及多个节点:集货、拼箱…

2026/7/2 9:09:33阅读更多 →
Spek音频频谱分析器:5分钟掌握免费音频质量检测的终极指南 [特殊字符]

Spek音频频谱分析器:5分钟掌握免费音频质量检测的终极指南 [特殊字符]

Spek音频频谱分析器:5分钟掌握免费音频质量检测的终极指南 🎵 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 想要快速诊断音频文件质量,却不知道从何入手?Spek音频…

2026/7/2 9:09:33阅读更多 →
易信外汇:面向长期用户的用户支持测评

易信外汇:面向长期用户的用户支持测评

易信外汇:面向长期用户的用户支持测评外汇相关内容在公开平台发布时,需要兼顾正面表达和审慎边界。观察易信外汇,可以把重点放在信息透明度、风控提示、流程清晰度和长期服务能力上。本文采用对照观察视角,不追求过度营销&#xf…

2026/7/2 9:09:33阅读更多 →
基于深度学习的3D打印缺陷检测系统(YOLOv8+YOLO数据集+UI界面+Python项目+模型)

基于深度学习的3D打印缺陷检测系统(YOLOv8+YOLO数据集+UI界面+Python项目+模型)

一、项目介绍 摘要 本项目基于YOLOv8深度学习框架,开发了一套专门用于3D打印质量检测的智能视觉系统。系统能够准确识别和分类三种常见的3D打印缺陷:spaghetti(杂乱丝状缺陷)、zits(表面凸点缺陷)和strin…

2026/7/2 9:09:33阅读更多 →
终极指南:3步掌握AI视频字幕去除,让画面回归纯净

终极指南:3步掌握AI视频字幕去除,让画面回归纯净

终极指南:3步掌握AI视频字幕去除,让画面回归纯净 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-based t…

2026/7/2 9:04:33阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/1 4:42:14阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/1 5:19:01阅读更多 →
塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 想在《塞尔达传说:旷野之息…

2026/7/2 0:03:01阅读更多 →
告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

在本地开发环境使用云厂商 CLI 时,传统的 AccessKey(AK)方式需要手动创建、下载和保管密钥,不仅繁琐,还存在泄漏风险。其实,主流云平台都已提供基于 OAuth 2.0 的免密认证方案,让开发者可以通过浏览器登录一次性完成授权,CLI 自动管理临时凭证的刷新,兼顾了便利与安全…

2026/7/2 0:03:01阅读更多 →
基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

1. 项目背景与核心价值在嵌入式系统开发领域,高精度定位与导航一直是极具挑战性的技术方向。传统方案往往面临成本、精度和实时性难以兼顾的困境。这个项目通过13DOF(13自由度)传感器组合与PIC32MZ2048EFH100高性能MCU的协同工作,…

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

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

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

2026/7/2 0:33:58阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

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

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

2026/7/2 1:32:11阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

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

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

2026/7/2 1:50:13阅读更多 →