🎯 课程主题
使用模型厂商提供的专用类(ChatDeepSeek)调用DeepSeek官网的大模型,演示三种配置方式:.env配置文件法(推荐)、自动加载法(优化)、硬编码法(不推荐)。
📝 核心知识点
1. 模型调用的三个核心参数
- 概念说明:无论使用哪种方式调用大模型,都涉及三个必须参数:
base_url / api_base:模型服务的API端点地址model / model_name:具体使用的模型名称api_key:身份验证密钥
- 关键细节:不同模型厂商的类中,参数命名可能不同(如有的叫
base_url,有的叫api_base),需查看源码确认。
2. 方案一:.env配置文件法(推荐)
- 概念说明:将API密钥和base_url等敏感信息写入项目根目录的
.env文件中,通过load_dotenv加载,再用os.getenv读取。 - 关键细节:
load_dotenv(override=True):当系统环境变量与.env文件有同名变量时,以.env文件中的值为准。- 在
.env中定义DEEPSEEK_API_KEY和DEEPSEEK_BASE_URL等常量。
3. 方案二:自动加载法(优化)
- 概念说明:LangChain的模型类(如
ChatDeepSeek)在初始化时会自动从环境变量中查找特定名称的常量,无需显式读取。 - 关键细节:
ChatDeepSeek会自动查找名为DEEPSEEK_API_KEY的环境变量作为api_key。base_url有默认值,若环境变量指定了则以环境变量为准,未指定则使用默认值。- 只有
.env中变量名与类内部约定的名称一致时,才能省略显式传参。
4. 方案三:硬编码法(不推荐)
- 概念说明:直接在代码中写明
api_key和base_url的值。 - 关键细节:存在严重安全风险——代码上传到GitHub等平台后密钥会泄露,可能导致费用被盗扣。仅作演示,不推荐在实际开发中使用。
🏗️ 架构与工作流
调用流程:① 加载配置文件 (load_dotenv) → ② 获取配置信息 (os.getenv) → ③ 初始化模型 (ChatDeepSeek(...)) → ④ 调用模型 (model.invoke(...))。
💻 代码实战
# ========== 举例一:.env配置文件法(推荐) ==========
import os
from dotenv import load_dotenv
from langchain_deepseek import ChatDeepSeek
# ① 加载 .env 配置文件
load_dotenv(override=True)
# ② 从配置文件中获取信息
api_key = os.getenv("DEEPSEEK_API_KEY")
base_url = os.getenv("DEEPSEEK_BASE_URL")
# ③ 初始化模型
model = ChatDeepSeek(
model="deepseek-v4-flash",
api_key=api_key,
api_base=base_url
)
# ④ 调用模型
response = model.invoke("请用一句话介绍你自己")
print(response)
# ========== 举例二:自动加载法(优化) ==========
from langchain_deepseek import ChatDeepSeek
# 仅需指定 model,api_key 和 api_base 会自动从环境变量中加载
# 前提:.env 中变量名必须为 DEEPSEEK_API_KEY 和 DEEPSEEK_BASE_URL
model = ChatDeepSeek(model="deepseek-v4-flash")
response = model.invoke("请用一句话介绍你自己")
print(response)
# ========== 举例三:硬编码法(不推荐!仅作演示) ==========
from langchain_deepseek import ChatDeepSeek
model = ChatDeepSeek(
model="deepseek-v4-flash",
api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxx", # 切勿泄露
api_base="https://api.deepseek.com"
)
response = model.invoke("请用一句话介绍你自己")
print(response)
.env 文件示例:
# 从 DeepSeek 官网获取的配置信息
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
DEEPSEEK_BASE_URL=https://api.deepseek.com
⚠️ 常见问题与避坑指南
- 参数名不统一:
ChatDeepSeek中URL参数叫api_base,不是base_url。不同类的参数名可能不同,务必查看源码或文档。 - .env文件位置:
.env应放在项目根目录下,而非子目录中。 - API Key创建后立即复制:DeepSeek官网创建API Key后,关闭弹窗即无法再次查看,必须当场复制保存。
- DeepSeek官网需充值:至少充值1元才能使用API。
- 模型选择:
deepseek-v4-flash参数较小、价格便宜,适合学习和测试;旧模型可能已被弃用,建议使用最新模型。
💡 个人总结与延伸
本节的三种配置方式体现了一个重要的工程实践:敏感信息与代码分离。自动加载法是最优雅的方案——既保证了安全性,又减少了冗余代码。理解厂商类内部的环境变量查找机制(通过阅读源码中的Field默认值)是掌握LangChain模型调用规律的关键。后续调用任何模型厂商的专用类时,都可以先查看源码中约定的环境变量名,按此命名即可实现自动加载。