LangChain:ChatModel 聊天模型与可配置模拟器
目录一、什么是聊天模型1.1 什么是消息1.2 模型的分类1.2.1 真实聊天模型1.2.2 可配置模拟器模型1.3 与LLM的区别1.4 注意事项二、通过API来定义聊天模型2.1 ChatDeepSeek2.2 init_chat_model2.2.1 函数定义2.2.2 实例1创建无配置模型2.2.3 实例2创建可配置模型2.2.4 实例3创建带有默认值的可配置模型一、什么是聊天模型在 LangChain 体系里聊天模型 ChatModel是专门面向对话场景的模型抽象区别于老式的大文本 LLM。老式LLM输入字符串输出字符串ChatModel聊天模型输入消息对象列表输出消息对象AIMessage这就调用.invoke()拿到的返回值。1.1 什么是消息聊天模型不拿裸字符串当完整输入使用消息对象区分角色SystemMessage系统提示设定角色、规则HumanMessage用户输入人类说的话AIMessageAI 模型返回的消息ToolMessage工具调用返回结果from langchain_core.messages import HumanMessage, SystemMessage chat_model ChatDeepSeek( modeldeepseek-chat, # 或 deepseek-reasoner temperature0, max_tokensNone, timeoutNone, max_retries2, ) messages [ SystemMessage(content你是助手), HumanMessage(content你叫什么名字) ] res chat_model.invoke(messages) # res 得到 AIMessage 对象res.content 才是文本 print(res.content)1.2 模型的分类1.2.1 真实聊天模型代表ChatOpenAI、ChatAnthropic、ChatZhipuAI实例化的时候就创建底层 http 客户端构造时填入model、temperature、api_key、max_tokens直接向真实大模型服务发网络请求如果想要运行时动态修改参数需要混入RunnableConfigurable配置configurable_fields。chat_model ChatDeepSeek( modeldeepseek-chat, # 或 deepseek-reasoner temperature0, max_tokensNone, timeoutNone, max_retries2, )1.2.2 可配置模拟器模型init_chat_model()不传入model参数时返回它只是占位包装器不是真正的聊天模型。不会创建底层模型客户端不会发起网络请求实现了BaseChatModel全部接口对外 API 和真实模型一模一样。invoke 调用阶段读取config[configurable]里的运行时配置用拿到的model、model_provider和其他参数现场构建真实聊天模型实例。特例不传入model时model、model_provider无需写进configurable_fields就可以运行时配置其余所有参数必须加入configurable_fields白名单运行时才允许修改。使用场景开发通用框架把选用什么模型推迟到业务请求到来时才确定避免代码硬编码模型modelinit_chat_model(configurable_fields{model,model_provider, temperature, max_tokens}) aimessmodel.invoke( 你是谁, config{configurable:{ model:deepseek-chat,model_provider:deepseek,temperature:0.6,max_tokens:100}} ) print(aimess.content)1.3 与LLM的区别项目ChatModel聊天模型老式 LLM输入消息对象列表[HumanMessage,SystemMessage]原始字符串输出AIMessage对象.content拿文本原始字符串原生支持system 提示、工具调用、多轮对话需要手动拼接字符串代表ChatOpenAIOpenAI1.4 注意事项返回值是对象不是字符串直接打印对象会看到完整对象必须取.content工具调用场景AIMessage.content可以为空工具调用数据放在additional_kwargs[tool_calls]_ConfigurableModel模拟器只是包装只有 invoke 那一刻才创建真实模型模拟器本身没有 api_key、model 这些真实客户端属性模拟器仅model/model_provider享有默认可配置特权其余参数必须写进configurable_fields。简单总结聊天模型是 LangChain 针对对话任务的抽象接收结构化消息返回结构化消息对象模拟器是它的延迟实例化包装变体专门用于运行时动态选定模型。二、通过API来定义聊天模型2.1 ChatDeepSeekChatDeepSeek 是 LangChain 官方维护的 DeepSeek 云 API 聊天模型包装器属于 langchain-deepseek 包基类是 BaseChatOpenAIBaseLanguageModel └── BaseChatModel └── BaseChatOpenAI └── ChatDeepSeek # langchain-deepseek 提供参数说明model模型名如deepseek-v4-flash/deepseek-v4-protemperature采样温度默认 1max_tokens生成上限timeout/max_retries客户端超时与重试api_key不传则读系统环境变量DEEPSEEK_API_KEY代码示例from langchain_deepseek import ChatDeepSeek from langchain_core.messages import HumanMessage, SystemMessage from langchain_core.output_parsers import StrOutputParser #直接定义模型自动读取系统环境变量中的 DEEPSEEK_API_KEY model ChatDeepSeek( modeldeepseek-chat, # 或 deepseek-reasoner temperature0, max_tokensNone, timeoutNone, max_retries2, ) messages[ SystemMessage(content), HumanMessage(contenthi!), ] parserStrOutputParser() 定义链 chainmodel | parser chainmodel.pipe(parser) 执行链 print(chain.invoke(messages))其中StrOutputParserLangChain是LangChain 最简单的输出解析器把大模型返回的AIMessage对象提取里面的文本.content输出普通 Python 字符串 str。关于的invoke() 调用。该方法是将单个输入转换为对应的输出。例如对于聊天模型来说就是根据用户的问题输入并输出相应的答案。2.2 init_chat_model上面的ChatDeepSeek 用于明确创建 DeepSeek 聊天模型的实例。而init_chat_model()是一个工厂函数它可以初始化多种支持的聊天模型如 OpenAI、Anthropic、FireworksAI 等不仅仅是 DeepSeek 的聊天模型。2.2.1 函数定义langchain.chat_models.base.init_chat_model( model: str, *, model_provider: str | None None, configurable_fields: Literal[None] None, config_prefix: str | None None, **kwargs: Any, ) - BaseChatModel参数名参数描述model要使用的模型的名称model_provider模型提供方。支持的 model_provider 值和相应的集成包有• openai - langchain-openai• anthropic - langchain-anthropic• google_genai - langchain-google-genai• ollama - langchain-ollama• deepseek - langchain-deepseek如果未指定将尝试从模型推断 model_providerconfigurable_fields设置哪些模型参数是可配置的。若配置为・None: 没有可配置的字段。・any所有字段都是可配置的类似 api_key、base_url 等可以在运行时更改。・Union [List [str], Tuple [str, …]]: 指定的字段是可配置的。config_prefix配置为非空字符串则模型将在运行时通过查找config[configurable][{config_prefix}_{param}]字段设置配置项。配置为空字符串那么模型将可以通过config[configurable][{param}]字段设置配置项。temperature采样温度温度值越高AI 回答越天马行空温度越低回答越保守靠谱。max_tokens要生成的最大令牌数timeout请求超时时间max_retries最大重试次数openai_api_key / api_keyOpenAI API 密钥。如果未传入将从环境变量中读取OPENAI_API_KEY。base_urlAPI 请求的基本 URL。……其他拓展参数init_chat_model() 返回值说明函数返回一个与指定的 model_name 和 model_provider 相对应的 BaseChatModel如 ChatOpenAIChatAnthropic 等。注意要是模型可配置则返回一个聊天模型模拟器该模拟器在传入配置后于运行时才会初始化底层模型。2.2.2 实例1创建无配置模型使用不同的模型提供方需要安装为其各自包与设置各自的 API Key 环境变量例如OpenAI 环境变量配置为OPENAI_API_KEY your_openai_api_key安装命令pip install -U langchain-openaiAnthropic 环境变量配置为ANTHROPIC_API_KEY your_anthropic_api_key安装命令pip install -U langchain-anthropicDeepSeek 环境变量配置为DEEPSEEK_API_KEY your_deepseek_api_key安装命令pip install -U langchain-deepseekGoogle VertexAI 环境变量配置为GOOGLE_API_KEY your_google_api_key安装命令pip install -U langchain-google-vertexai使用init_chat_model创建一个聊天模型deepseek_modeldeepseek_modelinit_chat_model(deepseek-chat,model_providerdeepseek,temperature0) print(deepseek_model.invoke(你是谁).content\n)2.2.3 实例2创建可配置模型以通过指定configurable_fields来创建一个运行时可配置的模型。如果不指定model值则“model”和“model_provider”将默认可配置。也就是说在使用init_chat_model()创建可配置模型时可以通过configurable_fields指定运行时可配置的参数未指定的参数默认不可配置。但model与model_provider这两个参数除外如果在调用init_chat_model()时未传递且未通过configurable_fields指定它们仍然可以在运行时进行配置。#这里我们没有事先指定model也没有通过configurable_fields将其指定为可配置项 modelinit_chat_model(temperature0) #但是我们在运行的时候依然可以配置model字段,且编译时会自动按照model推到provider print(model.invoke( 你是谁, config{configurable:{model:deepseek-chat}} ))除了model与model_provider之外的其他参数如果需要运行时配置必须在调用init_chat_model接口的时候通过参数configurable_fields来指定。modelinit_chat_model(modeldeepseek-chat,configurable_fields{model_provider, temperature, max_tokens}) #参数model_provider, temperature, max_tokens运行时指定 aimessmodel.invoke( 你是谁, config{configurable:{model_provider:deepseek,temperature:0.6,max_tokens:100}} ) print(aimess.content)2.2.4 实例3创建带有默认值的可配置模型如果我们在调用init_chat_model()接口的时候给参数添加了默认值我们还希望该参数在后续运行时也要动态配置与变化那么我们就可以创建出带有默认值的可配置模型。具体做法就是将该参数也添加到configurable_fields中.modelinit_chat_model(modeldeepseek-chat, temperature0.5, max_tokens50, configurable_fields{model_provider, temperature, max_tokens} ) #参数model_provider, temperature, max_tokens运行时指定 aimessmodel.invoke( 你是谁, config{configurable:{model_provider:deepseek,temperature:0.6,max_tokens:100}} ) print(aimess.content)

相关新闻

从简历到技术面,Java面试考察的关键能力

从简历到技术面,Java面试考察的关键能力

一份简历躺在邮箱里七秒,决定它命运的不是学历栏,而是技术栈后面那行不起眼的“熟悉XXX”。绝大多数Java候选人死在第一关,不是技术不够,而是简历上的每一个关键词都在替面试官划好考点,而你自己根本没意识到。从简历初…

2026/8/25 11:59:43 阅读更多 →
基于Hadoop大数据的热门游戏推荐系统的设计与实现(源码+LW+部署讲解)

基于Hadoop大数据的热门游戏推荐系统的设计与实现(源码+LW+部署讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/25 11:59:43 阅读更多 →
Yuki第007个开关:骰子与猜拳结果设置的位置、验证方法与公平互动边界

Yuki第007个开关:骰子与猜拳结果设置的位置、验证方法与公平互动边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/8/25 11:58:43 阅读更多 →

最新新闻

低轨卫星互联网的“芯“瓶颈,鲸鹏芯海如何用双技术路线破局?

低轨卫星互联网的“芯“瓶颈,鲸鹏芯海如何用双技术路线破局?

搞射频、做卫星、钻研半导体芯片的同行们,还有所有电子相关专业的在校同学,以及对低轨卫星感兴趣、想入行的小伙伴,我是鲸鹏芯海的謓泽。 咱们《唠透低轨卫星相控阵芯片十件事》正式更新了,搞卫星毫米波芯片有多折磨人懂的都懂&am…

2026/8/25 12:49:12 阅读更多 →
怎么从零搭建一套体育直播平台?完整落地实操指南(二)

怎么从零搭建一套体育直播平台?完整落地实操指南(二)

经常有朋友问:想做体育赛事直播平台,但不知道从哪下手,技术栈如何选型、赛事数据源怎么对接、整体投入成本大概多少。 本文结合实际落地经验,从需求梳理、技术选型、完整搭建流程到成本测算全部讲透,一套可直接落地的实…

2026/8/25 12:49:12 阅读更多 →
Python进阶教程:机器学习入门(Scikit-learn)

Python进阶教程:机器学习入门(Scikit-learn)

目录Python进阶教程:机器学习入门(Scikit-learn)一、机器学习是什么二、机器学习基本流程三、第一个分类模型四、线性回归五、模型评估与交叉验证六、K-Means 聚类七、特征工程要点八、实战:预测鲜花品种总结Python进阶教程&#…

2026/8/25 12:49:12 阅读更多 →
OpenHarness 全面配置教学——从游戏开发工作流引入

OpenHarness 全面配置教学——从游戏开发工作流引入

一、引子1.1 四模型分工的游戏制作流水线设想一个场景:用 AI 打造一套四模型分工的游戏制作流水线,让 AI 自动完成从游戏设计到代码实现的全流程:#角色模型职责1决策总监(game-director)kimi-k2.6愿景/范围/里程碑/任务…

2026/8/25 12:49:12 阅读更多 →
Python进阶教程:算法与数据结构入门

Python进阶教程:算法与数据结构入门

目录Python进阶教程:算法与数据结构入门一、时间复杂度二、常用数据结构2.1 列表与字典2.2 栈(Stack)2.3 队列(Queue)三、排序算法3.1 冒泡排序(O(n))3.2 快速排序(O(n log n)&#…

2026/8/25 12:49:12 阅读更多 →
AI创业者通识日报 | 2026年8月5日

AI创业者通识日报 | 2026年8月5日

AI创业者通识日报 | 2026年8月5日 01 今日头条 TOP STORY重磅 阿里Qwen3.8-Max正式发布:2.4万亿参数,16天自主编程,下周开源 8月3日,阿里巴巴正式发布新一代旗舰大模型 Qwen3.8-Max ,总参数量达2.4万亿(稀疏…

2026/8/25 12:48:12 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →