API开发01:API基础与认证 - 打开AI服务的大门
API开发01:API基础与认证 - 打开AI服务的大门
📖 系列导航
- 本篇:API基础与认证(你正在阅读)
- 下一篇:OpenAI API快速入门
- 系列:API开发实战(共8篇)
一个真实的场景
你刚刚注册了 ChatGPT,觉得 AI 很神奇。然后你看到有人说”可以通过 API 调用 GPT”,你兴冲冲地打开文档,却看到一堆术语:
“发送 HTTP POST 请求到 https://api.openai.com/v1/chat/completions,在 Header 中添加 Authorization: Bearer YOUR_API_KEY…”
HTTP 是什么?POST 是什么?Header 又是什么?
别慌,这篇文章就是为你准备的。我们会用最通俗的语言、最直观的图解,帮你理解这些概念。
一、什么是 API?
1.1 API 的本质
API(Application Programming Interface,应用程序编程接口),本质上就是程序之间的”对话规则”。
用一个类比理解:
你去餐厅点餐:
├─ 你 = 客户端(你的代码)
├─ 服务员 = API(接口)
├─ 厨房 = 服务器(AI 模型)
└─ 菜单 = API 文档
你的流程:
1. 看菜单 → 查文档
2. 告诉服务员"我要一份宫保鸡丁" → 发送请求
3. 服务员把订单送到厨房 → API 转发请求
4. 厨房做好菜 → 服务器处理
5. 服务员端菜给你 → 返回响应
API 就是一套”点餐规则”:
- 你能点什么菜(能调用哪些功能)
- 怎么点(请求格式是什么)
- 菜怎么上(响应格式是什么)
1.2 为什么 AI 服务需要 API?
如果每次用 AI 都要打开网页,会非常低效。通过 API:
# 不用打开浏览器,一行代码调用 AI
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
API 让 AI 成为代码的一部分,可以:
- ✅ 自动化工作流(批量处理文档)
- ✅ 集成到你的应用(聊天机器人、写作助手)
- ✅ 24小时无人值守运行
- ✅ 精确控制参数(temperature、max_tokens)
1.3 AI API 能做什么?
| 功能 | 说明 | 应用场景 |
|---|---|---|
| 对话聊天 | 与 AI 多轮对话 | 客服机器人、写作助手 |
| 文本生成 | 生成文章、代码、翻译 | 内容创作、代码补全 |
| 图像理解 | 分析图片内容 | 图片标注、OCR、审核 |
| 图像生成 | 根据描述生成图片 | 设计辅助、创意生成 |
| 语音转文字 | 音频转录 | 会议记录、字幕生成 |
| Embedding | 文本向量化 | 语义搜索、RAG |
二、HTTP 基础:互联网的”送餐系统”
2.1 什么是 HTTP?
HTTP(HyperText Transfer Protocol,超文本传输协议),是互联网上最常用的通信协议。
简单理解:HTTP = 送餐系统
一个完整的 HTTP 交互包含:
┌─────────┐ ┌─────────┐
│ 客户端 │ ──── 请求 ────→ │ 服务器 │
│(你的代码)│ │(AI API) │
│ │ ←─── 响应 ──── │ │
└─────────┘ └─────────┘
- 请求(Request):你发送的消息
- 响应(Response):服务器返回的结果
- URL(地址):你要访问的”餐厅位置”
2.2 HTTP 请求的四个要素
一个完整的 HTTP 请求包含四个部分:
┌────────────────────────────────────────────────────────────┐
│ 1. 请求行(Request Line) │
│ POST /v1/chat/completions HTTP/1.1 │
├────────────────────────────────────────────────────────────┤
│ 2. 请求头(Headers) │
│ Content-Type: application/json │
│ Authorization: Bearer sk-xxx │
├────────────────────────────────────────────────────────────┤
│ 3. 空行(Empty Line) │
│ │
├────────────────────────────────────────────────────────────┤
│ 4. 请求体(Body) │
│ { │
│ "model": "gpt-4", │
│ "messages": [{"role": "user", "content": "你好"}] │
│ } │
└────────────────────────────────────────────────────────────┘
要素详解
| 要素 | 说明 | 示例 |
|---|---|---|
| 请求行 | 方法 + 路径 + 协议版本 | POST /v1/chat/completions HTTP/1.1 |
| 请求头 | 元数据信息 | Content-Type: application/json |
| 空行 | 分隔头部和正文 | (必须有空行) |
| 请求体 | 实际数据 | JSON 格式的参数 |
2.3 常见的 HTTP 方法
| 方法 | 用途 | AI API 场景 | 是否有Body |
|---|---|---|---|
| GET | 获取数据 | 查询模型列表、账户余额 | 否 |
| POST | 创建数据 | 发送对话请求、生成内容 | 是 |
| PUT | 更新数据 | 修改配置(较少用) | 是 |
| DELETE | 删除数据 | 删除文件(较少用) | 否 |
| PATCH | 部分更新 | 更新部分配置(较少用) | 是 |
AI API 主要用 GET 和 POST:
- GET:查询信息(不消耗资源,免费)
- POST:调用模型(消耗 Token,收费)
2.4 HTTP 状态码
状态码告诉你请求是否成功:
| 状态码 | 类型 | 含义 | AI API 常见情况 |
|---|---|---|---|
| 200 | 成功 | OK | 请求正常处理 ✅ |
| 201 | 成功 | Created | 资源创建成功 |
| 400 | 客户端错误 | Bad Request | 参数格式不对 |
| 401 | 客户端错误 | Unauthorized | API Key 无效或过期 |
| 403 | 客户端错误 | Forbidden | 无权限访问 |
| 404 | 客户端错误 | Not Found | 路径错误 |
| 429 | 客户端错误 | Too Many Requests | 超过速率限制 |
| 500 | 服务器错误 | Internal Server Error | AI 服务端故障 |
| 502 | 服务器错误 | Bad Gateway | 网关错误 |
| 503 | 服务器错误 | Service Unavailable | 服务不可用 |
状态码快速判断:
2xx → 成功,继续处理 ✅
4xx → 你的问题,检查请求 🔍
5xx → 服务器问题,稍后重试 ⏳
三、请求实战:如何正确”点餐”
3.1 一个完整的 API 调用
以 OpenAI Chat Completions API 为例:
# 用 curl 命令发送请求
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxx..." \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "你好"}]
}'
拆解这个请求:
① URL:请求地址
https://api.openai.com/v1/chat/completions
│ │ │ │
│ │ │ └─ 功能端点
│ │ └────── API 版本
│ └──────────────────────── 域名
└────────────────────────────────── 协议(必须 HTTPS)
② Method:请求方法
# 默认是 POST(-X POST 可省略)
curl -X POST ...
③ Headers:请求头
-H "Content-Type: application/json" # 告诉服务器:我发的是 JSON
-H "Authorization: Bearer sk-xxx..." # 身份验证:这是我的 API Key
④ Body:请求体
{
"model": "gpt-4", # 用哪个模型
"messages": [ # 对话内容
{"role": "user", "content": "你好"}
]
}
3.2 响应结构解析
成功调用后,API 会返回 JSON 格式的响应:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1677858242,
"model": "gpt-4",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!有什么我可以帮助你的吗?"
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 15,
"total_tokens": 25
}
}
响应字段说明:
| 字段 | 说明 |
|---|---|
id | 请求唯一标识 |
choices[0].message.content | AI 的回复内容 ⭐ |
choices[0].finish_reason | 结束原因(stop/length) |
usage.prompt_tokens | 输入消耗的 Token |
usage.completion_tokens | 输出消耗的 Token |
usage.total_tokens | 总消耗 Token |
四、API Key:你的”会员卡”
4.1 什么是 API Key?
API Key = 你的会员卡号
API Key 的作用:
1. 身份识别:你是谁
2. 权限控制:你能用什么功能
3. 用量统计:你用了多少资源
4. 计费依据:你该付多少钱
API Key 格式示例:
OpenAI: sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DeepSeek: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ChatGLM: xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxx
阿里云: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4.2 API Key 的获取流程
以 OpenAI 为例:
步骤1:访问 https://platform.openai.com
步骤2:注册/登录账号
步骤3:验证手机号(需要国外号码)
步骤4:进入 Dashboard → API Keys
步骤5:点击 "Create new secret key"
步骤6:输入 Key 名称(如 "my-first-key")
步骤7:⚠️ 立即复制保存(只显示一次!)
步骤8:充值或绑定付款方式
常见问题:
| 问题 | 解决方案 |
|---|---|
| 手机验证失败 | 使用 SMS-Activate、5Sim 等接码平台 |
| 无法访问网站 | 使用 VPN 或代理 |
| 充值失败 | 使用国外信用卡或虚拟卡 |
| Key 找不到了 | 删除重建一个,旧 Key 作废 |
4.3 API Key 安全最佳实践
❌ 错误做法
# 错误1:直接写在代码里
api_key = "sk-xxxxxxxxxxxxxxxx"
# 错误2:提交到 Git
git add config.py # 里面包含 API Key
git push # Key 泄露到远程仓库!
# 错误3:分享给别人
# "我把 Key 发你,你帮我测试一下" ← 危险!
# 错误4:Key 写在日志里
print(f"Using API Key: {api_key}") # 日志会记录 Key
✅ 正确做法
方法1:环境变量(最推荐)
# 在终端临时设置(关闭终端后失效)
export OPENAI_API_KEY="sk-xxx"
# 永久设置(写入配置文件)
# macOS/Linux: ~/.zshrc 或 ~/.bashrc
echo 'export OPENAI_API_KEY="sk-xxx"' >> ~/.zshrc
source ~/.zshrc
# Windows: 系统环境变量设置
# 或在 PowerShell 中:
$env:OPENAI_API_KEY="sk-xxx"
# Python 中读取环境变量
import os
api_key = os.environ.get("OPENAI_API_KEY")
if not api_key:
raise ValueError("请设置 OPENAI_API_KEY 环境变量")
# OpenAI SDK 会自动读取 OPENAI_API_KEY
from openai import OpenAI
client = OpenAI() # 无需传 api_key
方法2:.env 文件(推荐团队项目)
# 创建 .env 文件
echo "OPENAI_API_KEY=sk-xxx" > .env
echo "DEEPSEEK_API_KEY=sk-xxx" >> .env
# ⚠️ 添加到 .gitignore
echo ".env" >> .gitignore
# 使用 python-dotenv
from dotenv import load_dotenv
import os
load_dotenv() # 加载 .env 文件
api_key = os.environ.get("OPENAI_API_KEY")
方法3:配置文件(企业级)
# config.py(加入 .gitignore)
import os
class Config:
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
DEEPSEEK_API_KEY = os.environ.get("DEEPSEEK_API_KEY")
# 也可以从加密配置中心读取
# OPENAI_API_KEY = get_from_vault("openai/api_key")
4.4 Key 泄露后的处理
万一 Key 泄露了:
1. 立即删除泄露的 Key
└─ OpenAI Dashboard → API Keys → 点击删除
2. 生成新的 Key
└─ 点击 "Create new secret key"
3. 更新所有使用该 Key 的地方
└─ 更新环境变量、配置文件等
4. 检查账单
└─ Dashboard → Usage → 查看异常消耗
5. 联系客服(如有异常扣费)
└─ 发送邮件到 support@openai.com
五、认证方式:如何证明”我是我”
5.1 常见的认证方式对比
| 方式 | 安全性 | 实现难度 | 使用场景 |
|---|---|---|---|
| API Key in Header | ⭐⭐⭐ | 简单 | OpenAI、DeepSeek |
| Bearer Token | ⭐⭐⭐⭐ | 简单 | 大多数现代 API |
| API Key in URL | ⭐⭐ | 最简单 | 部分老旧 API(不推荐) |
| 签名认证 | ⭐⭐⭐⭐⭐ | 复杂 | AWS、阿里云 |
| OAuth2 | ⭐⭐⭐⭐⭐ | 最复杂 | 第三方授权登录 |
5.2 Bearer Token 认证详解
Bearer Token 是最常用的认证方式:
# Header 格式
Authorization: Bearer <your-api-key>
# curl 示例
curl -H "Authorization: Bearer sk-xxx" https://api.example.com/v1/chat
为什么叫 “Bearer”?
- Bearer = 持有者
- 意思是:“Whoever holds this token can access”(谁持有这个令牌就能访问)
- 所以 Token 必须保密,谁拿到谁就能用!
5.3 不同 API 的认证格式
# OpenAI / DeepSeek / 大多数 API
headers = {
"Authorization": "Bearer sk-xxx",
"Content-Type": "application/json"
}
# 阿里云(需要签名)
headers = {
"Authorization": f"acs {access_key_id}:{signature}",
"Content-Type": "application/json",
"Date": "Thu, 18 Apr 2026 08:00:00 GMT"
}
# 部分老旧 API(Key 在 URL 中)
url = f"https://api.example.com/v1/chat?api_key={api_key}"
# ⚠️ 不推荐,URL 会被记录在日志中
六、调试工具:你的”后厨监控”
6.1 Postman:图形化调试神器
Postman 是最流行的 API 调试工具。
优点:
- ✅ 图形化界面,无需写代码
- ✅ 保存请求历史
- ✅ 自动生成代码片段
- ✅ 团队协作共享
- ✅ 环境变量管理
基本使用:
1. 下载安装:https://www.postman.com/downloads/
2. 创建新请求
└─ New → HTTP Request
3. 填写信息
├─ Method: POST
├─ URL: https://api.openai.com/v1/chat/completions
├─ Headers:
│ ├─ Content-Type: application/json
│ └─ Authorization: Bearer sk-xxx
└─ Body: {"model": "gpt-4", "messages": [...]}
4. 点击 Send
5. 查看响应
└─ Response → Body / Headers / Status
6.2 curl:命令行调试利器
curl 是终端中的 HTTP 客户端。
优点:
- ✅ 系统自带,无需安装
- ✅ 可编写脚本自动化
- ✅ 适合服务器环境
- ✅ 便于分享(命令可直接复制)
常用参数:
# 基本请求
curl https://api.example.com
# 指定方法
curl -X POST https://api.example.com
# 添加 Header
curl -H "Content-Type: application/json" https://api.example.com
# 添加请求体
curl -d '{"key": "value"}' https://api.example.com
# 显示详细信息(调试用)
curl -v https://api.example.com
# 只显示响应头
curl -I https://api.example.com
# 保存响应到文件
curl -o response.json https://api.example.com
# 跟随重定向
curl -L https://api.example.com
# 设置超时(秒)
curl --max-time 30 https://api.example.com
# 完整示例:调用 OpenAI API
curl https://api.openai.com/v1/chat/completions \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxx" \
-d '{"model":"gpt-4","messages":[{"role":"user","content":"你好"}]}' \
-v
6.3 Python requests 库
import requests
# GET 请求
response = requests.get(
"https://api.openai.com/v1/models",
headers={"Authorization": "Bearer sk-xxx"}
)
print(response.json())
# POST 请求
response = requests.post(
"https://api.openai.com/v1/chat/completions",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer sk-xxx"
},
json={
"model": "gpt-4",
"messages": [{"role": "user", "content": "你好"}]
}
)
# 查看响应
print(f"状态码: {response.status_code}")
print(f"响应体: {response.json()}")
print(f"响应头: {response.headers}")
# 错误处理
if response.status_code == 200:
data = response.json()
print(data["choices"][0]["message"]["content"])
elif response.status_code == 401:
print("API Key 无效")
elif response.status_code == 429:
print("请求过多,请稍后重试")
else:
print(f"错误: {response.status_code}")
6.4 工具对比
| 需求 | 推荐工具 |
|---|---|
| 学习 API 调用 | Postman |
| 快速测试单个请求 | curl |
| 写脚本自动化 | Python requests |
| 生产环境集成 | OpenAI Python SDK |
| 团队协作共享 | Postman Workspace |
| 服务器环境调试 | curl |
七、错误处理:当”点餐”出问题时
7.1 常见错误类型
import requests
from openai import OpenAI, AuthenticationError, RateLimitError, APIError
client = OpenAI()
try:
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "你好"}]
)
except AuthenticationError as e:
# 401: API Key 无效或过期
print(f"认证失败: {e}")
print("请检查 API Key 是否正确")
except RateLimitError as e:
# 429: 请求过多
print(f"触发限流: {e}")
print("请稍后重试或升级套餐")
except APIError as e:
# 500: 服务器错误
print(f"服务器错误: {e}")
print("AI 服务暂时不可用,请稍后重试")
except requests.exceptions.Timeout:
# 请求超时
print("请求超时,请检查网络连接")
except requests.exceptions.ConnectionError:
# 连接失败
print("网络连接失败,请检查网络设置")
except Exception as e:
# 其他未知错误
print(f"未知错误: {type(e).__name__}: {e}")
7.2 重试策略
遇到临时性错误(如 429、500)时,应该自动重试:
import time
from openai import RateLimitError, APIError
def call_with_retry(client, messages, max_retries=3, base_delay=1):
"""带重试的 API 调用"""
for attempt in range(max_retries):
try:
return client.chat.completions.create(
model="gpt-4",
messages=messages
)
except RateLimitError:
if attempt < max_retries - 1:
# 指数退避:1s, 2s, 4s
wait_time = base_delay * (2 ** attempt)
print(f"触发限流,{wait_time}秒后重试... (尝试 {attempt + 1}/{max_retries})")
time.sleep(wait_time)
else:
raise # 达到最大重试次数,抛出异常
except APIError as e:
if attempt < max_retries - 1:
wait_time = base_delay * (2 ** attempt)
print(f"服务器错误,{wait_time}秒后重试...")
time.sleep(wait_time)
else:
raise
# 使用
try:
response = call_with_retry(client, [{"role": "user", "content": "你好"}])
print(response.choices[0].message.content)
except Exception as e:
print(f"重试失败: {e}")
7.3 错误监控与日志
import logging
from datetime import datetime
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filename='api_calls.log'
)
logger = logging.getLogger(__name__)
def call_with_logging(client, messages):
"""带日志的 API 调用"""
start_time = time.time()
try:
response = client.chat.completions.create(
model="gpt-4",
messages=messages
)
# 记录成功调用
duration = time.time() - start_time
logger.info(
f"API 调用成功 | "
f"模型: gpt-4 | "
f"耗时: {duration:.2f}s | "
f"Token: {response.usage.total_tokens}"
)
return response
except Exception as e:
# 记录失败调用
duration = time.time() - start_time
logger.error(
f"API 调用失败 | "
f"错误: {type(e).__name__} | "
f"耗时: {duration:.2f}s | "
f"消息: {str(e)[:100]}"
)
raise
八、实战演练:你的第一个 API 调用
8.1 环境准备
# 1. 安装 Python(如未安装)
# macOS: brew install python
# Windows: 从 python.org 下载安装
# 2. 创建项目目录
mkdir my-first-api-project
cd my-first-api-project
# 3. 创建虚拟环境
python -m venv venv
source venv/bin/activate # macOS/Linux
# venv\Scripts\activate # Windows
# 4. 安装依赖
pip install openai python-dotenv requests
8.2 创建第一个程序
步骤1:创建 .env 文件
# .env
OPENAI_API_KEY=sk-your-actual-key-here
步骤2:创建 main.py
# main.py
import os
from dotenv import load_dotenv
from openai import OpenAI
# 加载环境变量
load_dotenv()
# 初始化客户端
client = OpenAI()
def chat(message: str) -> str:
"""发送消息并获取回复"""
try:
response = client.chat.completions.create(
model="gpt-4o-mini", # 使用便宜的模型
messages=[{"role": "user", "content": message}]
)
return response.choices[0].message.content
except Exception as e:
return f"错误: {e}"
# 主程序
if __name__ == "__main__":
print("🤖 AI 聊天机器人(输入 'quit' 退出)")
print("-" * 40)
while True:
user_input = input("你: ").strip()
if user_input.lower() == 'quit':
print("再见!")
break
if not user_input:
continue
print("AI: ", end="")
response = chat(user_input)
print(response)
步骤3:运行程序
python main.py
# 输出示例:
# 🤖 AI 聊天机器人(输入 'quit' 退出)
# ----------------------------------------
# 你: 你好
# AI: 你好!很高兴见到你。有什么我可以帮助你的吗?
# 你: 今天天气怎么样?
# AI: 抱歉,我无法获取实时天气信息...
# 你: quit
# 再见!
8.3 进阶:多轮对话
# chat_history.py
from openai import OpenAI
client = OpenAI()
class ChatSession:
"""带历史记录的聊天会话"""
def __init__(self, system_prompt="你是一个友好的助手"):
self.messages = [
{"role": "system", "content": system_prompt}
]
def chat(self, user_input: str) -> str:
"""发送消息并保持历史"""
# 添加用户消息
self.messages.append({
"role": "user",
"content": user_input
})
# 调用 API
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=self.messages
)
# 获取 AI 回复
assistant_message = response.choices[0].message.content
# 添加到历史
self.messages.append({
"role": "assistant",
"content": assistant_message
})
return assistant_message
def clear_history(self):
"""清空历史(保留 system prompt)"""
self.messages = [self.messages[0]]
def get_history(self):
"""获取对话历史"""
return self.messages.copy()
# 使用
session = ChatSession("你是一个专业的Python老师")
print(session.chat("什么是装饰器?"))
print(session.chat("给我举个例子")) # AI 会记住上下文
print(session.chat("有什么注意事项?"))
九、常见问题 FAQ
Q1: API Key 和 ChatGPT 账号密码一样吗?
不一样。
- ChatGPT 账号:登录网页版用
- API Key:程序调用用
ChatGPT Plus 订阅和 API 是分开计费的,订阅了 Plus 不代表 API 有免费额度。
Q2: 为什么我的 API 调用报 401 错误?
可能的原因:
- API Key 拼写错误(复制时多了空格)
- API Key 过期或被删除
- 环境变量没设置对
- 账户余额不足(新账户需要充值)
Q3: 请求太多会怎么样?
会触发 429 错误(Too Many Requests)。解决方案:
- 实现重试机制(指数退避)
- 降低请求频率
- 升级套餐(提高限额)
Q4: API 调用有延迟怎么办?
正常情况下 OpenAI API 响应时间是 1-10 秒:
- 简单问题:1-3 秒
- 复杂推理:5-15 秒
- 长文本生成:可能更长
如果超时,可以:
- 设置更长的 timeout(默认 10 分钟)
- 使用流式输出(stream=True)
- 换一个区域(如果网络不好)
Q5: 如何知道我花了多少钱?
# 查看最近 30 天用量
response = client.usage.list(
start_date="2026-03-18",
end_date="2026-04-18"
)
for day in response.data:
print(f"{day.date}: {day.total_tokens} tokens, ${day.total_cost}")
或者在 Dashboard → Usage 查看可视化图表。
本篇要点总结
| 概念 | 核心要点 |
|---|---|
| API | 程序之间的”对话规则”,像餐厅点餐系统 |
| HTTP | 互联网通信协议,GET 获取,POST 发送 |
| 请求结构 | URL + Method + Headers + Body |
| 状态码 | 2xx 成功,4xx 你的问题,5xx 服务器问题 |
| API Key | 你的会员卡,必须保密!用环境变量存储 |
| 认证方式 | Bearer Token 是行业标准 |
| 调试工具 | Postman(图形)、curl(命令行)、requests(Python) |
| 错误处理 | 捕获异常 + 重试策略 + 日志记录 |
实战练习
练习1:用 curl 调用 OpenAI API
# 将 YOUR_API_KEY 替换为你的实际 Key
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "用一句话介绍Python"}]
}'
练习2:用 Python 实现简单聊天
from openai import OpenAI
client = OpenAI()
while True:
msg = input("你: ")
if msg == "quit":
break
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": msg}]
)
print("AI:", response.choices[0].message.content)
练习3:计算调用成本
# 1000 字输入 + 500 字输出,用 gpt-4o-mini
# 成本是多少?
input_tokens = 1000
output_tokens = 500
model = "gpt-4o-mini" # $0.15/$0.6 per 1M tokens
cost = (1000 * 0.15 + 500 * 0.6) / 1_000_000
print(f"成本: ${cost:.6f}") # 约 $0.00045
下篇预告
下一篇文章《OpenAI API快速入门》,我们将深入:
- 如何注册 OpenAI 账号并获取 API Key
- Chat Completions API 的详细参数
- temperature、max_tokens 等参数的调优技巧
- Python SDK 的完整用法
- 多轮对话的实现
本系列文章
- ✅ 本篇:API基础与认证
- 📝 下一篇:OpenAI API快速入门
- DeepSeek API实战
- ChatGLM/智谱API
- 流式输出与错误处理
- 成本优化与配额管理
- 多模型切换与负载均衡
- 实战项目 - AI聊天机器人
💬 评论区