首页/新闻资讯/正文详情

* LangChain 模型统一接入:ChatOpenAI 兼容用法与 init_chat_model 详解

发布时间:2026/9/25 21:10:12 来源:云帆数科 栏目:资讯中心
* LangChain 模型统一接入:ChatOpenAI 兼容用法与 init_chat_model 详解
本章对应的官网文档出处英文文档https://docs.langchain.com/oss/python/langchain/models中文文档https://docs.langchain.org.cn/oss/python/langchain/models一、ChatOpenAI 兼容用法1.1 兼容接口的使用背景一方面LangChain没有为所有大模型厂商提供专用接口见Langchain大模型集成列表。如果选用的平台没有专用接口可以通过兼容接口调用。另一方面专用接口的对接方式五花八门如腾讯混元的ChatHunyuan需要单独的APP_ID SecretIdSecretKey 配置繁琐用户不友好。结论大多数API平台都支持OpenAI API接口规范所以基本都可以通过 ChatOpenAI 集成。1.2 通过 ChatOpenAI 调用 DeepSeek1 from langchain_openai import ChatOpenAI 2 3 load_dotenv(overrideTrue) 4 5 # 通过ChatOpenAI 连接deepseek模型 6 DEEPSEEK_API_KEY os.getenv(DEEPSEEK_API_KEY) 7 DEEPSEEK_BASE_URL os.getenv(DEEPSEEK_BASE_URL) 8 9 deepseek_llm2 ChatOpenAI( 10 api_keyDEEPSEEK_API_KEY, 11 base_urlDEEPSEEK_BASE_URL, 12 modeldeepseek-v4-flash, 13 ) 14 15 response deepseek_llm2.invoke(1 1 ) 16 print(response)1.3 通过 ChatOpenAI 调用智谱与通义千问1 load_dotenv(overrideTrue) 2 3 4 #通过ChatOpenAI 连接智谱AI模型 5 ZHIPUAI_API_KEY os.getenv(ZHIPUAI_API_KEY) 6 ZHIPUAI_BASE_URL os.getenv(ZHIPUAI_BASE_URL) 7 8 zhipu_llm2 ChatOpenAI( 9 api_keyZHIPUAI_API_KEY, 10 base_urlZHIPUAI_BASE_URL, 11 modelglm-5.1, 12 ) 13 14 #通过ChatOpenAI 连接通义千问模型 15 DASHSCOPE_API_KEY os.getenv(DASHSCOPE_API_KEY) 16 DASHSCOPE_BASE_URL os.getenv(DASHSCOPE_BASE_URL) 17 18 tongyi_llm2 ChatOpenAI( 19 api_keyDASHSCOPE_API_KEY, 20 base_urlDASHSCOPE_BASE_URL, 21 modelqwen-plus, 22 )二、init_chat_model 统一初始化接口init_chat_model 是 LangChain 1.x 中推出的用于初始化聊天模型的统一接口。只要是LangChain支持的模型都可以处理它会根据模型名称自动选择对应的模型类初始化实例。2.1 基本语法1 from langchain.chat_models import init_chat_model 2 3 model init_chat_model( 4 provider:model_name, # 提供商:模型名称 5 api_keyyour-api-key, # API 密钥可选可从环境变量读取 6 temperature0.7, # 温度参数可选 7 max_tokens1000, # 最大 token 数可选 8 **kwargs # 其他模型特定参数 9 )2.2 与直接使用模型类的区别回答 init_chat_model 是 LangChain 1.0 的统一接口优势包括统一接口无需记住每个提供商的不同初始化方式以一致的方式初始化易于切换简化了智能体系统中模型切换策略只需修改模型字符串简洁明了更简洁的语法减少样板代码自动适配内部根据模型标识自动选择对应的驱动类(ChatOpenAI、ChatDeepSeek)图示三、init_chat_model 使用示例3.1 调用 DeepSeek 官网的大模型1 import os 2 from langchain.chat_models import init_chat_model 3 from dotenv import load_dotenv 4 5 # 从.env文件中加载环境变量 6 load_dotenv(overrideTrue) 7 8 # 从环境变量读取配置 9 DEEPSEEK_API_KEY os.getenv(DEEPSEEK_API_KEY) 10 DEEPSEEK_BASE_URL os.getenv(DEEPSEEK_BASE_URL) 11 12 13 model init_chat_model(modeldeepseek:deepseek-v4-flash, 14 #model_providerdeepseek, 15 api_keyDEEPSEEK_API_KEY, 16 base_urlDEEPSEEK_BASE_URL) 17 # 向模型发送单条数据 18 response model.invoke(你好用一句话回答) 19 # 打印响应 20 print(response)当我们传递的模型名称为deepseek-v4-flash 时init_chat_model会自动调用ChatDeepSeek初始化模型实例和直接通过ChatDeepSeek初始化的效果完全一致。3.2 调用阿里百炼大模型环境变量1 DASHSCOPE_BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode/v1 2 DASHSCOPE_API_KEYYOUR_API_KEY代码1 from langchain.chat_models import init_chat_model 2 from dotenv import load_dotenv 3 import os 4 5 load_dotenv(overrideTrue) 6 7 DASHSCOPE_API_KEYos.getenv(DASHSCOPE_API_KEY) 8 DASHSCOPE_BASE_URLos.getenv(DASHSCOPE_BASE_URL) 9 10 model init_chat_model(modelqwen-plus, 11 model_provideropenai, 12 api_keyDASHSCOPE_API_KEY, 13 base_urlDASHSCOPE_BASE_URL) 14 15 print(model.invoke(你好用一句话回答))3.3 调用 CloseAI 中转平台大模型环境变量1 CLOSEAI_API_KEYYOUR_API_KEY 2 CLOSEAI_BASE_URLhttps://api.openai-proxy.org/v1代码1 from langchain.chat_models import init_chat_model 2 from dotenv import load_dotenv 3 import os 4 5 load_dotenv(overrideTrue) 6 7 CLOSEAI_API_KEYos.getenv(CLOSEAI_API_KEY) 8 CLOSEAI_BASE_URLos.getenv(CLOSEAI_BASE_URL) 9 10 model init_chat_model(modeldeepseek-v4-flash, 11 model_provideropenai, 12 api_keyCLOSEAI_API_KEY, 13 base_urlCLOSEAI_BASE_URL) 14 15 print(model.invoke(你好用一句话回答))3.4 model_provider 与模型提供商3.4.1 model_provider 支持哪些 providermodel_provider 表示模型的提供者支持的providers有anthropic , anthropic_bedrock,azure_ai, azure_openai, bedrockbedrock_converse, cohere, deepseek , fireworks,google_anthropic_vertex, google_genai, google_vertexaigrog, huggingface, ibm, mistralai, nvidia,ollama , openai , openrouter , perplexity, together, upstage, xai。如果 model_provider“openai” 会自动加载langchain-openai 的依赖包底层调用的是ChatOpenAI 类。如果 model_provider“deepseek” 会自动加载langchain-deepseek 的依赖包底层调用的是ChatDeepSeek 类。像阿里的dashscope 尚未被LangChain官方纳入模型的统一注册体系暂时不知道dashscope的提供者是谁。此时可以将model_provider设置为openai底层将会用openai的规范处理请求这就要求我们调用的模型服务是OpenAI Compatible的。3.4.2 模型提供商的指定与自动推断可以在model参数中通过前缀指定模型供应商和模型名称之间用冒号分割等价于通过model_provider参数指定供应商。如果两个位置都没有指明供应商LangChain底层会按照内置规则自动推断。但是并非所有的模型都支持自动推断如model名称qwen-plus 不支持自动推断没有指明供应商会报错。四、模型创建方式小结1 DeepSeek官网的DeepSeek模型可以调用ChatDeepSeek()、ChatOpenAI()、 init_chat_model()三种方式 2 3 阿里云百炼平台的DeepSeek模型可以调用ChatTongyi()、ChatOpenAI()、init_chat_model() 三种方式 4 5 OpenRouter平台的DeepSeek模型可以调用ChatOpenRouter()、ChatOpenAI()、 init_chat_model()三种方式 6 7 CloseAPI平台的DeepSeek模型可以调用ChatOpenAI()、init_chat_model() 两种方式五、常用模型初始化参数在LangChain中Model Class 和init_chat_model初始化模型共同的参数及解释。API文档https://docs.langchain.org.cn/oss/python/langchain/models#parameters参数类型说明默认值modelstr使用的特定提供商的模型名称(必需)。比如openai:gpt-4o、groq:gemma2-9b-it无model_providerstr模型提供商名称无api_keystrAPI 密钥。如果不提供会从环境变量中读取如DEEPSEEK_API_KEY Nonebase_urlstr大模型供应商API请求地址。Nonetemperaturefloat控制输出随机性范围 0.0-2.0温度越高输出越随机。- 0.0 最确定性输出几乎不变- 1.0 平衡创造性和一致性- 2.0 最随机最有创造性0.7max_tokensint限制模型输出的最大 token 数量Nonetimeoutfloat超时时间秒超时未响应请求会被取消。Nonemax_retriesint请求失败如网络问题、速率限制时的最大重试次数6说明六、temperature 与 Token 实例6.1 temperature 参数与使用场景0.0-0.3需要一致性、准确性的任务数学计算、数据提取、分类、代码生成0.5-0.7平衡创造性和一致性聊天、问答0.8-1.5创造性任务写作、头脑风暴1.5-2.0高度创造性诗歌、故事创作6.1.1 低温度生成结果示例1 from langchain.chat_models import init_chat_model 2 from dotenv import load_dotenv 3 import os 4 # 从.env文件中加载环境变量 5 load_dotenv(overrideTrue) 67 model init_chat_model( 8 # modelgpt-5.4-mini, 9 modeldeepseek-v3.2, 10 model_provideropenai, 11 temperature0, 12 api_keyos.getenv(CLOSEAI_API_KEY), 13 base_urlos.getenv(CLOSEAI_BASE_URL), 14 ) 15 # 向模型发送单条数据 16 for i in range(3): 17 response model.invoke(帮我写一首描述春天的七言绝句诗) 18 # 打印响应 19 print(response.content)1 《春晓》 2 东君巡野过青岑一岭云霞一岭金。 3 最是多情溪畔柳偷藏莺语送行人。 4 5 注我的创作思路是通过“东君巡野”、“云霞鎏金”等意象展现春日山川的瑰丽以拟人手法赋予 自然灵性。后两句聚焦溪柳藏莺的细节以“偷”字点破春的俏皮结句“送行人”将画面延伸至画 外留有余韵。全诗色彩明丽动静相生试图在传统春景题材中注入轻盈的巧思。 6 《春晓》 7 东君巡野过青岑一岭云霞一岭金。 8 最是多情溪畔柳偷藏莺语送行人。 9 10 注我的创作思路是通过“东君巡野”、“云霞鎏金”等意象展现春日山川的瑰丽以拟人手法赋予 溪柳灵性借“偷藏莺语”传递春日的生机与含蓄情韵。诗中“巡”、“藏”、“送”等动词的运用使 静态春景流动起来末句以行人视角收束留有余味。 11 《七绝·春晓》 12 一夜东风万树花清溪破冻响琵琶。 13 莺啼柳浪云烟湿人在春山第几家。 14 15 注诗中“东风”、“万树花”展现春的蓬勃“清溪破冻”以动衬静暗喻生机复苏。后两句以莺啼 柳浪、云烟湿翠勾勒朦胧春色尾句以问作结平添寻春之趣与悠然余韵全篇动静相宜远近交 叠尽显春之生意。此时设置为 后模型会始终选择概率最高的 Token确保字段准确、不胡乱发挥。6.1.2 高温度生成结果对比1 from langchain.chat_models import init_chat_model 2 from dotenv import load_dotenv 3 import os 4 # 从.env文件中加载环境变量 5 load_dotenv(overrideTrue) 6 7 model init_chat_model( 8 # modelgpt-5.4-mini, 9 modeldeepseek-v3.2, 10 model_provideropenai, 11 temperature1.5, 12 api_keyos.getenv(CLOSEAI_API_KEY), 13 base_urlos.getenv(CLOSEAI_BASE_URL), 14 ) 15 # 向模型发送单条数据 16 for i in range(3): 17 response model.invoke(帮我写一首描述春天的七言绝句诗)18 # 打印响应 19 print(response.content)1 《壬寅仲春即事》 2 东君醉酒泼彤云一岭胭脂一岭曛。 3 怪道莺声啼不彻枝头烧作石榴裙。 4 5 注诗中“东君”代指春神以其醉意泼洒彩霞为喻形象展现春色之浓郁灵动。后两句通过莺啼 不绝与石榴裙的巧妙联想以火焰比喻花海翻腾之势全诗在传统春景描绘中融入奇幻色彩浪漫 笔法间尽显春之热烈与生机盎然。 6 《春溪行》 7 东君遣暖润青苔波光潋滟载云回。 8 莫道残寒犹料峭一枝红蕊过溪来。 9 10 注全诗以碧溪破冰、波光载云的视觉变化展现初春的流动生机。后两句用“残寒料峭”与“红蕊 过溪”形成冷峻与热烈的鲜明对比通过拟人化技法使春色具有冲破束缚的动势暗合人生际遇中 希望常在的哲思。 11 《仲春野行》 12 东君遣煦渥郊乡粉李绯桃竞试妆。 13 最赏青畴酥雨足一犁烟水伴牛驮。 14 15 注本诗以传统笔法勾勒春景通过“东君遣煦”、“桃李试妆”展现春神的雍容与百花的娇媚。后 两句转写田园以“酥雨”、“犁烟”意象突出春耕时节泥土的润泽与生机牛驮微雨中缓行的画 面传递出深邃而醇厚的自然生趣。6.1.3 严格的结构化数据提取1 from langchain.chat_models import init_chat_model 2 from dotenv import load_dotenv 3 import os 4 # 从.env文件中加载环境变量 5 load_dotenv(overrideTrue) 6 7 model init_chat_model( 8 modeldeepseek-v3.2, 9 model_provideropenai, 10 temperature0, 11 api_keyos.getenv(CLOSEAI_API_KEY), 12 base_urlos.getenv(CLOSEAI_BASE_URL), 13 ) 14 # 向模型发送单条数据 15 response model.invoke(张三男30岁拥有8年编程开发经验目前在某互联网大厂担任技 术专家。帮我从上文中提取数据返回JSON格式) 16 print(response.content)1 { 2 name: 张三, 3 gender: 男, 4 age: 30, 5 programming_experience_years: 8, 6 current_position: 技术专家, 7 current_company_type: 互联网大厂 8 }6.1.4 创意文案与头脑风暴1 from langchain.chat_models import init_chat_model 2 from dotenv import load_dotenv 3 import os 4 # 从.env文件中加载环境变量 5 load_dotenv(overrideTrue) 6 7 model init_chat_model( 8 modeldeepseek-v3.2, 9 model_provideropenai, 10 temperature1.5, 11 api_keyos.getenv(CLOSEAI_API_KEY), 12 base_urlos.getenv(CLOSEAI_BASE_URL), 13 ) 14 # 向模型发送单条数据 15 response model.invoke(请为一款极致静音的机械键盘写3个充满诗意且极具张力的广告语。) 16 print(response.content)1 1. **「指尖落下无声诗每个字都沉入深海」** 2 *奔赴思绪的静谧领域让敲击成为心流的涟漪* 3 4 2. **「在银桦雪原上耕种文字唯留耕者的呼吸」** 5 *以失声的机械之齿驯服每一次破晓的灵感* 6 7 3. **「当键盘学会芭蕾世界只剩文案绽放的轻重音」** 8 *精密弹力悬浮于声学悬空层触感在寂静中震耳欲聋* 9 10 --- 11 12 注广告语核心将“静音”属性诗化为**创作禅境、自然隐喻与艺术比拟**通过矛盾张力如 “失声的机械”“寂静中震耳欲聋”强化产品颠覆性适用于高端文创/科技消费场景。6.2 Token 是什么基本单位: 大模型通过分词器Tokenizer将文本拆分后的最小语义单元是token相当于自然语言中的词或字。不同的模型采用不同的分词算法如BPE、WordPiece因此同一段文本在不同模型中的Token数量可能不同。收费依据大语言模型通常也是以token的数量作为其计量或收费的依据。1个中文Token≈1-1.8个汉字1个英文Token≈3-4个字符Token与字符转化的可视化工具OpenAI提供https://platform.openai.com/tokenizer百度智能云提供https://console.bce.baidu.com/support/#/tokenizer6.2.1 限制输出 Token 的示例1 from langchain.chat_models import init_chat_model 2 from dotenv import load_dotenv 3 import os 4 # 从.env文件中加载环境变量 5 load_dotenv(overrideTrue) 6 7 model init_chat_model( 8 # modelgpt-5.4-nano, 9 modelgpt-5.4-mini, 10 # temperature0.7,11 api_keyos.getenv(CLOSEAI_API_KEY), 12 base_urlos.getenv(CLOSEAI_BASE_URL), 13 max_tokens15, 14 ) 15 # 向模型发送单条数据 16 response model.invoke(请用中文详细介绍什么是AI) 17 # 打印响应 18 print(response) 19 20 # print(response.content) 21 # print(response.response_metadata[finish_reason])1 content当然可以。下面我用中文尽量系统、通 additional_kwargs{refusal: None} response_metadata{token_usage: {completion_tokens: 15, prompt_tokens: 14, total_tokens: 29, completion_tokens_details: {accepted_prediction_tokens: 0, audio_tokens: 0, reasoning_tokens: 0, rejected_prediction_tokens: 0}, prompt_tokens_details: {audio_tokens: 0, cached_tokens: 0}, latency_checkpoint: {engine_tbt_ms: 5, engine_ttft_ms: 29, engine_ttlt_ms: 109, pre_inference_ms: 83, service_tbt_ms: 4, service_ttft_ms: 279, service_ttlt_ms: 336, total_duration_ms: 261, user_visible_ttft_ms: 196}}, model_provider: openai, model_name: gpt-5.4-mini-2026-03-17, system_fingerprint: None, id: chatcmpl- Dg3tYDOZ1xWSR3EaTX8jlM58yUSq2, service_tier: default, finish_reason: length, logprobs: None} idlc_run--019e2fb9-11b0- 7901-9076-a45fc0b41125-0 tool_calls[] invalid_tool_calls[] usage_metadata{input_tokens: 14, output_tokens: 15, total_tokens: 29, input_token_details: {audio: 0, cache_read: 0}, output_token_details: {audio: 0, reasoning: 0}}

