LangChain 对接阿里云百炼 Demo

2 阅读3分钟

一、前置准备:账号注册 & 获取 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)消耗的 token619
prompt_tokens输入 token 数14
finish_reason结束原因,stop 表示正常结束stop