RequestBeam

接入指南

一个 API 接入 GPT、Claude、Gemini 和 DeepSeek:开发者实战指南

从实际接入 RequestBeam 开始,演示怎么切换模型、怎么测算成本和响应时间,以及正式上线前应该检查哪些问题。

内容核对:

如果你正在开发 AI 应用,大概率碰到过这个问题:想用 GPT 处理一类任务,Claude 处理另一类任务,再试试 Gemini,成本敏感的时候还想比较一下 DeepSeek。

确实,不同的模型擅长不同的任务。

找到这些模型并不难,关键在于怎么把它们全部接进自己的应用。

你可能需要管理不同的 API Key、不同的账号、不同的账单后台,有时还得使用不同的 SDK。

在 RequestBeam,我们一直在做的事,就是让这个过程简单一些。我们提供一个统一的平台,让开发者通过共用的 API 接口和余额来访问多个 AI 模型。

但写到代码里,具体会是什么样?统一 API 真的能让开发变简单吗?

这篇文章里,我们会从实际接入开始,演示怎么切换模型、怎么测算成本和响应时间,以及正式上线前应该检查哪些问题。

1. 真实的场景,多个模型,多套接入方式

假设我们正在开发一个小型 AI 应用。

我们打算使用:

  • GPT:处理通用任务和结构化回复。
  • Claude:处理写作、编程和较长的任务。
  • Gemini:处理多模态相关的任务。
  • DeepSeek:作为另一个候选模型,测试它的成本和输出质量。

如果直接分别接入各家官方 API,我们就要处理四套 API 凭证、价格页面和接入方式。

我们可以简单对比一下:

要做的事分别接入模型供应商使用统一 API
管理 API 凭证最多 4 个 Key1 个平台 Key
管理计费账号最多 4 个1 个平台余额
选择模型按供应商分别配置在支持的情况下更换模型 ID
比较模型输出自行搭建测试流程复用同一套请求流程
监控费用汇总多个账单在一个平台查看用量
处理不同模型的差异仍然需要仍然需要

最后一行很重要。

一个 API,并不代表所有 AI 模型的行为都完全一样。

不同模型支持的参数、上下文长度、工具调用、返回格式和输入类型可能并不一样。统一 API 可以简化接入,但我们仍然要了解每个模型具体支持什么。

2. 开始使用 RequestBeam

我们只需要准备三样东西:

  1. 一个 RequestBeam 账号。
  2. 一个 RequestBeam API Key。
  3. 一个当前可用的模型 ID。

你可以在官网查看支持的模型及最新价格:

对于兼容 OpenAI SDK 的接入方式,RequestBeam 提供的 Base URL 是:

https://api.requestbeam.com/openai/v1

注意,它和我们通用的 HTTP 聊天接口不是同一个地址:

POST https://api.requestbeam.com/v1/chat-completions

接下来的 SDK 示例,我们会使用兼容 OpenAI 的那个接口。

第一步:安装 SDK

Python:

pip install --upgrade openai

Node.js:

npm install openai

第二步:配置 API Key

我们建议把 API Key 放在环境变量中,不要直接写死在代码里。

export REQUESTBEAM_API_KEY="your-api-key"
export REQUESTBEAM_MODEL="your-supported-model-id"

把 your-supported-model-id 替换成当前模型列表中对应的真实 ID。

我们建议直接复制模型 ID,而不是根据模型的宣传名称来猜。API 中的标识符不一定和你在模型官网看到的名字完全一样。

3. 使用 Python 完成第一次 API 调用

下面用 OpenAI SDK 写一个最基础的 Python 示例。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["REQUESTBEAM_API_KEY"],
    base_url="https://api.requestbeam.com/openai/v1",
)

response = client.chat.completions.create(
    model=os.environ["REQUESTBEAM_MODEL"],
    messages=[
        {
            "role": "user",
            "content": "Explain what an API is in one sentence."
        }
    ],
)

print(response.choices[0].message.content)

基本配置就是这些。

我们只需要设置一次 API Key 和 Base URL,然后使用支持的模型发送聊天请求。

正常情况下会返回什么?

如果请求成功,我们会得到包含模型生成内容的响应。