相关推荐

Odoo 重磅升级:销售管理——让每一笔订单全链路可控
Odoo 重磅升级:销售管理——让每一笔订单全链路可控

一家做设备定制的企业,10 个项目并行、3-3-3-1 分期收款——销售员每周要查 50 次合同条款才能告诉客户"这期该付多少";一家做钢铁贸易的企业,基准价一天变 3 次,1000 个规格型号的报价要靠人工拼——销售管理不是"… · 2026/9/25 21:10:06

国产光耦合设备:精度突围,领跑全球光通信装备赛道
国产光耦合设备:精度突围,领跑全球光通信装备赛道

2024年,全球光模块耦合设备市场前三厂商合计占据56%的份额,镭神技术与猎奇智能分别以27%和18%的市占率包揽前两名。而就在几年前,这个市场还被进口设备牢牢把持——价格高昂、交期数月、售后响应缓慢,国内光模块企业苦之久矣。反超… · 2026/9/25 21:10:06

Fitten Code 配 TaoToken:AI 代码助手 settings.json 骨架与验证
Fitten Code 配 TaoToken:AI 代码助手 settings.json 骨架与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 21:09:41

一个月暴力攻破上百道世纪数学名题,学术界等来的却是恐慌与抗议
一个月暴力攻破上百道世纪数学名题,学术界等来的却是恐慌与抗议

