baseURL代码示例实战教程

开发者必读:AI API 中转 baseURL 切换实战与代码示例大全

2026-08-25 · 约 8 分钟阅读

绝大多数 AI API 中转站都兼容 OpenAI 或 Anthropic 的官方 API 格式,切换过程本质上只需修改两个参数:base_url 和 api_key。本文提供四种主流语言/工具的完整示例。

一、Python(OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    api_key="你的中转站Key",
    base_url="https://中转站域名/v1"  # 替换为中转站的 base_url
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}],
    stream=False
)
print(response.choices[0].message.content)

流式输出

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "写一首诗"}],
    stream=True
)
for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)

二、Python(Anthropic SDK)

import anthropic

client = anthropic.Anthropic(
    api_key="你的中转站Key",
    base_url="https://中转站域名"  # 注意:通常不带 /v1 后缀,具体看平台文档
)

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello Claude"}]
)
print(message.content)

三、Node.js(OpenAI SDK)

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "你的中转站Key",
  baseURL: "https://中转站域名/v1",
});

const response = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Hello" }],
});

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

流式输出(Node.js)

const stream = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "写一首诗" }],
  stream: true,
});

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

四、Go(使用官方兼容库或直接HTTP请求)

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

func main() {
	url := "https://中转站域名/v1/chat/completions"
	payload := map[string]interface{}{
		"model": "gpt-4o",
		"messages": []map[string]string{
			{"role": "user", "content": "Hello"},
		},
	}
	body, _ := json.Marshal(payload)

	req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
	req.Header.Set("Authorization", "Bearer 你的中转站Key")
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	result, _ := io.ReadAll(resp.Body)
	fmt.Println(string(result))
}

五、curl(快速测试用)

curl https://中转站域名/v1/chat/completions \
  -H "Authorization: Bearer 你的中转站Key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

六、常见报错排查

报错可能原因解决方法
401 UnauthorizedKey错误或已过期检查Key是否正确复制,是否有多余空格
404 Not Foundbase_url路径拼接错误确认平台要求的路径格式(是否需要/v1后缀)
429 Too Many Requests触发限流降低并发,实现指数退避重试
模型返回内容异常/格式不对模型名称不匹配核对平台模型列表页的确切model字段名
SSL/TLS握手失败平台域名网络异常检查是否需要更换网络环境或DNS

七、多环境配置技巧

生产环境建议用环境变量管理base_url和key,方便不同环境(开发/测试/生产)快速切换供应商:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AI_API_KEY"],
    base_url=os.environ.get("AI_API_BASE_URL", "https://api.openai.com/v1")
)
# .env 文件
AI_API_KEY=你的中转站Key
AI_API_BASE_URL=https://中转站域名/v1

这样切换中转站或者供应商时,只需修改环境变量,无需改动业务代码。

相关阅读

找到最适合你的 AI API 中转站

收录 125+ 服务商,按价格、模型、标签一键筛选

查看所有中转站 →