GPT API 怎么接?国内开发者一篇文章看懂

0 阅读5分钟

GPT API 怎么接?国内开发者一篇文章看懂

国内开发者想用上 GPT-5、Claude Opus、Gemini 这类海外大模型 API,绕不开三件事:账号注册(要国际手机号或国际信用卡)、付费方式(要海外银行卡)、网络访问(直连不稳定)。这三道关让"在 IDE 里直接用上 GPT-5"看着简单实际很折腾。

这篇文章把整条接入路径走一遍——从环境准备、SDK 调用、流式输出、function calling,一直到怎么用同一份代码在 GPT / Claude / Gemini 之间切换。所有代码都来自我整理的 ai-api-integration 仓库,里面有 Python / Node.js / Go / curl 四种语言的完整示例,可以直接 clone 跑通。

01_封面.png

准备工作

环境

  • Python:3.9 或更高
  • Node.js:18 或更高(用 ESM)
  • OpenAI SDKopenai>=1.30.0(旧版 0.x SDK 已经过时)

账号

需要一个 OpenAI 兼容协议的 endpoint 和对应的 API Key。常见选择:

  • OpenAI 官方:https://api.openai.com/v1——直连国内不稳,注册门槛较高
  • Azure OpenAI:企业向,门槛较高
  • 国内统一网关:用 OpenAI 协议代理多家厂商,把 GPT / Claude / Gemini / DeepSeek 等聚合到一个 endpoint
  • 自部署网关(LiteLLM / One-API):自己运维,灵活但重

本文示例用 产灵 API 作为 endpoint(http://xdhdancer.top/v1),它属于第三种——OpenAI 协议兼容,国内直连,模型清单覆盖 GPT-5 / Claude / Gemini / Sora 等。换成你自己有 Key 的任意兼容 endpoint,本文代码都能跑。

一句话验证

把环境装好后,先用 curl 确认 endpoint 通:

curl http://xdhdancer.top/v1/chat/completions \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

返回 JSON 里有 choices[0].message.content 就说明接通了。

完整步骤

步骤 1:Python SDK 接入

最常用的方式。先装 SDK:

pip install openai

最简单的 chat 调用:

from openai import OpenAI

client = OpenAI(
    api_key="sk-xxx",                          # 你的 API Key
    base_url="http://xdhdancer.top/v1",        # 网关 endpoint
)

resp = client.chat.completions.create(
    model="gpt-5",                              # 也可换成 claude-opus-4-7、gemini-3.1-pro 等
    messages=[
        {"role": "system", "content": "You are a concise assistant."},
        {"role": "user", "content": "用一句话解释 RAG"},
    ],
    temperature=0.3,
    max_tokens=500,
)

print(resp.choices[0].message.content)
print(f"\n[tokens used: {resp.usage.total_tokens}]")

注意点:

  • base_url 末尾的 /v1 不能漏,否则 SDK 拼路径会拼成 https://xxx.com/chat/completions,404
  • api_key 直接写代码里只是演示,实际项目用环境变量 os.environ["API_KEY"]
  • model 字段决定调用哪家厂商的模型——这就是统一网关的核心价值

步骤 2:Node.js SDK 接入

掘金的前端 / 全栈读者更多用 Node。装 SDK:

npm install openai

ESM 写法(package.json 加 "type": "module"):

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.API_KEY,
  baseURL: "http://xdhdancer.top/v1",
});

const resp = await client.chat.completions.create({
  model: "claude-opus-4-7",
  messages: [{ role: "user", content: "Hello" }],
});

console.log(resp.choices[0].message.content);

注意 Node SDK 用的是 baseURL(驼峰),Python 用的是 base_url(下划线)——同一个 API 字段不同 SDK 写法不同,这是踩过坑的地方。

步骤 3:流式输出

用户体验关键功能——边生成边显示,不用等完整响应:

02_插图.png

# Python 流式
stream = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": "用 100 字介绍 Python 协程"}],
    stream=True,                                # 关键:开 stream
)

for chunk in stream:
    delta = chunk.choices[0].delta
    if delta.content:
        print(delta.content, end="", flush=True)
print()
// Node 流式
const stream = await client.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Write a haiku" }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || "");
}

完整示例(含错误处理 / 多语言版本)见仓库:

步骤 4:在不同模型间切换

统一 OpenAI 协议的核心价值——同一份代码访问 12+ 主流模型,只改 model 字符串:

