这一章讲清楚 LangChain 模型层的核心Chat Model。它就像一个“统一插座”让业务系统用同一套接口去调用 OpenAI、Claude、Gemini、Qwen、DeepSeek、Ollama 等不同模型。一、Chat Model 是什么如果把大模型应用比作一台电脑那么不同模型厂商就像不同规格的插头OpenAI 一种接法Anthropic 一种接法Google Gemini 一种接法国内模型和本地模型又是一种接法。Chat Model 做的事情就是在这些“插头”前面放一个统一插座。业务系统不用每次都关心底层模型 API 的细节只需要按照 LangChain 的标准方式传入消息、调用模型、拿到返回结果。LangChain 官方文档也把标准模型接口作为核心能力之一不同模型提供商有不同 API 和响应格式LangChain 通过标准接口让开发者更容易切换模型减少供应商绑定。二、为什么直接调模型 API 还不够很多人第一次做大模型应用代码可能是这样的拿到 API Key拼一个 prompt调用一次模型然后把结果返回给用户。Demo 这样没问题但真实项目很快会遇到麻烦。第一个麻烦是模型 API 不统一。今天用 OpenAI明天想换 Claude后天想试 Gemini参数名、返回字段、错误码、流式输出格式都可能不同。第二个麻烦是能力不统一。有的模型支持工具调用有的模型支持结构化输出有的模型多模态强有的模型推理强有的模型便宜但不稳定。如果业务代码和某一个模型写死后面很难扩展。第三个麻烦是工程治理不好做。线上系统要做日志、重试、限流、超时、Token 统计、模型降级、Prompt 版本管理。如果每个模型都自己封装一套维护成本会越来越高。三、Chat Model 和传统 LLM 有什么区别传统 LLM 更像“输入一段文本输出一段文本”。你给它一个 prompt它返回一段字符串。Chat Model 更像“输入一组消息输出一条消息”。每条消息都有角色比如 system、user、assistant、tool。这个差别非常关键因为真正的 AI 应用往往不是一次性问答而是多轮对话、带系统指令、带工具调用、带历史上下文的交互。LangChain 的 Chat Model 集成文档明确说明Chat Model 使用一组 messages 作为输入并返回 messages 作为输出而不是传统 LLM 那种纯文本输入输出。四、Messages模型看到的是“对话记录”不是一句话在 LangChain 里常见消息有四类。System Message 用来告诉模型怎么表现比如“你是一个专业客服助手必须基于资料回答”。Human Message 是用户输入。AI Message 是模型的输出。Tool Message 是工具调用后的结果。把它放到智能客服里就很好理解用户问“我的订单到哪了”模型先判断需要查订单工具然后工具返回物流状态最后模型再把工具结果组织成用户能看懂的话。from langchain.messages import SystemMessage, HumanMessagemessages [SystemMessage(你是一个专业客服助手回答要简洁准确。),HumanMessage(我怎么查询订单物流)]response model.invoke(messages)这套消息结构的好处是系统指令、用户问题、历史对话、工具结果可以放在同一条链路里后面做 Agent、Memory、Tool Calling 时不会乱。五、Chat Model 的三种基本调用方式Chat Model 最常用的调用方式有三种invoke、stream、batch。方法通俗理解适合场景输出特点invoke问一次等完整答案普通问答、分类、摘要返回完整 AIMessagestream边生成边返回长文章、客服、Agent 进度返回多个 chunkbatch一次处理多个请求批量分类、批量摘要提升批处理效率# 1. 普通调用response model.invoke(解释一下什么是 RAG)# 2. 流式输出for chunk in model.stream(写一段 LangChain 入门介绍):print(chunk.text, end)# 3. 批量调用results model.batch([总结文档 A,总结文档 B,总结文档 C])六、统一接入不同模型不是换 SDK而是换配置LangChain 官方推荐可以用 init_chat_model 初始化模型。它的核心价值不是少写几行代码而是让“模型选择”变成配置层的问题而不是业务代码的问题。比如你今天想用 OpenAI明天想用 Gemini后天想试 Claude 或 OpenRouter。业务流程不应该大改最好只是切换模型名、Provider、API Key 和少量参数。from langchain.chat_models import init_chat_model# OpenAImodel init_chat_model(gpt-5.5)# Google Geminimodel init_chat_model(google_genai:gemini-2.5-flash-lite)# Anthropic Claudemodel init_chat_model(claude-sonnet-4-6)# 带参数初始化model init_chat_model(claude-sonnet-4-6,temperature0.3,timeout30,max_tokens1000,max_retries6,)实际项目里不建议把模型名写死在代码里。更好的做法是放到配置中心客服走低成本快模型复杂分析走强模型代码任务走擅长代码的模型内部敏感数据走私有化模型。七、模型能力不能只看“名字”要看能力矩阵很多人选模型只看排行榜或者只看谁更火。真实落地不是这样。做 LangChain 应用时模型能力要和业务场景匹配。LangChain 官方 Models 文档把现代模型能力拆成几个维度工具调用、结构化输出、多模态、推理能力等。Chat Model 集成页面也列出了不同模型集成对 Tool Calling、Structured Output、Multimodal 等能力的支持情况。举几个例子如果你做智能客服优先看工具调用、低延迟、稳定性和成本。如果你做知识库问答优先看长上下文、引用资料能力、中文理解能力和幻觉控制。如果你做股票分析助手优先看结构化输出、工具调用、推理能力和风险表达稳定性。如果你做多模态应用才重点看图像、音频、视频输入输出能力。八、Chat Model 的返回值 AIMessage 里有什么Chat Model 返回的不是普通字符串而是 AIMessage。你可以把它理解成“模型回信”里面不仅有正文还可能有工具调用、Token 用量、模型元数据等信息。response model.invoke(用一句话解释 LangChain)print(response.content) # 模型正文print(response.response_metadata) # 模型返回的元数据print(response.usage_metadata) # Token 用量等信息具体看模型支持情况这点对企业项目很关键。因为线上系统不仅要展示答案还要统计成本、分析耗时、排查错误、追踪模型行为。九、Chat Model 和 Agent 是什么关系后面我们会讲 Agent。这里先埋一个伏笔Agent 的“大脑”就是 Chat Model。用户提出一个问题Agent 会把问题、系统规则、工具列表、历史上下文一起交给 Chat Model。Chat Model 判断下一步是直接回答还是调用工具还是继续检索知识库。所以Chat Model 不是整个 LangChain 应用但它是整个应用的推理核心。Prompt、Tools、RAG、Memory、LangGraph 都会围绕它展开。十、企业项目里怎么落地推荐 Java 主服务 Python AI 服务如果你是 Java 后端开发者不一定要把所有 LangChain 逻辑写进 Java 项目里。更推荐的结构是Java 主服务负责用户、权限、业务、审计Python FastAPI 服务负责 LangChain、模型调用、Prompt、RAG、工具编排。这样做的好处是两边职责清楚。Java 保持业务系统稳定Python 利用 AI 生态快速试模型、接 RAG、接 Agent。十一、实战建议Chat Model 层一定要封装好真正做项目时不建议在每个业务代码里到处 new model。建议单独做一个 Model Gateway 或 Model Service把模型初始化、参数、重试、超时、日志、限流、降级统一收口。一个比较稳的封装思路是• 模型配置放到配置中心不写死在业务代码里。• 每次调用都带 requestId方便排查完整链路。• 不同任务使用不同模型别所有任务都上最贵的大模型。• 必须记录模型名称、Prompt 版本、输入输出、Token 消耗、耗时和异常。• 模型失败时要有重试、降级和兜底答案。• 涉及金融、医疗、法律等高风险场景时要做输出校验和风险提示。十二、总结这一章可以用一句话收尾Chat Model 是 LangChain 模型层的统一入口它把不同模型提供商的差异尽量收敛成一套标准的调用方式。对开发者来说Chat Model 解决的不是“让模型变聪明”的问题而是“让模型调用变工程化”的问题。它让你可以用统一的 Messages、统一的 invoke / stream / batch、统一的返回消息去连接不同模型。后面无论你做 RAG、Tool Calling、Agent、Memory都会站在 Chat Model 这一层之上。下一章建议继续讲 Messages为什么大模型对话不是简单字符串而是一组有角色、有状态、有工具结果的消息。内容来源Chat ModelLangChain 如何统一调用不同大模型功能变化与行业影响解析_热闻岛