比如,模型可能会解释:“API 是让两个软件应用相互通信的一种方式。”

具体用词会随着模型和请求而变化。

如果请求失败,可以先检查这几个地方:

  • API Key 是否有效。
  • 选择的模型 ID 是否可用。
  • 这个接口是否支持当前请求的操作。
  • 账号余额是否足够。
  • 请求参数是否有不支持的项。

我们不建议遇到错误就无脑重试。身份验证失败、模型名称写错,以及临时触发频率限制,处理方法并不一样。

4. 在 GPT、Claude、Gemini 和 DeepSeek 之间切换

接下来看看我们觉得最实用的部分:在尽量不改动应用代码的情况下测试不同模型。

与其为四个模型分别写一套 API 接入,我们可以先封装一个函数,让它接收模型 ID。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["REQUESTBEAM_API_KEY"],
    base_url="https://api.requestbeam.com/openai/v1",
)

def ask_model(model_id, question):
    response = client.chat.completions.create(
        model=model_id,
        messages=[
            {
                "role": "user",
                "content": question
            }
        ],
    )

    return response.choices[0].message.content

这样,我们就能用不同的模型 ID 调用同一个函数。

question = "Explain REST APIs to a beginner."

model_ids = {
    "GPT": os.environ["GPT_MODEL_ID"],
    "Claude": os.environ["CLAUDE_MODEL_ID"],
    "Gemini": os.environ["GEMINI_MODEL_ID"],
    "DeepSeek": os.environ["DEEPSEEK_MODEL_ID"],
}

for name, model_id in model_ids.items():
    print(f"\n--- {name} ---")

    try:
        answer = ask_model(model_id, question)
        print(answer)
    except Exception as error:
        print(f"Request failed: {error}")

运行前,先从最新模型列表里找到四个真实可用的模型 ID,并设置对应环境变量:

export GPT_MODEL_ID="supported-gpt-model-id"
export CLAUDE_MODEL_ID="supported-claude-model-id"
export GEMINI_MODEL_ID="supported-gemini-model-id"
export DEEPSEEK_MODEL_ID="supported-deepseek-model-id"

我们的目标的是:不需要为每个模型家族重新写一套 SDK 接入代码,而是复用同一个请求函数。

不过有一个点要注意: 所选模型必须支持 OpenAI 兼容的聊天接口,以及我们发送的具体参数。一些高级能力可能需要通过其他接口来调用。

5. 用测试数据说话

当然,成功发出一次 API 请求,只能说明接口能用。它并不能证明这个服务足够快、足够稳定,或者成本适合正式业务。

因此,我们可以针对自己的应用做一个小实验。

给四个模型发送相同的 Prompt,记录:

  • 请求是否成功。
  • 一次请求花了多长时间。
  • 输入 token 数量。
  • 输出 token 数量。
  • 模型实际返回的内容。

第一轮,我们使用这个 Prompt:

Explain how HTTPS protects data between a browser and a server. Use fewer than 100 words.

这是一个比较简单的问题,但很适合先确认统一请求格式能否适用于不同模型。

Python 测试脚本

import os
import time
import json
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["REQUESTBEAM_API_KEY"],
    base_url="https://api.requestbeam.com/openai/v1",
    timeout=60.0,
    max_retries=0,
)

models = {
    "GPT": os.environ["GPT_MODEL_ID"],
    "Claude": os.environ["CLAUDE_MODEL_ID"],
    "Gemini": os.environ["GEMINI_MODEL_ID"],
    "DeepSeek": os.environ["DEEPSEEK_MODEL_ID"],
}

prompt = (
    "Explain how HTTPS protects data between "
    "a browser and a server. Use fewer than 100 words."
)

results = []

