官网文档地址
Deep Agents 概述 - LangChain 文档 - LangChain 教程
环境准备
创建项目

安装依赖
pip install -U langchain==1.2.12
也可以安装一下读取环境变量的依赖
pip install dotenv
对话模型调用
使用deepseek模型
先安装deepseek依赖
pip install langchain-deepseek
deepseek官网
创建.env文件,配置环境变量

调用模型
import os
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
#2、模型的初始化
deepseek = ChatDeepSeek(
model='deepseek-v4-flash',
api_key=DEEPSEEK_API_KEY,
base_url=DEEPSEEK_BASE_URL
)
#3、模型调用
res = deepseek.invoke('请用一句话介绍你自己')
print(res)
响应

硅基流动平台(其他模型只要替换模型名称即可)
硅基流动平台有很多免费的模型使用(10B以下)

复制模型名称

查看调用方法

在.env中配置环境变量

代码实现
import os
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
#调用硅基流动平台
load_dotenv(override=True)
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
GUI_KEY=os.getenv('GUI_KEY')
GUI_BASE_URL=os.getenv('GUI_BASE_URL')
#2、模型的初始化
chat = ChatDeepSeek(
model='deepseek-ai/DeepSeek-OCR',
api_key=GUI_KEY,
base_url=GUI_BASE_URL
)
#3、模型调用
re = chat.invoke('你是谁')
print(re)
响应

智普模型
硅基流动平台
只需要在原来deepseek的基础上修改一下模型名称即可

#智普模型
import os
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
load_dotenv(override=True)
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
GUI_KEY=os.getenv('GUI_KEY')
GUI_BASE_URL=os.getenv('GUI_BASE_URL')
#2、模型的初始化
zhipu = ChatDeepSeek(
model='THUDM/GLM-Z1-9B-0414',
api_key=GUI_KEY,
base_url=GUI_BASE_URL
)
#3、模型调用
re1 = zhipu.invoke('你是谁')
print(re1)
响应

混元模型
硅基流动平台
只需要在原来deepseek的基础上修改一下模型名称即可

#混元模型
import os
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
load_dotenv(override=True)
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
GUI_KEY=os.getenv('GUI_KEY')
GUI_BASE_URL=os.getenv('GUI_BASE_URL')
#2、模型的初始化
hunyuan = ChatDeepSeek(
model='tencent/Hunyuan-MT-7B',
api_key=GUI_KEY,
base_url=GUI_BASE_URL
)
#3、模型调用
re1 = hunyuan.invoke('你是谁')
print(re1)
响应

chatOpenAI兼容写法
#openAI写法
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
#2、模型的初始化
openAi = ChatOpenAI(
model='deepseek-v4-flash',
api_key=DEEPSEEK_API_KEY,
base_url=DEEPSEEK_BASE_URL
)
r = openAi.invoke("你好啊,你是谁")
print(r)
响应

langchain中模型初始化写法
init_chat_model是LangChain1.x中推出的用于初始化聊天模型的统一接口。只要是LangChain支持的模型都可以处理,它会根据模型名称自动选择对应的模型类初始化实例。
from langchain.chat_models import init_chat_model
model = init_chat_model(
"provider:model_name",#提供商:模型名称
api_key='',#API密钥(可选,可从环境变量读取)
temperature=0.7,#温度参数(可选)
max_tokens=1000,#最大 token 数(可选)
**kwargs #其他模型特定参数
)
问题 :init_chat_model和直接使用 ChatTongyi、ChatOpenAI、ChatDeepSeek有什么区别?
回答:init_chat_model是LangChain1.0的统一接口,优势包括:
- 统一接口:无需记住每个提供商的不同初始化方式(以一致的方式初始化)
- 易于切换:简化了智能体系统中模型切换策略(只需修改模型字符串)
- 简洁明了:更简洁的语法,减少样板代码,
- 自动适配:内部根据模型标识自动选择对应的驱动类(ChatOpenAl、ChatDeepSeek)
调用deepseek官网
from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
model = init_chat_model(
model='deepseek-v4-flash',
api_key=DEEPSEEK_API_KEY,
base_url=DEEPSEEK_BASE_URL
)
res = model.invoke('你是谁啊')
print(res)

调用硅基流动的deepseek
from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
GUI_KEY =os.getenv("GUI_KEY")
GUI_BASE_URL =os.getenv("GUI_BASE_URL")
model = init_chat_model(
model='deepseek-ai/DeepSeek-OCR',
api_key=GUI_KEY,
base_url=GUI_BASE_URL
)
res = model.invoke('你是谁啊,用中文回答')
print(res)

模型调用
在 LangChain 中,模型调用(Invocation)是指通过特定方法触发大语言模型生成输出的过程。根据不同的应用场景和需求,LangChain 提供了几种核心的调用方式,主要是 invoke()、stream() 和 batch() 方法,以及它们的异步版本 ainvoke()、astream() 和 abatch(),下面将系统地介绍这些方法。
invoke():阻塞式,一次性返回完整结果。适用于问答、批处理任务、无需实时反馈的场景。ainvoke():非阻塞式,提高系统吞吐量。适用于高并发 Web 应用、IO 密集型任务。stream():流式输出,实时返回每个 token。适用于聊天机器人、长文本生成、需要提升用户体验的交互应用。astream():非阻塞式,提高系统吞吐量。适用于高并发 Web 应用、IO 密集型任务。(注:原文图片中此处拼写为asteam(),此处已修正为正确拼写)。batch():批量处理多个输入。适用于高并发场景,需要同时处理大量请求。abatch():非阻塞式,提高系统吞吐量。适用于高并发 Web 应用、IO 密集型任务
阻塞式
import os
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
#2、模型的初始化
chat = ChatDeepSeek(
model='deepseek-v4-flash',
api_key=DEEPSEEK_API_KEY,
base_url=DEEPSEEK_BASE_URL
)
#3、模型调用
re = chat.invoke('你是谁')
print(re)
流式
import os
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
#1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先
load_dotenv(override=True)
DEEPSEEK_BASE_URL =os.getenv("DEEPSEEK_BASE_URL")
DEEPSEEK_API_KEY =os.getenv("DEEPSEEK_API_KEY")
#2、模型的初始化
chat = ChatDeepSeek(
model='deepseek-v4-flash',
api_key=DEEPSEEK_API_KEY,
base_url=DEEPSEEK_BASE_URL
)
#3、模型调用
response = chat.stream('你是谁')
for res in response:
print(res.content)
三种参数
messages = [
{'role':'system','content':'你是一个数学老师'},
{'role':'user','content':'1+1=?'},
{'role':'assistant','content':'2'},
{'role':'user','content':'我刚刚问了什么'},
]
re = chat.invoke(messages)
print(re.content)