一个月暴力攻破上百道世纪数学名题,学术界等来的却是恐慌与抗议 2026年8月28日,OpenAI悄悄开启了一轮新的内部模型训练。 谁也没料到,短短24天后,也就是9月21日,这家科技巨头在官网丢下一枚重磅炸弹:这个尚… · 2026/9/25 21:49:44

传奇996引擎LUA脚本开发指南:从环境搭建到高级定制实践
传奇996引擎LUA脚本开发指南:从环境搭建到高级定制实践

前言 目录 一、996引擎LUA开发环境搭建 1.1 开发工具推荐 1.2 目录结构 1.3 热重载机制 二、LUA脚本基础结构 2.1 一个简单的NPC脚本示例 2.2 常用API分类 三、高级定制实战 3.1 自定义活动系统 3.2 自定义BOSS技能 3.3 玩家数据持久化 四、性能优化技巧 4.1 避免… · 2026/9/25 21:49:13

数据库实验五完整实践:解压、建库、事务与避坑指南
数据库实验五完整实践:解压、建库、事务与避坑指南

简介:面向西北工业大学软件学院数据库课程学习者,这份压缩包完整收录实验五的提交材料与过程记录,围绕电子商务数据库设计任务,提供ER图、概念数据模型及配套文字说明,可帮助完成从需求分析到概念结构设计的闭环。压缩… · 2026/9/25 21:49:06