模型 ID厂商上下文适用
gpt-5OpenAI128k通用推理、代码
gpt-5-miniOpenAI128k速度快、便宜
claude-opus-4-7Anthropic200k长上下文编程
claude-sonnet-4-6Anthropic200k平衡
gemini-3.1-proGoogle2M超长文档
deepseek-v3.2DeepSeek128k中文强、价格低
kimi-k2Moonshot200k中文长文档
# 同一个 client、同一个 messages,只换 model
for model in ["gpt-5", "claude-opus-4-7", "gemini-3.1-pro"]:
    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "写一个快速排序"}],
    )
    print(f"\n=== {model} ===")
    print(resp.choices[0].message.content[:200])

这种调用模式有个直接好处:可以做模型路由——简单问题走 gpt-5-mini 省钱,复杂任务走 claude-opus-4-7 提质量,长文档走 gemini-3.1-pro 省事。

步骤 5:function calling

让模型调用外部工具,是构建 Agent 的基础。完整示例:

import json
from openai import OpenAI

client = OpenAI(api_key="sk-xxx", base_url="http://xdhdancer.top/v1")

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current weather for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

# 第一轮:模型决定要不要调工具
resp = client.chat.completions.create(
    model="claude-opus-4-7",
    messages=[{"role": "user", "content": "北京天气怎么样?"}],
    tools=tools,
)

msg = resp.choices[0].message
if msg.tool_calls:
    tool_call = msg.tool_calls[0]
    args = json.loads(tool_call.function.arguments)
    # 模拟工具执行
    tool_result = {"city": args["city"], "temp": 22, "condition": "sunny"}

    # 第二轮:把工具结果丢回去
    resp2 = client.chat.completions.create(
        model="claude-opus-4-7",
        messages=[
            {"role": "user", "content": "北京天气怎么样?"},
            msg,
            {"role": "tool", "tool_call_id": tool_call.id, "content": json.dumps(tool_result)},
        ],
    )
    print(resp2.choices[0].message.content)

完整代码:examples/python/function_calling.py

踩坑记录

整理 3 个最容易踩的坑:

坑 1:base_url 末尾少了 /v1

报错:Connection error / 404 Not Found
原因:OpenAI SDK 内部会拼路径,base_url 末尾必须带 /v1

错误:base_url="http://xdhdancer.top" 正确:base_url="http://xdhdancer.top/v1"

坑 2:旧版 SDK(0.x)写法报错

# ❌ 旧版 0.x(已过时)
import openai
openai.api_key = "sk-xxx"
openai.api_base = "http://xdhdancer.top/v1"
openai.ChatCompletion.create(...)

# ✅ 新版 1.x(必须用这个)
from openai import OpenAI
client = OpenAI(api_key="sk-xxx", base_url="http://xdhdancer.top/v1")
client.chat.completions.create(...)

升级命令:pip install --upgrade openai

坑 3:把 Anthropic SDK 当 OpenAI SDK 用

调 Claude 用 OpenAI SDK 是可以的(前提是网关支持 Claude 模型),不需要装 anthropic 库。OpenAI 协议兼容是统一网关的核心卖点之一——少一个依赖、少一份适配代码。

03_收尾.png

总结

完整的 GPT API 接入路径其实就是:装 SDK → 配置 base_url + api_key → 调 chat.completions.create。统一网关让你不用为每家厂商单独写适配,所有 OpenAI 协议的功能(流式、function calling、vision)都直接复用。

文章里所有代码已经在这个仓库整理好,clone 下来改一下 API Key 就能跑:

👉 github.com/CCCpan/ai-a…

仓库内容:

  • examples/python/:chat / streaming / image / function-calling / vision 完整示例
  • examples/node/:Node.js 三个核心场景示例
  • examples/curl/:4 个常用 endpoint 的 raw HTTP
  • src/:Python / Node / Go 三语言完整 demo(命令行多模型对话工具)
  • docs/tools/:Cursor / Cline / Claude Code / ChatBox / Dify 等 10 款工具的接入教程
  • docs/modalities/:文本 / 代码 / 图片 / 视频 / 音频 / 视觉 / Embeddings 7 个模态的调用方法

觉得有用点个 ⭐,方便下次找到。本文示例 endpoint 是 产灵 API——OpenAI 协议兼容、国内直连,新人有免费体验额度可以先试再决定。

有问题欢迎评论区交流。


本文部分内容由 AI 协助整理,所有代码均来自开源仓库 ai-api-integration 已实测通过。