当前位置: 首页 > news >正文

OpenAI SDK 环境搭建教程

OpenAI SDK 环境搭建教程

不管你后面用 LangChain / LangGraph / 原生 Agent,OpenAI SDK 都是绕不开的底座——而且国产模型(DeepSeek、Qwen、GLM)全兼容这套接口,装一次能吃遍天。


一、前置条件

  • Python ≥ 3.9(推荐 3.10/3.11,3.13 刚出部分库还没跟上)

  • 一个 API Key(OpenAI 官方 / DeepSeek / 阿里百炼 / 腾讯云 AI 都行)

检查:

python --version # 或 python3 --version

二、项目初始化(建议走虚拟环境)

别全局装,踩过坑的都懂。

mkdir my_agent && cd my_agent python -m venv .venv # 激活 # macOS/Linux: source .venv/bin/activate # Windows: # .venv\Scripts\activate

激活后命令行前面会出现(.venv)标记,说明进沙箱了。


三、安装 OpenAI SDK

pip install --upgrade openai python-dotenv
  • openai:SDK 本体

  • python-dotenv:从.env文件读 API Key,避免硬编码

💡 当前最新大版本是openai >= 1.0(2023 年底重构过,和 0.x 旧版 API 不兼容)。如果你抄的老教程报错ChatCompletion.create() got an unexpected keyword argument...,就是版本不对。


四、配置 API Key(关键步骤)

1. 建.env文件(千万别提交到 Git!)

touch .env

.env内容:

# OpenAI 官方 OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx OPENAI_BASE_URL=https://api.openai.com/v1 # 或用 DeepSeek(便宜,国内直连) # OPENAI_API_KEY=sk-xxxxxxxxx # OPENAI_BASE_URL=https://api.deepseek.com/v1 # 或用 Qwen(阿里百炼) # OPENAI_API_KEY=sk-xxxxxxxxx # OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

📌 为什么配BASE_URL?国产模型 API 格式和 OpenAI 完全兼容,只换地址和 Key 就能用,后面代码一行不用改

2..gitignore别忘了

.env .venv/ __pycache__/

五、最小可运行示例

新建main.py

import os from openai import OpenAI from dotenv import load_dotenv load_dotenv() client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL"), ) resp = client.chat.completions.create( model="gpt-4o-mini", # DeepSeek 换成 "deepseek-chat" messages=[ {"role": "system", "content": "你是一个 Oracle DBA 专家"}, {"role": "user", "content": "什么场景不适合建索引?用三点说明"} ], temperature=0.7, max_tokens=500, ) print(resp.choices[0].message.content)

跑:

python main.py

能输出 → 环境 OK。


六、几个必知的 SDK 用法

1. 流式输出(Streaming)

Agent 对话必备,不然用户干等。

stream = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "解释 Oracle GROUP BY"}], stream=True, ) for chunk in stream: content = chunk.choices[0].delta.content if content: print(content, end="", flush=True)

2. Function Calling(Agent 工具调用的根基)

tools = [{ "type": "function", "function": { "name": "query_oracle", "description": "执行 Oracle SQL", "parameters": { "type": "object", "properties": { "sql": {"type": "string", "description": "SQL 语句"} }, "required": ["sql"] } } }] resp = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "查 emp 表 10 号部门多少人"}], tools=tools, ) print(resp.choices[0].message.tool_calls)

3. 结构化输出(Pydantic 模式,v1.40+)

from pydantic import BaseModel class SqlAnswer(BaseModel): sql: str explanation: str resp = client.beta.chat.completions.parse( model="gpt-4o-mini", messages=[{"role": "user", "content": "写一条查 10 号部门员工的 SQL"}], response_format=SqlAnswer, ) print(resp.choices[0].message.parsed.sql)

七、国产模型对照表(BASE_URL + 模型名)

模型

BASE_URL

model 名

OpenAI 官方

https://api.openai.com/v1

gpt-4o-mini/gpt-4o

DeepSeek

https://api.deepseek.com/v1

deepseek-chat/deepseek-reasoner

Qwen(阿里百炼)

https://dashscope.aliyuncs.com/compatible-mode/v1

qwen-plus/qwen-max

GLM(智谱)

https://open.bigmodel.cn/api/paas/v4

glm-4-flash

腾讯 Hunyuan

https://api.hunyuan.cloud.tencent.com/v1

hunyuan-lite


八、常见报错排错

报错

原因

解决

AuthenticationError 401

Key 错了 / 没加载.env

检查os.getenv("OPENAI_API_KEY")是否 None

NotFoundError 404

model 名拼错 / base_url 不对

核对模型名,DeepSeek 是deepseek-chat不是gpt-4o

RateLimitError 429

配额用完 / 新 Key 限流

等或换 Key

connect timeout

网络(OpenAI 官方需梯子)

换国产模型或配代理

AttributeError: ChatCompletion.create

openai 0.x 老版本

pip install -U openai升到 1.x


九、项目结构建议(从小开始)

my_agent/ ├── .venv/ ├── .env # Key(不上 Git) ├── .gitignore ├── requirements.txt # pip freeze > requirements.txt ├── main.py # 入口 └── agent/ ├── __init__.py ├── tools.py # 工具函数 └── prompts.py # System Prompt 模板

requirements.txt至少锁:

openai>=1.60 python-dotenv

http://www.jsqmd.com/news/1099623/

相关文章:

  • Xshell+Xftp使用教程
  • 主流三维光学轮廓仪国产品牌与技术解析
  • 操作简便吗?8款AI写作辅助网站综合榜,毕业答辩稳了!
  • TactiX实测:星际2战术训练神器,支持离线REP解析与MOD扩展
  • 2026 在上海如何找一家专业又靠谱的小程序定制开发公司
  • 告别命令行!用JGit在Java项目里优雅地操作Git(附完整API使用示例)
  • SpringBoot(springboot的类加载和传统的双亲委派有什么区别、如何按顺序实例化Bean)
  • 】[SampleVirtualTexture节点]原理解析与实际应用
  • 只看光明的一面:当机器学习失去“反面教材“时 | Positive-Only Learning深度解读
  • MySQL8-Windows安装教程
  • 【第 8 篇:数据接口管理——从模拟到真实与企业级接口治理】
  • 2026最新年版Java八股文,7天背完通过面试
  • 2026亚太EMBA QS排名客观测评与科学择校指南
  • 机器人电源方案评审清单:别只看电压电流,还要看这 6 件事
  • 3步掌握Windows安卓应用安装:APK Installer跨平台革命
  • Three.js 轨道控制器教程
  • 量子态制备的哈密顿量框架与硬件优化实践
  • MH Markets将亮相2026香港Wiki Finance Expo,深化全球金融行业交流
  • 单链表反转:Python/Java/C++三解
  • 保姆级教程:用Halcon的Socket算子5分钟搞定机器视觉与PLC的TCP通讯
  • 简单选择排序算法
  • 2026年本地部署的AI数字人直播系统 Top5 实测
  • 独立开发推荐安装的skills
  • WS2812FX使用过程中的疑惑点记录
  • OpenClaw 核心组件全解:Gateway、Agent、Skills、Memory 的职责与协作关系
  • LeetCode 32 最长有效括号:python3 题解
  • Linux入门实践作业(一)
  • AI教材生成秘籍:低查重AI写教材,快速产出优质教材书稿!
  • ArkUI 底部操作栏及卡片整体美化布局开发
  • 参考文献格式乱如麻?高校导师推荐这几个AI论文写作工具