1. LangChain的安装与API配置
1.1 环境搭建
首先,我们需要搭建项目所需用到的环境。在这里我使用了 python 3.12作为解释器,并采用 .venv 作为项目的基本环境。
在构建完基础环境之后,需要使用下方pip指令安装LangChain:
pip install langchain_openai==1.7.0
静等pip指令安装完毕,基础环境就已经搭建完成。
1.2 API Key的配置
1.2.1 获取 DeepSeek 的 API Key
首先需要进入DeepSeek 开放平台,完成注册登陆之后点击「API Keys」,输入API Key对应的名称之后会得到对应的API Key。这个API Key后面会用到,可以先保存下来,且不可再二次查看key。
1.2.2 获取 Qwen 的 API Key
首先,需要进入千问AI平台。在注册与登陆之后,同样点击「API Keys」,随后点击「创建 API Key」并输入名称,即可得到Qwen的对应key。
2. 项目代码搭建
2.1 创建模型对象
LangChain帮我们封装了请求各家模型的ChatOpenAI方法,千问和DeepSeek模型均支持通过OpenAI的接口进行调用,因此我们只需要指定base_url与model就可以快捷的切换调用的模型。
from langchain_openai import ChatOpenAI
# 1.2 节拿到的 Key
API_KEY = "sk-xxxxx"
# DeepSeek 换成 https://api.deepseek.com
BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
# DeepSeek 用 deepseek-chat
MODEL = "qwen3.7-plus"
llm = ChatOpenAI(model=MODEL, api_key=API_KEY, base_url=BASE_URL)
这里的llm只是最简易的配置参数,可以设定的常用参数如下:
| 参数 | 用途 |
|---|---|
| model | 模型名称,写错会在调用时报 404 或 model not found |
| api_key / base_url | 认证与接口地址,base_url 决定了请求发给谁 |
| temperature | 0 到 2,越低回答越稳定,越高越发散,默认 1 |
| max_tokens | 限制一次回答的最大长度 |
2.2 三种消息类型
之前我们只是申明了需要调用的模型的相关参数,现在我们需要通过引入消息来给模型提供上下文。在一般的Agent系统中,消息的来源主要分为系统消息、人发送的消息、模型回复的消息,为了方便区分消息来源,这三种消息在LangChain中分别对应为:
| 名称 | 用处 |
|---|---|
SystemMessage | 给模型的人设与回答的规则,例如身份、语气、回答语言、禁止事项,用户看不到这些,但是模型的回答会受到规则与人设的约束。 |
HumanMessage | 用户实际输入的内容,也是我们要问的问题。 |
AIMessage | 模型的回答。通常通过 llm.invoke()的方式去获得。保存模型的回答,可以让他知道之前说过的话。 |
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
messages = [
SystemMessage("你是一个高级的助手,需要友善地回答用户的问题。"),
HumanMessage("你好,简单介绍下你自己吧"),
]
2.3 调用模型并读取结果
想要获取模型调用的结果,使用invoke即可拿到模型的全部返回内容。(逐词返回将在后续章节中介绍)
response = llm.invoke(messages)
print(response.content)
invoke 是 LangChain 里最基本的调用方式:传入消息列表,阻塞等待,返回一个 AIMessage。除了 content 以外,返回对象上还有几样有用的信息:
print(type(response).__name__) # AIMessage
print(response.response_metadata) # 模型名、结束原因等
print(response.usage_metadata) # 本次输入 / 输出 token 数,用来估算费用
2.4 完整代码
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
# 填入刚刚获取的sk开头的API KEY,注意不要用错了
API_KEY = "sk-xxxxx•••••••••••••••••••"
# 如果是DeepSeek,切换为 https://api.deepseek.com
BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
# qwen可选 qwen-plus, qwen3.7-max 等
# deepseek可选 deepseek-chat
MODEL = "qwen3.7-plus"
llm = ChatOpenAI(model=MODEL, api_key=API_KEY, base_url=BASE_URL)
user_messsage = input("输入以获取回答:")
messages = [
SystemMessage("你是一个高级的助手,需要友善的回答用户的问题。"),
HumanMessage(user_messsage),
]
response = llm.invoke(messages)
print(response.content)
示例输出:
输入以获取回答:你好,简单介绍下你自己吧
你好!很高兴和你交流。我是一个高级AI助手,随时准备为你提供专业、贴心且高效的帮助。
我的能力涵盖了很多方面,比如解答各类知识问题、协助文案创作、提供逻辑分析、制定计划,或者只是陪你聊聊天、分享日常。我致力于用准确的信息和友善的态度,成为你工作和生活中的得力伙伴。
请问今天有什么我可以为你效劳的吗?
无需登录,点一个表情告诉我。