for provider, model_id in models.items():
    for run in range(5):
        start = time.perf_counter()

        try:
            response = client.chat.completions.create(
                model=model_id,
                messages=[
                    {"role": "user", "content": prompt}
                ],
                temperature=0,
            )

            elapsed = time.perf_counter() - start
            usage = response.usage

            results.append({
                "provider": provider,
                "model_id": model_id,
                "run": run + 1,
                "success": True,
                "latency_seconds": round(elapsed, 3),
                "input_tokens": (
                    usage.prompt_tokens if usage else None
                ),
                "output_tokens": (
                    usage.completion_tokens if usage else None
                ),
                "answer": (
                    response.choices[0].message.content
                ),
            })

        except Exception as error:
            elapsed = time.perf_counter() - start

            results.append({
                "provider": provider,
                "model_id": model_id,
                "run": run + 1,
                "success": False,
                "latency_seconds": round(elapsed, 3),
                "error": str(error),
            })

with open("requestbeam-test-results.json", "w") as f:
    json.dump(results, f, indent=2)

print(json.dumps(results, indent=2))

这里我们设置了 max_retries=0,因为想看到每一次独立请求是否失败,而不是让 SDK 自动重试后把错误掩盖掉。这是为了测量,并不一定代表生产环境也应该这么设置。

我们还设置了 temperature=0,希望在模型支持的情况下尽量减少输出差异。如果某个模型不接受这个参数,就针对它去掉参数,并记录这个区别。

以下是测试结果:

指标GPTClaudeGeminiDeepSeek
实测模型 IDgpt-5.6-solclaude-opus-5-5gemini-3.8-flashdeepseek-v4-flash
成功请求数5 / 55 / 55 / 55 / 5
延迟中位数(成功请求)25.615 秒23.661 秒26.585 秒20.969 秒
平均输入 tokens(成功请求)4,405392123
平均输出 tokens(成功请求)104461770.480.4
预估成本(5 次成功请求合计,USD)$0.049250000$0.032816000$0.010166625$0.000452912

6. 用真实 Token 用量比较 API 成本

AI API 定价之所以容易让人看糊涂,一个重要原因是:输入 token 和输出 token 通常有不同价格。

有些模型还支持缓存输入定价,这会进一步影响最终成本。

对于文本 API,我们一般先用下面这个公式估算:

预估成本 =(输入 tokens × 输入单价 + 输出 tokens × 输出单价)÷ 1,000,000

这里假设输入和输出单价都是“每百万 tokens”的价格,并且全部按照普通、非缓存的费率计算。

做一个简单的成本计算实验

假设我们的应用每个月发起 100,000 次请求。

我们估计每次请求平均使用:

  • 1,000 个输入 tokens。
  • 300 个输出 tokens。

那么一个月的总用量就是:

指标每月用量
请求次数100,000
输入 tokens100,000,000
输出 tokens30,000,000

接下来,我们对比两组假设性的价格。

价格项目示例 A示例 B
输入价格 / 百万 tokens$2.00$1.00
输出价格 / 百万 tokens$8.00$4.00
每月输入成本$200$100
每月输出成本$240$120
每月总成本$440$220

在这个例子里,B 比 A 便宜 50%。

同样的 token 用量,一个月能相差 $220。

真正选择供应商之前,我们会把对应模型的最新价格代入公式,同时检查平台费用、缓存规则、最低收费以及其他计费条件。

RequestBeam 的最新模型价格可以查看:价格页面。

为什么真实 Token 数据很重要?

即使回答同一个问题,不同模型也可能生成不同数量的输出 tokens。

这很重要,因为输出 token 往往比输入 token 更贵。

我们建议拿自己的真实 Prompt 测试模型,并尽可能使用 API 返回的 usage 数据来核对消耗。

还有一个容易忽略的地方:不同模型家族可能使用不同的分词器,所以它们报告的 token 数量不一定能直接比较。

因此,比起单纯比较“哪个模型使用的 token 更少”,我们更看重:完成同一批固定任务,最终实际被收取了多少钱。

7. 真正上线时,我们还会检查什么?

做演示的时候,只要能收到模型回复,基本就算完成第一步。

但上线给真实用户使用,要求就不一样了。

我们会更关注请求失败、成本超支、安全问题,以及系统表现是否稳定、可预期。

下面是我们建议在正式导入业务流量之前检查的几件事。

错误处理

我们会区分:

  • 身份验证问题,例如 API Key 无效。
  • 请求频率限制,或临时容量不足。
  • 模型或请求参数不受支持。
  • 超时和网络错误。
  • 服务端故障。

