Administrator
发布于 2025-12-14 / 85 阅读
0
0

Python 调用教程

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

常见报错

报错原因怎么办
401Key 错了 / 没余额检查 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 上限)。

解决:

  1. 分段发:长文拆成小块,分批处理
  2. 精简输入:只发关键内容,别把整本书扔进去

流式输出

要打字机效果,加 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 对不对、模型名对不对、是不是发太快、是不是内容太长


评论