OpenAI Python SDK 入门实战:从 0 到常见能力全覆盖
1. 先建立正确认知:你在调用什么
当你写下这行代码:
from openai import OpenAI |
本质是在做三件事:
- 通过 SDK 生成标准 HTTP 请求
- 带上身份凭证(
OPENAI_API_KEY) - 请求云端模型服务并获取结果
也就是说,openai 库是你与模型服务之间的“客户端封装层”,它让你不用手写底层 HTTP 细节。
2. 环境准备(最小可用)
2.1 安装依赖
pip install openai |
2.2 配置 API Key(推荐环境变量)
export OPENAI_API_KEY="sk-xxxx" |
可选:
export OPENAI_MODEL="gpt-4o-mini" |
OPENAI_BASE_URL只在代理或兼容端点场景下使用,标准接入可以不设置。
3. OpenAI Python 库核心方法速查表
基于 openai>=1.0 官方库(from openai import OpenAI → client = OpenAI())整理:常用入口、作用与主要参数。下列调用均挂在 client 上;与 0.x 时代的 ChatCompletion.create() 等类方法写法不同,请勿混淆。
| 方法及作用 | 参数及参数含义 |
|---|---|
client.chat.completions.create()核心对话接口:多轮对话、问答、文本创作(GPT-3.5/4/4o 等) |
① model:必选,模型名称(如 gpt-4o-mini)② messages:必选,消息列表,如 [{"role":"user","content":"..."}]③ temperature:可选,随机性(约 0~2;越低越稳,越高越发散) ④ max_tokens:可选,生成长度上限(token) ⑤ top_p:可选,核采样(0~1;常与 temperature 二选一调优) ⑥ stream:可选,是否流式输出 ⑦ stop:可选,停止生成的标记序列 ⑧ frequency_penalty:可选,重复惩罚(约 -2~2) |
client.embeddings.create()文本向量化:语义检索、聚类、相似度 |
① model:必选,嵌入模型(如 text-embedding-3-small)② input:必选,单条字符串或多条列表 ③ encoding_format:可选,向量编码(如默认浮点 / base64)④ dimensions:可选,输出维度(部分新嵌入模型支持) |
client.completions.create()文本补全(单段 prompt 续写);多用于 Instruct 旧式模型 |
① model:必选(如 gpt-3.5-turbo-instruct)② prompt:必选,输入提示 ③ temperature / max_tokens / stop 等与 Chat 类似,含义相近 |
client.images.generate()文生图 |
① prompt:必选,画面描述 ② n:可选,张数(依模型限制,如 1~10) ③ size:可选,如 1024x1024 等④ response_format:可选,如 url、b64_json⑤ model:可选,如 dall-e-3、dall-e-2 |
client.audio.transcriptions.create()语音转文字 |
① file:必选,音频文件对象(如 mp3/wav/m4a) ② model:必选,识别模型(常用 whisper-1)③ language:可选,语言提示(如 zh)④ prompt:可选,风格/词汇提示以提升准确率 ⑤ response_format:可选,如 json、text |
client.files.create()上传文件:微调、Batch、Assistants 等 |
① file:必选,待上传文件(二进制可读对象或路径按 SDK 用法传入) ② purpose:必选,用途(如 fine-tune、assistants、batch 等,以文档为准) |
client.fine_tuning.jobs.create()创建微调任务(openai≥1.0 中为 jobs 资源;非旧名 FineTunes.create) |
① training_file:必选,已上传文件的 file id ② model:可选,基底模型 ③ hyperparameters:可选,如 n_epochs 等(以当前 API 为准) |
OpenAI(...)初始化客户端:密钥、代理、超时等 |
① api_key:API 密钥(可省略,读环境变量 OPENAI_API_KEY)② base_url:可选,兼容端点 / 代理根 URL ③ timeout:可选,请求超时 ④ max_retries:可选,失败重试次数 |
4. OpenAI Python SDK 方法知识字典(按方法分类)
4.1 OpenAI(...):创建客户端
- 作用:初始化 SDK 客户端
- 常用参数:
api_key、base_url - 推荐:优先用环境变量
OPENAI_API_KEY
常见传参方式(按场景选一个):
import os |
4.2 client.chat.completions.create(...):对话生成
- 作用:最常用文本生成入口
- 常用参数:
model、messages、temperature、max_tokens - 常见读取(取模型回复正文):
resp.choices[0].message.content
为什么这样读:
resp是完整响应对象choices是候选答案列表(通常至少 1 个)choices[0]表示第一个候选答案message.content才是最终文本内容
resp = client.chat.completions.create( |
4.3 client.chat.completions.create(..., stream=True):流式输出
- 作用:边生成边返回,适合聊天 UI
- 读取方式:遍历
chunk,读取chunk.choices[0].delta.content
stream = client.chat.completions.create( |
4.4 response_format={"type":"json_object"}:JSON 结构化输出
- 作用:让模型按 JSON 返回,便于程序处理
- 常用搭配:
json.loads(...) - 注意:仍要做 JSON 解析异常兜底
import json |
4.5 tools / tool_choice:Function Calling
- 作用:让模型决定是否调用你定义的函数
- 核心流程:模型返回
tool_calls-> 代码执行函数 -> 把工具结果回传模型
import json |
关键入参/出参对应关系:
- 入参:
model、messages、tools、tool_choice - 第一轮出参:
first.choices[0].message.tool_calls - 工具回传消息:
{"role":"tool","tool_call_id":"...","content":"..."} - 最终出参:
second.choices[0].message.content
4.6 client.embeddings.create(...):向量生成
- 作用:把文本转向量
- 适用:RAG、检索、相似度、去重
- 读取:
resp.data[0].embedding
emb = client.embeddings.create( |
4.7 client.files.*:文件管理
client.files.create(file=..., purpose="..."):上传文件client.files.list():列文件client.files.retrieve(file_id):查文件信息client.files.delete(file_id):删文件
purpose取值按具体能力文档要求设置。
4.8 client.models.*:模型管理
client.models.list():查看账号可用模型client.models.retrieve(model_id):查看单模型详情
4.9 Chat 常见参数速查
model:模型名称messages:消息数组(system/user/assistant)temperature:控制输出随机性/发散度(低=更稳定,高=更多样)max_tokens:最大输出长度stream:是否流式tools:工具定义tool_choice:工具调用策略timeout:请求超时时间
temperature 实战建议:
0~0.3:问答、抽取、JSON 输出(优先稳定)0.4~0.7:通用助手、改写润色(平衡稳定和表达)0.8~1.0:创意写作、头脑风暴(更发散,需防跑偏)
一句记忆:要“准”就低一点,要“新”就高一点。
补充:temperature 不增加模型知识量,主要影响输出风格和稳定性。
4.10 常见返回字段速查
choices:候选结果message.content:文本内容message.tool_calls:工具调用建议usage:token 统计id:请求 ID
5. 除了 OpenAI ,还有哪些选择?
这篇主线仍是 openai 库。为了避免“学了一个 SDK 就被平台锁死”,你可以了解常见的替代供应商与对应 SDK:
- OpenAI:
openai(Python 包) - Azure OpenAI:常见仍用
openai(配 Azure 端点与部署名);也可走 Azure 自家 SDK 生态 - Anthropic:
anthropic - Google Gemini:
google-genai(新)/google-generativeai(旧) - 阿里云通义千问(DashScope):
dashscope(或 OpenAI 兼容方式接入) - 本地自托管(Ollama):
ollama(也可通过 OpenAI 兼容网关)
各家都提供了官方文档,建议至少收藏这些入口:
- OpenAI Docs: https://platform.openai.com/docs
- Azure OpenAI 文档: https://learn.microsoft.com/azure/ai-services/openai/
- Anthropic Docs: https://docs.anthropic.com/
- Gemini Docs: https://ai.google.dev/
- DashScope 文档: https://help.aliyun.com/zh/model-studio/
- Ollama Docs: https://ollama.com/docs
它们的功能是不是差不多?大方向是相似的,细节并不完全一样。
共同能力(大多数平台都有):
- 文本对话(chat)
- 流式输出(streaming)
- 工具调用(function/tool calling)
- 向量(embeddings)
常见差异(建议单独关注):
- 接口协议差异:同名能力的请求参数可能不同(如 tool schema 字段、响应字段)
- 模型能力差异:同样是“多模态/工具调用”,稳定性和效果会有差别
- 企业能力差异:鉴权方式、私网部署、审计合规、区域可用性不同
- 计费与限流差异:价格模型、QPS/TPM 配额和超限策略不同
实践建议:主教程先用 openai 跑通,再做一层“供应商适配层”(Provider Adapter),把差异封装在一处。
6. 相关阅读(建议收藏)
官方文档(首选)
- OpenAI Developer Docs
- OpenAI API Reference
- OpenAI Python SDK(GitHub)
- Model Overview
- Rate limits 指南
- Prompt Engineering 指南
进阶学习(与工程化更相关)
- Cookbook(官方示例集合)
- Function Calling Guide
- Embeddings Guide
- Safety Best Practices
- Azure OpenAI 文档
- Anthropic Docs
- Google AI for Developers(Gemini)
- DashScope 文档(通义千问)
- Ollama 官方文档
7. 小结
如果你是新手,建议按这个顺序练习:
chat.completions.create(先把单轮对话跑通)stream=True(做出更好的交互体验)response_format=json_object(让结果可编程)tools/function calling(让模型调用真实能力)embeddings(为 RAG 和检索做准备)
当你把这 5 块串起来时,就已经具备了搭建一个可用 AI 功能模块的核心能力。
评论