只有在再次尝试可能成功的情况下,我们才会进行有限次数的重试,并设置合理的退避时间。

模型兼容性

我们不会默认每个模型都支持所有功能。

使用工具调用、结构化 JSON 输出、图片输入、长上下文或流式响应之前,我们会核对具体模型与接口的支持情况。

成本控制

我们建议跟踪每一种主要业务任务的成本。

比如我们在开发内容生成工具,就更应该关注“生成一篇完整文档平均花多少钱”,而不只是每百万 tokens 的标价。

一个便宜的模型如果需要额外重试三次,最终不一定更省钱。

安全与数据处理

我们会把 API Key 保存在服务端,减少暴露风险,并在有需要时及时轮换。

在把客户数据发送给任何第三方 API 平台(包括 RequestBeam)之前,我们也会先阅读相关的数据处理和保留政策。

接口兼容,不代表隐私条款和服务承诺完全相同。

稳定性

对关键业务,我们建议测试故障时的备用方案,并确认替代模型能否处理相同的输入。

只有备用模型真正兼容对应任务,故障切换才有价值。

8. 什么情况下适合用统一 API?

我们认为,下面这些情况很适合考虑统一 API:

  • 正在做一个小型 AI SaaS,想比较不同模型。
  • 正在测试 GPT、Claude、Gemini 和 DeepSeek。
  • 不想维护好几个独立的计费账号。
  • 产品还在快速迭代,希望先简化接入。
  • 想根据实际测试结果,为不同任务选择不同模型。

但统一 API 并不总是最好的选择。

如果你需要某个模型官方刚刚推出、网关尚未支持的新功能;需要直接与模型厂商签约;依赖厂商专属支持;或者需要兼容接口未暴露的高级控制能力,那么直接使用官方 API 可能更合适。

同样,如果你的团队已经维护了一套成熟的自建网关,稳定性、监控和模型接入都满足需求,换平台带来的好处可能也不大。

我们更希望开发者根据真实需求做对比,而不是只听宣传。

10. 常见问题

能用一个 API Key 调用 GPT、Claude、Gemini 和 DeepSeek 吗?

RequestBeam 为受支持的模型提供统一的 API Key 和平台余额。具体调用时,仍然需要使用当前模型列表里的准确模型 ID,以及对应的受支持接口。

使用 RequestBeam,需要修改原有的 OpenAI SDK 代码吗?

对于受支持的 OpenAI 兼容聊天请求,通常可以继续使用 OpenAI SDK,只需要调整 Base URL、API Key 和模型 ID。

但如果用到特定厂商才有的高级功能,可能仍然需要修改代码。

统一 API 一定比官方直连接口便宜吗?

这取决于具体模型、token 使用量、缓存价格、平台费用和实际工作负载。

我们建议比较同一批任务的真实账单,而不是直接认为所有网关都更便宜。

但RequestBeam比官方更便宜,质量比其他AI API要更好。

应用运行过程中,可以动态切换模型吗?

可以。应用可以为每次请求选择不同的受支持模型 ID。

不过,你仍然需要处理不同模型在参数、返回结果和功能上的差异。

RequestBeam 只支持文本模型吗?

不只如此。

RequestBeam 还提供图片、视频以及部分数据 API 服务。

这些服务可能使用不同的接口和请求格式,不能直接当作文本聊天 API 来调用。

最后,我们想说

使用多个 AI 模型,不应该意味着必须维护四套完全独立的接入系统。

在 RequestBeam,我们的目标是让共同的部分更简单:一个平台、一套余额管理,以及访问受支持模型的统一方式。

但我们也认为,最重要的还是测量真实效果。

在选择模型或服务商之前,我们建议先回答三个问题:

  1. 能不能用? 测试应用真正需要的 API 功能。
  2. 要花多少钱? 根据实际使用量计算,不要只看宣传价格。
  3. 表现怎么样? 用自己的 Prompt 比较延迟、失败情况和输出质量。

我们在上面提供了代码和一套简单的测试流程,你可以直接拿自己的账号来验证。

如果想开始接入,可以先查看我们的模型列表,确认最新价格,再按 API 文档操作。

我们也很想看看,你会用它做出什么产品。

—— RequestBeam 团队