大模型应用中,创建OpenAI客户端的三种方式

1

程序中通常通过OpenAI客户端访问大模型,采用Client/Server方式获得大模型提供的云服务。而创建OpenAI客户端有如下三种方式:

1、

python 复制代码
client = OpenAI()

2、

python 复制代码
client = OpenAI(api_key="你的API密钥")

3、

python 复制代码
client = OpenAI(
    api_key="你的DeepSeek API密钥",  # 替换为自己的DeepSeek密钥
    base_url="https://api.deepseek.com/v1"  # DeepSeek的API基础地址(国内可直连)
)

规则

OpenAI新版SDK(v1.0+)的OpenAI类初始化时,会遵循「显式参数优先,环境变量次之,默认值兜底」的规则:

  • 默认base_urlhttps://api.openai.com/v1(OpenAI官方API地址);
  • 默认api_key:读取系统环境变量OPENAI_API_KEY
  • 显式传入的api_key/base_url会覆盖上述默认值。

三种方式对比表

对比维度 方式1:client = OpenAI() 方式2:client = OpenAI(api_key="你的API密钥") 方式3:client = OpenAI(api_key="DeepSeek密钥", base_url="DeepSeek地址")
API请求地址 默认为OpenAI官方地址(https://api.openai.com/v1 仍为OpenAI官方地址 改为DeepSeek的API地址(https://api.deepseek.com/v1
密钥来源 读取环境变量OPENAI_API_KEY 显式硬编码传入(覆盖环境变量) 显式硬编码传入DeepSeek的密钥(覆盖环境变量)
适用场景 1. 调用OpenAI官方API(GPT-3.5/4) 2. 生产环境(密钥不硬编码,更安全) 1. 临时测试OpenAI API(快速验证) 2. 环境变量不方便配置的场景 1. 调用国内DeepSeek大模型(无需翻墙) 2. 兼容OpenAI API格式的国内模型
访问要求 需翻墙/代理(OpenAI官方地址国内无法直连) 需翻墙/代理 国内直连(无需代理)
安全级别 高(密钥存在环境变量,不暴露在代码中) 低(密钥硬编码在代码里,易泄露) 低(密钥硬编码)+ 适配国内场景
兼容模型 OpenAI全系模型(gpt-3.5-turbo/gpt-4等) 同方式1 DeepSeek兼容OpenAI格式的模型(deepseek-chat/deepseek-coder等)
报错风险 环境变量未配置OPENAI_API_KEY则报认证错误 密钥错误/过期则报认证错误 密钥/地址错误则报认证/连接错误

逐方式深度解析

方式1:client = OpenAI()(最推荐的OpenAI官方调用方式)
核心逻辑
  • 不传入任何参数时,客户端会自动读取系统环境变量OPENAI_API_KEY作为密钥,请求地址默认指向OpenAI官方API。
  • 这是OpenAI官方推荐的生产环境用法(避免密钥硬编码)。
环境变量配置方法(以Windows/Linux/Mac为例)
bash 复制代码
# Linux/Mac终端(临时生效,重启终端失效)
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"

# Windows cmd(临时生效)
set OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx

# Windows PowerShell(临时生效)
$env:OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"

# 永久配置(需修改系统环境变量文件,如Linux的~/.bashrc,Mac的~/.zshrc)
优缺点
  • 优点:密钥不暴露在代码中,安全;适配团队协作/生产环境(多人共用代码无需修改密钥);
  • 缺点:需额外配置环境变量,新手易漏配导致认证错误;仍需翻墙访问OpenAI官方API。
方式2:client = OpenAI(api_key="你的API密钥")(临时测试OpenAI API)
核心逻辑
  • 显式传入OpenAI的API密钥,覆盖环境变量;但请求地址仍为OpenAI官方地址,本质还是调用OpenAI的模型。
  • 适合「快速验证API是否可用」的临时场景,不建议生产环境使用。
优缺点
  • ✅ 优点:无需配置环境变量,代码可直接运行,新手友好;
  • ❌ 缺点:密钥硬编码在代码中,若代码上传到GitHub/分享给他人,密钥会泄露(可能被恶意调用产生高额费用);仍需翻墙。
方式3:client = OpenAI(api_key="DeepSeek密钥", base_url="DeepSeek地址")(国内模型适配)
核心逻辑
  • 同时覆盖「密钥」和「请求地址」:将API请求从OpenAI官方服务器转向DeepSeek的服务器,密钥也替换为DeepSeek的(而非OpenAI的)。
  • 利用DeepSeek「兼容OpenAI API格式」的特性,无需修改核心调用逻辑,即可无缝切换为国内可直连的模型。
关键细节
  • base_url的作用:API请求的根地址,比如调用chat.completions.create时,实际请求地址为base_url + "/chat/completions"
  • DeepSeek的密钥格式和OpenAI类似(均以sk-开头),但不互通(不能用OpenAI的密钥调用DeepSeek,反之亦然)。
优缺点
  • 优点:国内直连无需翻墙;完全兼容原有OpenAI的调用逻辑(无需改messages/response_format等参数);DeepSeek成本更低(人民币计价);
  • 缺点:密钥仍硬编码(需注意安全);仅适用于兼容OpenAI API格式的模型(如DeepSeek、讯飞星火部分版本,百度文心一言需单独适配)。

延伸建议

1. 生产环境优化方式3(解决硬编码问题)

将DeepSeek的密钥和地址也配置到环境变量,避免硬编码:

python 复制代码
# 环境变量配置(Linux/Mac)
export DEEPSEEK_API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"
export DEEPSEEK_BASE_URL="https://api.deepseek.com/v1"

# Python代码
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DEEPSEEK_API_KEY"),  # 从环境变量读取
    base_url=os.getenv("DEEPSEEK_BASE_URL")
)
2. 国内其他模型的适配思路(通用)

