8.【保姆级】从零学会LangChain调用大模型!统一接口+代码实战

模型调用场景中,用户常会根据个人使用习惯指定偏好的AI大模型厂商及名称。比如阿里巴巴的 qwen3.6-plus、qwen3.5-max,字节跳动的 doubao-pro等国产主流旗舰型号,以及OpenAI的gpt-4o、Anthropic 的claude-3.5-sonnet等海外型号,都是用户会结合任务复杂度、成本预算、合规要求等因素,在不同使用场景中高频指定的调用对象。

如果喜欢看视频学习的,可以看这个《8.【保姆级】从零学会LangChain调用大模型!统一接口+代码实战》,喜欢看文章的接着往下看。

image

 

为提升开发效率,新版 LangChain1.2.x+将不同厂商 AI 大模型的调用逻辑做了统一封装,整合到init_chat_model中完成统一调用,大幅简化多模型适配开发。核心参数仅需关注两个:

model:指定具体的模型名称,如 gpt-5.5、deepseek-v3;

model_provider:指定模型提供商标识,如 openai、deepseek。若未指定,系统将根据 model 参数的前缀推断模型提供商,如model=“openai:gpt-5.5”,会推断为openai。

init_chat_model(
  model: str | None = None,
  *,
  model_provider: str | None = None,
  configurable_fields: Literal['any'] | list[str] | tuple[str, ...] | None = None,
  config_prefix: str | None = None,
  **kwargs: Any = {}
) -> BaseChatModel | _ConfigurableModel

统确定大模型提供商后,便会自动实例化对应厂商的原生实现类 —— 比如 OpenAI 对应 ChatOpenAI、Anthropic 对应 ChatAnthropic、DeepSeek 对应 ChatDeepSeek 等,开发者无需手动引入,只需通过init_chat_model统一入口即可完成底层适配。

image

 在实现类对象上,常用invoke和stream两种调用方法。invoke 会让大模型一次性返回完整响应对象,stream则逐Token输出内容片段。

image

 下面通过代码实战,带你彻底搞懂。首先打开命令行窗口,使用 pip 命令安装 LangChain和langchain-openai开发库。

pip install langchain langchain-openai

通过dotenv库的load_dotenv()方法,自动读取项目里的.env配置文件,把文件中所有键值对自动载入系统环境变量os.environ,后续可直接读取模型地址、密钥等配置,避免硬编码。

import os
from dotenv import load_dotenv
 
load_dotenv()

使用 LangChain 内置的init_chat_model初始化大模型,通过两个核心参数配置:model指定模型名称,model_provider指定模型对接厂商。

import os
from dotenv import load_dotenv
 
load_dotenv()
llm = init_chat_model(model="qwen3.6-plus", model_provider="openai")
print(type(llm))

当厂商参数设为openai时,底层会自动调用ChatOpenAI实现类,并从环境变量自动读取API密钥和接口地址。这里打印模型实例类型和请求基准地址,方便查看底层配置。

import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
 
load_dotenv()
llm = init_chat_model(model="qwen3.6-plus", model_provider="openai")
print(type(llm))
print("base_url:", llm.root_client.base_url)

可以省略model_provider参数,直接在模型名称前加上厂商前缀,格式为厂商:模型名,一行代码即可完成大模型初始化,写法更简洁。

import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
 
load_dotenv()
llm = init_chat_model(model="openai:qwen3.6-plus")
print(type(llm))
print("base_url:", llm.root_client.base_url)

大模型初始化完成后,使用invoke()方法发起对话请求。该方式会等待模型生成完整内容后,一次性返回全部结果。

import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
 
load_dotenv()
llm = init_chat_model(model=os.getenv("MODEL"))
result = llm.invoke("你是谁呀?")
print(result)

想要实现打字机实时输出效果,改用stream()方法循环遍历模型返回内容。end=""保证文字连续不换行,flush=True强制即时打印,实现流畅的流式对话效果。

import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
 
load_dotenv()
llm = init_chat_model(model=os.getenv("MODEL"))
for chunk in llm.stream("详细介绍AI大模型的应用"):
    if chunk.content:       
print(chunk.content, end="", flush=True)

 

posted @ 2026-05-03 09:41  老陈说编程  阅读(78)  评论(0)    收藏  举报