LangChain 入门 Model 的初始化和调用

目录

LangChain 支持现在市面上大部分常见的大语言模型(LLM),并且提供了各个模型的对应依赖库。

早期版本初始化模型

python 复制代码
# 引入对应模型提供商的类,然后创建对象选择合适的模型
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-5.2")

随着Agent越来越复杂,有可能在一个 Agent 中同时调用多个不同的模型,在之间进行切换的场景,如果用老的方式,就需要导入不同模型对应的类,然后创建多个模型的对象

LangChain v1.0 后,引用了新的调用方式 init_chat_model,不需要导入,只需要指定模型名称就行了,LangChain会根据模型名称自动去推断使用的哪个模型提供商 (Model Provider) 自动化调用的方式,仅限官网列出来的模型

LangChain 支持的模型列表参考官网链接:

https://docs.langchain.com/oss/python/integrations/providers/overview

模型初始化

基于名称推断模型提供商

python 复制代码
from langchain.chat_models import init_chat_model

model = init_chat_model(model="gpt-5.2")

引入依赖

复制代码
# 具体模型见:https://docs.langchain.com/oss/python/integrations/providers/overview
uv add langchain langchain-deepseek

配置环境

.env

复制代码
DEEPSEEK_API_KEY=sk-xxx

# 1. 加载环境变更
from  dotenv import load_dotenv

load_dotenv()

初始化模型

python 复制代码
# 导入 Langchain 的初始化模型的函数
from langchain.chat_models import init_chat_model

# 调用 init_chat_model 函数初始化模型
# 参数 model 用来指定模型名称, Langchain 会根据模型名字自动设定 base_url, 并从环境变更中获取api_key
model = init_chat_model(model = "deepseek-chat")

print(type(model))
# <class 'langchain_deepseek.chat_models.ChatDeepSeek'>

自定义模型提供商

init_chat_model 默认会根据模型名称自动确定模型提供者的 base_url,并从 env读取api_key,但前提是必须是 langchain支持的模型平台,

对于其它模型,必须自定义模型参数来访问。例如,访问阿里云百炼模型。

  • 在环境变量中定义 api_key 和 base_url
  • init_chat_model 中指定 model、model_provider、base_url和api_key

配置环境

.env

复制代码
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
DASHSCOPE_API_KEY=sk-1dd415eXXXXX

# 1. 加载环境变更
from  dotenv import load_dotenv

load_dotenv()

import os

base_url = os.getenv("DASHSCOPE_BASE_URL")
api_key = os.getenv("DASHSCOPE_API_KEY")

model = init_chat_model(
    model = "qwen3.6-plus",
    model_provider="openai", # 指定模型提供者(阿里兼容 openai)
    base_url = base_url,
    api_key = api_key
)

print(type(model))
# <class 'langchain_openai.chat_models.base.ChatOpenAI'>

调整模型参数

除了修改模型提供者以外,init_chat_model 函数允许我们调整模型参数,例如:

  • temperature:控制生成文本的随机性,值越小越确定,值越大越随机
  • max_tokens:控制生成文本的最大长度
  • top_p:控制生成文本的多样性,值越小越多样,值越大越确定
  • timeout:控制生成文本的超时时间
  • maxretries:控制生成文本的最大重试次数
python 复制代码
model = init_chat_model(
    model = "qwen3.6-plus",
    model_provider="openai", # 指定模型提供者(阿里兼容 openai)
    base_url = base_url,
    api_key = api_key,
    temperature = 1.5,
    top_p = 0.9,
)

使用 model 类

在 LangChain 社区,除了官方提供的 Model(可通过 init_chat_model 创建),还有些类是社区提供的,具体模型地址,见官网:https://docs.langchain.com/oss/python/integrations/chat

引入依赖

https://help.aliyun.com/zh/model-studio/use-bailian-in-langchain?spm=a2c4g.11186623.help-menu-2400256.d_2_14_9.742b6608iZZTPH#2d28bf78a17ww

复制代码
# 安装社区依赖
uv add langchain-community

# 阿里云百炼依赖
uv add dashscope

初始化模型

python 复制代码
from langchain_community.chat_models.tongyi import ChatTongyi

# 使用 Model 类初始化模型
model = ChatTongyi(
    model="qwen-plus",   # 此处以qwen-plus为例,您可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
    # other params...
)

print(type(model))

模型调用

invoke

invoke 阻塞式调用,需要等待较长时间才能看到AI返回的结果

python 复制代码
# 通过 invoke 函数访问模型,需要阻塞等待模型生成结果
response = model.invoke("你是谁?")

