该教程旨在带大家从 0 起步,掌握用 Python 开发大模型应用的技能。若当前内容让你感到晦涩,可回溯本合集的前期文章,降低学习难度。
1. 模型分类
类别 | 作用 | 输入 | 输出 |
---|---|---|---|
LLM | 文本补全 | 字符串 | 字符串 |
Chat Model | 对话优化 | 消息列表 | 一条消息 |
DeepSeek 的 deepseek-chat
属于 Chat Model,在中文场景下表现优异。
2. LangChain 与 DeepSeek 的关系
- LangChain 是一个开源框架,帮助你快速集成多种大模型。
- LangChain 已内置 DeepSeek 的封装类
ChatDeepSeek
,接口与 OpenAI 完全一致,无需额外适配。
3. 安装依赖
shell
pip install langchain-deepseek
# 如提示找不到,可改用
# pip install langchain-community[deepseek]
4. 创建模型实例
python
from langchain_deepseek import ChatDeepSeek
model = ChatDeepSeek(
model="deepseek-chat",
temperature=0.7,
max_tokens=512,
api_key=os.getenv("DEEPSEEK_API_KEY")
)
- temperature 越大,回答越随机;越小,越稳定。
- max_tokens 控制返回的最大 token 数。
- 其他原生参数(如
top_p
、frequency_penalty
)可以通过model_kwargs={...}
传入:
python
model = ChatDeepSeek(
model="deepseek-chat",
temperature=0.7,
max_tokens=512,
api_key=os.getenv("DEEPSEEK_API_KEY"),
model_kwargs={
"top_p": 0.9,
"frequency_penalty": 0.5
}
)
5. 消息结构详解
LangChain 的 Chat Model 接收 消息列表,列表元素可以是:
消息类型 | 用途 | 构造方式 |
---|---|---|
SystemMessage | 给 AI 的系统指令 | SystemMessage(content="你是助手") |
HumanMessage | 用户输入 | HumanMessage(content="你好") |
AIMessage | AI 历史回复 | AIMessage(content="你好!") |
示例:构建一条系统消息 + 一条用户消息
python
from langchain_core.messages import SystemMessage, HumanMessage
messages = [
SystemMessage(content="你是一个乐于助人的助手,回答简洁,用中文。"),
HumanMessage(content="用一句话介绍 LangChain")
]
6. 调用模型并获取回复
python
response = model.invoke(messages)
print(response.content)
返回类型为 AIMessage
,内容位于 response.content
中。
示例输出:
LangChain 是一个开源框架,通过链式调用、记忆和工具快速构建大模型应用。
7. 流式输出
如果想让回答逐字打印,提高用户体验:
ini
for chunk in model.stream(messages):
print(chunk.content, end="", flush=True)
8. 更多模型(LangChain 社区)
除 DeepSeek 外,langchain-community
还支持:
平台 | 类名 | 说明 |
---|---|---|
百度 | ChatBaiduQianfan |
千帆大模型 |
腾讯 | ChatHunyuan |
混元大模型 |
阿里 | ChatTongyi |
通义千问 |
只需替换类名与模型名称,其余代码保持一致。
9. 完整代码
保存为 deepseek_demo.py
,直接运行:
python
from langchain_deepseek import ChatDeepSeek
from langchain_core.messages import SystemMessage, HumanMessage
# 创建模型(自动读取环境变量 DEEPSEEK_API_KEY)
model = ChatDeepSeek(
model="deepseek-chat",
temperature=0.7,
max_tokens=512,
api_key=os.getenv("DEEPSEEK_API_KEY")
)
# 构造消息
messages = [
SystemMessage(content="你是一个乐于助人的助手。回答简洁,用中文。"),
HumanMessage(content="用一句话介绍 LangChain")
]
# 调用并打印
response = model.invoke(messages)
print(response.content)