005.LangChain Model

该教程旨在带大家从 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_pfrequency_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)
相关推荐
abcefg_h22 分钟前
MCP 实战指南:如何在项目中使用 Model Context Protocol 及其通信原理
开发语言·后端·golang·mcp
AI多Agent协作实战派26 分钟前
AI多Agent协作系统实战(四十八):改个名,整个AI团队都不认识人了
后端
wei_shuo43 分钟前
KES 故障诊断与应急响应:问题排查、根因分析与应急预案
后端
LinMINGJing00743 分钟前
postgre分区方式
后端
王中阳Go1 小时前
业务代码凭什么不能直接调 Agent?——我在律所 AI 项目里做的 Harness 运行时治理
人工智能·后端·程序员
SomeB1oody2 小时前
【RustyML入门】7.2. 深入模型持久化
开发语言·后端·机器学习·rust·教程
知几蜗牛2 小时前
0 后端 · 0 数据库 · 0 备案:用 AI 两天搓出的股票管理系统,开源了
前端·后端·llm
风流 少年2 小时前
Spring AI 2.0:阿里云百炼平台(工作流应用)
java·后端·spring
__zRainy__2 小时前
Node系列 · 数据库:单表查询
数据库·后端·mysql·node.js
诺伦2 小时前
Rust 错误处理实战:从 unwrap 到优雅 Result 的进阶之路
开发语言·后端·rust