# 查看响应内容
print(response)
复制代码
content='我是 Qwen(通义千问),由阿里巴巴集团旗下通义实验室自主研发的大语言模型。有什么我可以帮你的吗?' additional_kwargs={'refusal': None} response_metadata={'token_usage': {'completion_tokens': 320, 'prompt_tokens': 12, 'total_tokens': 332, 'completion_tokens_details': {'accepted_prediction_tokens': None, 'audio_tokens': None, 'reasoning_tokens': 289, 'rejected_prediction_tokens': None, 'text_tokens': 320}, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': None, 'text_tokens': 12}}, 'model_provider': 'openai', 'model_name': 'qwen3.6-plus', 'system_fingerprint': None, 'id': 'chatcmpl-0c7fb416-1262-9397-94b3-442189459371', 'finish_reason': 'stop', 'logprobs': None} id='lc_run--019e91b1-dc91-7890-b4a6-a9aa208d6f08-0' tool_calls=[] invalid_tool_calls=[] usage_metadata={'input_tokens': 12, 'output_tokens': 320, 'total_tokens': 332, 'input_token_details': {}, 'output_token_details': {'reasoning': 289}}

stream

stream则是流式调用,可以实时看到AI返回的一个词

复制代码
response = model.stream("你是谁?")
for r in response:
    print(r.content, end="",flush=True)

你好!我是 Qwen(通义千问),由阿里巴巴集团旗下通义实验室自主研发的大语言模型。很高兴为你服务,请问有什么我可以帮你的吗?

智能体

创建智能体

Langchain 提供了一个 create_agent 函数用来快速创建智能体,有两种选择

python 复制代码
from langchain.agents import create_agent

# 使用前面初始化好的 model
agent = create_agent(model = model)

# 指定 Model 名称,和 init_chat_model 一样需要 Langchain 官方支持的模型
agent = create_agent(model = "deepseek-chat")

调用智能体

智能体调用与模型调用类似,

  • invoke:阻塞式调用
  • stream: 流式访问
    但要注意的是,智能体调用需要传入一个dict,其中必须包含一个 messages 字段,也就是消息的列表。

invoke

python 复制代码
response = agent.invoke(
   {"messages":[{"role":"user","content":"你是谁?"}]}
)

print(response)

stream

python 复制代码
messages = agent.stream(
    {"messages":[{"role":"user","content":"你是谁?"}]},
    stream_mode="messages"
)
for token,metadata in messages:
    if token.content:
       print(token.content, end="",flush=True)

完整代码

pyproject.toml

复制代码
[project]
name = "vip-langchain"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "langchain>=1.3.4",
    "langchain-deepseek>=1.0.1",
    "notebook>=7.5.6",
    "python-dotenv>=1.2.2",
]

[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true

models.py

复制代码
# 导入 Langchain 的初始化模型的函数
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from  dotenv import load_dotenv
import os

# 加载环境变量
load_dotenv()

# 获取环境变更值
base_url = os.getenv("DASHSCOPE_BASE_URL")
api_key = os.getenv("DASHSCOPE_API_KEY")

print("初始化模型")
# 初始化模型
model = init_chat_model(
    model = "qwen3.6-plus",
    model_provider="openai", # 指定模型提供者(阿里兼容 openai)
    base_url = base_url,
    api_key = api_key,
    temperature = 1.5,
    top_p = 0.9,
)

print("调用模型")
# 调用模型
response = model.stream("你是谁?")
for r in response:
    print(r.content, end="",flush=True)


print("创建智能体")
# 使用前面初始化好的 model
agent = create_agent(model = model)

# 指定 Model 名称,和 init_chat_model 一样需要 Langchain 官方支持的模型
# agent = create_agent(model = "deepseek-chat")

print("调用智能体")
messages = agent.stream(
    {"messages":[{"role":"user","content":"你是谁?"}]},
    stream_mode="messages"
)

for token,metadata in messages:
    if token.content:
       print(token.content, end="",flush=True)
相关推荐
好家伙VCC1 小时前
Qdrant + LangChain 实战:构建毫秒级语义检索服务
java·langchain
wuhen_n3 小时前
AI Agent 入门:从零实现 LangChain 基础智能体
前端·langchain·ai编程
lhxcc_fly4 小时前
6.LangChain--RAG
langchain·llm·rag
wuhen_n4 小时前
LangChain 自定义 Tool 封装:打造专属 AI 能力工具集
前端·langchain·ai编程
lhxcc_fly5 小时前
6.1RAG--文档加载器
langchain·llm·rag
Irissgwe6 小时前
十、LangGraph能力详解(2)LangGraph入门教程,构建AI工作流
ai·langchain·graph·langgraph
深蓝电商API9 小时前
用LangChain + Playwright打造智能网页数据助手
爬虫·langchain
繁星星繁10 小时前
LangChain 初探:模型调用、链式编排与运行机制
前端·chrome·langchain