只要模型兼容OpenAI API格式,均可通过「替换api_key+base_url」实现切换:

国内模型 base_url(示例) 模型名(示例)
讯飞星火 https://spark-api.xf-yun.com/v1 spark-3.5
百度文心一言 https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions ernie-4.0
3. 密钥安全最佳实践
  • 绝对不要将密钥提交到代码仓库(可在.gitignore中排除配置文件);
  • 生产环境使用密钥管理服务(如阿里云KMS、腾讯云SecretManager);
  • 定期轮换密钥,若怀疑泄露立即撤销并重新创建。

附:获取大模型云服务的API密钥

使用LLM API密钥的目的是大模型云端对你进行身份认证和收费。获取LLM API密钥的过程实际上就是你注册该大模型的过程。

一、获取OpenAI API密钥

申请OpenAI API密钥的核心流程是注册/登录OpenAI平台账号 → 进入API密钥管理页创建密钥 → 绑定支付方式(API调用按用量计费,新账号可能有少量试用额度)。以下是详细、可落地的步骤,同时说明关键注意事项:

1、前提条件

  1. 账号合规性:OpenAI对账号注册的地区/IP有要求(需是OpenAI支持的地区,如美国、欧盟、日本等),需确保注册/操作时的IP、手机号归属地符合合规要求(避免使用违规代理,否则账号可能被封)。
  2. 支付方式 :需绑定支持的信用卡(Visa、Mastercard、American Express等双币/外币信用卡,国内银联单币卡不支持;部分虚拟卡也可能被风控,建议用实体双币卡)。

2、分步操作指南

步骤1:访问OpenAI开发者平台

打开浏览器,进入OpenAI API官方平台:https://platform.openai.com/

  • 若已有OpenAI账号(如ChatGPT账号),直接登录;
  • 若无账号,点击「Sign up」注册:
    • 输入邮箱(建议用Gmail/Outlook等海外邮箱,国内邮箱可能不稳定);
    • 验证手机号(需支持地区的手机号,可接收短信验证码);
    • 设置密码,完成账号注册。
步骤2:进入API密钥管理页面

