Python 调用教程
核心配置
用第三方 API,和官方唯一的区别就是要改 base_url:
from openai import OpenAI
client = OpenAI(
base_url="https://api.example.com/v1", # ← 服务商给的地址,不是 OpenAI 官方
api_key="sk-xxxx" # ← 服务商给的 Key
)
response = client.chat.completions.create(
model="claude-3-5-sonnet-20240620", # ← 服务商支持的模型名,照着填
messages=[
{"role": "user", "content": "你好"}
]
)
print(response.choices[0].message.content)
三个必填项:
| 配置项 | 说明 |
|---|---|
base_url | 服务商提供的 API 地址,不是 api.openai.com |
api_key | 服务商给的 Key,不是官方 Key |
model | 服务商支持的模型名,写错就 404 |
常见报错
| 报错 | 原因 | 怎么办 |
|---|---|---|
401 | Key 错了 / 没余额 | 检查 Key,查余额 |
404 | 模型名写错了 | 核对服务商的模型列表 |
429 | 并发太高 | 见下文 |
400 / 超时 | 内容太长 | 见下文 |
并发问题(重点)
现象:同时发多个请求,报 429 或直接拒绝。
原因:第三方接口一般有并发限制,不像官方能扛高并发。
解决:请求排队,一个一个发。别用多线程狂发。
import time
questions = ["问题1", "问题2", "问题3"]
for q in questions:
response = client.chat.completions.create(
model="claude-3-5-sonnet-20240620",
messages=[{"role": "user", "content": q}]
)
print(response.choices[0].message.content)
time.sleep(1) # 间隔 1-5 秒,别太快
内容过长问题(重点)
现象:发一大段文本,报错 400 或超时。
原因:超过模型的上下文长度限制(token 上限)。
解决:
- 分段发:长文拆成小块,分批处理
- 精简输入:只发关键内容,别把整本书扔进去
流式输出
要打字机效果,加 stream=True:
stream = client.chat.completions.create(
model="claude-3-5-sonnet-20240620",
messages=[{"role": "user", "content": "写首诗"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
总结
第三方 API = 官方代码 + 改 base_url + 改 api_key + 用服务商的模型名
报错先查:Key 对不对、模型名对不对、是不是发太快、是不是内容太长