一、前置准备:账号注册 & 获取 API Key
首先需要前往 阿里云百炼平台(bailian.console.aliyun.com)注册账号,并在控制台创建 API Key。
进入控制台后,点击右上角头像 → API-KEY 管理,创建一个新的 Key,复制保存好,后续会用到。
注意: Key 拥有账号级别的调用权限,切勿提交到 Git 仓库,这也是我们要用 .env 文件管理的原因。
二、安装依赖
本项目只需要两个核心库:langchain-openai 用于调用模型,python-dotenv 用于读取 .env 配置文件。
bash复制
# 安装 LangChain OpenAI 适配器
pip install langchain-openai
# 安装 .env 文件读取工具
pip install python-dotenv
阿里云百炼的 API 接口与 OpenAI 完全兼容,因此我们无需安装 dashscope SDK,直接用 langchain-openai 即可,通过修改 base_url 即可切换到百炼的服务地址。
三、配置 .env 环境变量文件
在项目根目录下新建 openai.env 文件(注意文件名和后续代码中的 load_dotenv 参数保持一致),填入以下内容:
dotenv — openai.env复制
# 阿里云百炼 API Key(以 sk- 开头)
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 百炼兼容 OpenAI 的接口地址
OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
# 选择要使用的模型,这里使用 Qwen3.5 旗舰版
OPENAI_MODEL=qwen3.5-122b-a10b
项目结构如下所示:
my-langchain-demo/
├── main.py # 主程序
├── openai.env # 环境变量(不要提交 Git)
└── .gitignore # 把 *.env 加入忽略列表
记得在 .gitignore 中添加 *.env,防止 API Key 泄漏:
echo "*.env" >> .gitignore
四、核心代码实现
新建 main.py,完整代码如下,逐行都有注释说明:
from langchain_openai import ChatOpenAI
import os
from dotenv import load_dotenv
# 读取 openai.env 文件,将环境变量注入到当前进程
load_dotenv("openai.env")
# 初始化 ChatOpenAI 模型,通过 base_url 指向阿里云百炼服务
model = ChatOpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL"),
model=os.getenv("OPENAI_MODEL")
)
# 发送一个问题给模型
question = "What's your name?"
# 调用 invoke 方法,同步等待模型回复
response = model.invoke(question)
# 打印完整的响应对象(包含 token 用量等元数据)
print(response)
代码要点解析
① load_dotenv("openai.env") — 从指定文件加载环境变量。如果不传参数,默认读取项目根目录下的 .env 文件。
② ChatOpenAI — LangChain 对 OpenAI Chat 接口的封装,支持通过 base_url 参数替换为任意兼容 OpenAI 格式的第三方接口,百炼正好支持此协议。
③ model.invoke(question) — LangChain 的 LCEL(LangChain Expression Language)统一调用接口,返回的是 AIMessage 对象,其中 .content 字段即为模型回复的文本内容。
五、运行结果解读
执行 python main.py,终端会输出以下内容:
content='My name is Qwen3.5. How can I help you today?' additional_kwargs={'refusal': None} response_metadata={ 'token_usage': { 'completion_tokens': 640, 'prompt_tokens': 14, 'total_tokens': 654, 'completion_tokens_details': { 'reasoning_tokens': 619, ← 思考链消耗的 token 'text_tokens': 21 ← 最终回答消耗的 token } }, 'model_name': 'qwen3.5-122b-a10b', 'finish_reason': 'stop' } id='lc_run--019d4815-2d6d-7aa3-8468-328331cec1c7-0'
关键字段说明
输出的 AIMessage 对象包含了丰富的信息,下表梳理了常用字段:
| 字段 | 含义 | 示例值 |
|---|---|---|
content | 模型最终回答的文本 | My name is Qwen3.5... |
completion_tokens | 输出 token 总数(含思考链) | 640 |
reasoning_tokens | 思考链(CoT)消耗的 token | 619 |
prompt_tokens | 输入 token 数 | 14 |
finish_reason | 结束原因,stop 表示正常结束 | stop |