登录后,按以下路径操作:

  1. 点击页面右上角的个人头像 → 选择「View API keys」(或直接访问:https://platform.openai.com/api-keys);
  2. 进入密钥管理页后,点击「Create new secret key」(创建新密钥)。
步骤3:创建并保存API密钥
  1. 给密钥命名(可选,比如「my-api-key-2025」,方便区分多密钥);
  2. 点击「Create secret key」,此时会弹出包含密钥的弹窗(格式如:sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx);
    ⚠️ 关键:密钥仅显示这一次!务必立即复制并保存到安全的地方(比如加密笔记、本地文本文件),刷新/关闭弹窗后无法再查看,只能重新创建。
  3. 点击「Done」完成创建,密钥会出现在列表中(仅显示后几位,无法查看完整内容)。
步骤4:绑定支付方式(必做,否则API调用会报错)

API密钥创建后,需绑定支付方式才能正常调用(新账号可能有5\~18的试用额度,用完后按用量计费):

  1. 回到平台首页,点击右上角头像 → 选择「Billing」(账单);
  2. 进入「Payment methods」(支付方式) → 点击「Add payment method」;
  3. 输入信用卡信息(卡号、有效期、CVV码、账单地址,地址需与信用卡所属地区一致);
  4. 验证通过后,支付方式绑定完成。
步骤5:(可选)设置额度预警(避免超额扣费)

在「Billing」页面,可设置「Usage limits」(用量限制):

  • 比如设置「Monthly spending limit」(月度额度),超出后会自动暂停API调用,防止意外扣费。

3、注意事项

  1. 密钥安全
    • 绝对不要将API密钥泄露给他人(比如上传到GitHub、分享到聊天群),否则可能被恶意调用产生高额费用;
    • 若怀疑密钥泄露,立即回到「API keys」页面,点击密钥右侧的「Revoke」(撤销),并重新创建新密钥。
  2. 费用相关
    • API调用按「Token」计费(不同模型单价不同,比如gpt-3.5-turbo约0.5/100万Token,gpt-4-turbo约10/100万Token);
    • 可在「Billing → Usage」页面查看实时消费明细。
  3. 常见问题
    • 「绑定支付方式失败」:大概率是信用卡不支持(国内银联单币卡不行,需双币卡),或账单地址填写错误;
    • 「API调用报认证错误」:检查密钥是否正确、是否被撤销,或环境变量OPENAI_API_KEY是否配置正确;
    • 「账号被封」:多因IP/地区违规、支付方式异常、滥用API(比如批量刷量),需确保操作合规。
  4. 替代方案(若无法直接注册)
    • 可使用OpenAI官方合作的第三方服务商(需确认合规性),或通过企业账号申请(适合团队使用);
    • 切勿使用非官方的「共享密钥」「破解工具」,存在账号被盗、扣费风险。

4、验证密钥是否可用

创建密钥后,可通过简单的Python代码验证(替换为你的密钥):

python 复制代码
from openai import OpenAI

# 显式指定密钥(也可配置环境变量OPENAI_API_KEY)
client = OpenAI(api_key="你的API密钥")

# 调用简单的对话接口
response = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[{"role": "user", "content": "测试API密钥是否可用"}]
)

print(response.choices[0].message.content)

若能正常返回回复,说明密钥和支付方式均已配置成功。

二、获取DeepSeek API密钥

获取 DEEPSEEK_API_KEY(DeepSeek API 密钥)的流程完全适配国内用户(无需翻墙、支持手机号/邮箱注册),核心分为「注册账号→实名认证(可选)→创建密钥」三步,以下是详细、可落地的操作指南:

  • 设备:电脑端浏览器(Chrome/Edge/火狐等),国内网络直连即可;
  • 准备:手机号/邮箱(用于注册),若需使用付费额度需完成实名认证(支持中国大陆身份证)。

分步操作指南(全程国内可访问)

步骤1:访问DeepSeek开放平台

打开浏览器,进入DeepSeek官方开放平台:

👉 官网地址:https://platform.deepseek.com/

步骤2:注册/登录账号
  • 若未注册:点击页面右上角「注册」,支持两种方式:
    • 手机号注册:输入国内手机号 → 获取并填写短信验证码 → 设置密码;
    • 邮箱注册:输入邮箱(国内邮箱如QQ/163均可)→ 验证邮箱 → 设置密码;
  • 若已有账号:直接点击「登录」,输入手机号/邮箱+密码即可。
步骤3:(可选)完成实名认证(解锁更多额度)

新账号默认有少量免费额度(足够测试使用),若需更高调用额度/高频使用,需完成实名认证:

  1. 登录后点击右上角「个人头像」→ 选择「账号设置」;
  2. 进入「实名认证」标签页 → 选择「个人认证」;
  3. 输入姓名、身份证号 → 完成人脸验证(国内常见的活体检测);
  4. 验证通过后,实名认证完成(全程1-2分钟)。