静态+动态分析闭环:Ghidra MCP 集成调试器的断点、单步与ASLR地址转换详解
静态+动态分析闭环:Ghidra MCP 集成调试器的断点、单步与ASLR地址转换详解

静态动态分析闭环:Ghidra MCP 集成调试器的断点、单步与ASLR地址转换详解 【免费下载链接】ghidra-mcp Ghidra MCP Server — 200 MCP tools for AI-powered reverse engineering. GUI plugin headless server, lazy tool loading, convention enforcement, batch … · 2026/9/25 21:48:35

260923-report
260923-report

260923-report 🧑🏻‍💻Author: Zenos 📝Overview: 本文档主要记录26年9月第三周学习内容以及后续学习计划。 文章目录260923-report[toc]一、研究背景1.1 微小目标检测1.1.1 微小目标检测面临的挑战1.1.2… · 2026/9/25 21:48:29

Windows 11非分页池泄漏排查实战:PoolMon+RAMMap精解
Windows 11非分页池泄漏排查实战:PoolMon+RAMMap精解

1. 这不是蓝屏前的幻觉:Windows 11里“吃内存”的幽灵真存在你有没有遇到过这种情况:刚重启完系统,任务管理器显示已用内存才2GB,可两小时后,它就悄无声息地涨到6GB、7GB,甚至8GB以上?打开的任务… · 2026/9/25 21:48:22

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码