步骤4:创建并保存DeepSeek API密钥

这是核心步骤,密钥是调用API的唯一凭证:

  1. 登录后,点击页面顶部导航栏的「API密钥」(或直接访问:https://platform.deepseek.com/apikeys);
  2. 进入密钥管理页后,点击「创建API密钥」按钮;
  3. (可选)给密钥命名:比如「test-key-2025」(方便区分多密钥,建议按用途命名);
  4. 点击「确认创建」,此时会弹出密钥弹窗 (格式:sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx);
    ⚠️ 关键注意:密钥仅显示这一次!关闭弹窗后无法再查看,务必立即复制并保存到安全位置(如加密笔记、本地文本文件)。
  5. 点击「完成」,密钥会出现在列表中(仅显示后几位,无法查看完整内容)。

注意事项

1. 密钥安全(重中之重)
  • 绝对不要将密钥硬编码到代码中提交到GitHub、Gitee等仓库,也不要分享给他人;
  • 若怀疑密钥泄露,立即回到「API密钥」页面,点击密钥右侧的「删除」按钮,然后重新创建新密钥;
  • 生产环境建议将密钥配置到系统环境变量(参考之前提到的DEEPSEEK_API_KEY配置方式),而非硬编码。
2. 额度与计费
  • 新用户:注册后自动获得免费额度(通常足够测试几百次调用),可在「账单中心」→「额度管理」查看;
  • 免费额度用完后:需在「账单中心」→「充值」页面充值(人民币计价,成本远低于OpenAI,1元可调用数万次deepseek-chat模型);
  • 可设置「额度预警」:在「额度管理」中设置月度/日度额度上限,避免超额扣费。
3. 密钥有效性验证

创建密钥后,可通过以下简单代码验证是否可用(替换为你的密钥):

python 复制代码
from openai import OpenAI

client = OpenAI(
    api_key="你的DeepSeek API密钥",
    base_url="https://api.deepseek.com/v1"
)

# 调用测试
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "测试密钥是否可用"}]
)

print(response.choices[0].message.content)

若能正常返回回复,说明密钥有效;若报错「认证失败」,需检查密钥是否复制正确,或是否被删除/过期。

4. 常见问题解决
  • 「创建密钥失败」:大概率是账号未登录/登录状态过期,重新登录即可;
  • 「API调用报"额度不足"」:免费额度用完,需充值或完成实名认证解锁更多免费额度;
  • 「密钥丢失」:无法找回,只能删除旧密钥并重新创建;
  • 「调用报"请求频率超限"」:免费用户有QPS(每秒调用次数)限制,可降低调用频率,或升级账号。
5. DeepSeek API密钥的权限说明
  • 单个密钥默认拥有「通用对话模型(deepseek-chat)」「代码模型(deepseek-coder)」等全量模型的调用权限;
  • 若需限制密钥权限(如仅允许调用代码模型),可在「API密钥」页面点击密钥右侧的「权限设置」,按需配置。

获取DeepSeek API密钥的流程比OpenAI简单(无需翻墙、支持国内手机号/身份证)。

相关推荐
智算菩萨2 小时前
【Python基础】AI的“重复学习”:循环语句(for, while)的奥秘
人工智能·python·学习
代码方舟2 小时前
不仅是评分:利用 Python 解析天远借贷行为验证API 的 T0-T11 借贷时间轴数据
大数据·开发语言·python
想学后端的前端工程师2 小时前
【Java JVM虚拟机深度解析:从原理到调优】
java·jvm·python
幽影相随2 小时前
TensorBoard 快速使用指南
pytorch·python·tensorboard
其美杰布-富贵-李2 小时前
TensorBoard 与 WandB 在 PyTorch Lightning 中的完整指南
人工智能·pytorch·python·监控·调优
Python永远的神2 小时前
告别循环:Python 列表推导式,让你的代码飞起来!
python
冬奇Lab2 小时前
RAG完全指南:从"死记硬背"到"开卷考试"的AI进化之路
人工智能·llm
Vic101012 小时前
Spring AOP 高级陷阱:为什么 @Before 修改参数是“伪修改“?
java·python·spring
小智RE0-走在路上3 小时前
Python学习笔记(12) --对象,类的成员方法,构造方法,其他内置方法,封装,继承,多态,类型注解
笔记·python·学习