设置

语言

5 分钟内从 OpenAI 迁移到 LemonData

L
LemonData
·2026年2月26日·529 次浏览
5 分钟内从 OpenAI 迁移到 LemonData

从 OpenAI 官方 API 切换到 LemonData 仅需修改两行代码。您现有的代码、提示词(prompts)和模型名称均可原封不动地使用。此外,通过同一个 API key,您还可以访问涵盖 OpenAI、Anthropic、Google、DeepSeek 等在内的 300 多个模型。

如果您在迁移前正在对比网关选择,请阅读价格对比以及 OpenRouter 与 LemonData 的对比。如果您的团队需要针对特定地区的指南,中国开发者指南涵盖了支付和运营方面的内容。

简短版

  1. lemondata.cc 注册并获取 API key(您将获得 1 美元的免费额度)
  2. 替换您的 base_urlapi_key
  3. 完成。其他一切保持不变。

Python (OpenAI SDK)

# 迁移前:OpenAI 官方
from openai import OpenAI
client = OpenAI(api_key="sk-openai-xxx")

# 迁移后:LemonData(修改 2 行)
from openai import OpenAI
client = OpenAI(
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

# 其他一切保持不变
response = client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)

流式传输(Streaming)、函数调用(function calling)、视觉能力(vision):所有功能完全一致。OpenAI Python SDK 会将请求发送到您指定的任何 base_url

Node.js (OpenAI SDK)

// 迁移前:OpenAI 官方
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: 'sk-openai-xxx' });

// 迁移后:LemonData(修改 2 行)
import OpenAI from 'openai';
const openai = new OpenAI({
  apiKey: 'sk-lemon-xxx',
  baseURL: 'https://api.lemondata.cc/v1',
});

// 其他一切保持不变
const completion = await openai.chat.completions.create({
  model: 'gpt-4.1',
  messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(completion.choices[0].message.content);

注意:在 Node.js SDK 中是 baseURL(驼峰式命名),而不是 base_url

curl

# 迁移前:OpenAI 官方
curl https://api.openai.com/v1/chat/completions \
  -H "Authorization: Bearer sk-openai-xxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4.1","messages":[{"role":"user","content":"Hello"}]}'

# 迁移后:LemonData(修改 URL 和 key)
curl https://api.lemondata.cc/v1/chat/completions \
  -H "Authorization: Bearer sk-lemon-xxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4.1","messages":[{"role":"user","content":"Hello"}]}'

相同的端点路径,相同的请求体,相同的响应格式。

环境变量方法

如果您的代码从环境变量中读取(理应如此),您甚至不需要改动代码:

# 迁移前
export OPENAI_API_KEY="sk-openai-xxx"
export OPENAI_BASE_URL="https://api.openai.com/v1"

# 迁移后
export OPENAI_API_KEY="sk-lemon-xxx"
export OPENAI_BASE_URL="https://api.lemondata.cc/v1"

OpenAI SDK 会自动从环境中读取 OPENAI_API_KEYOPENAI_BASE_URL。零代码改动。

迁移后的收获

切换到 LemonData 后,您在保持与 OpenAI 完全兼容的同时,还能获得额外的能力:

300+ 模型,一个 API Key

您现有的 OpenAI 代码现在可以与 Claude, Gemini, DeepSeek, Mistral 等数百个模型配合使用。在大多数情况下,您唯一需要更改的就是 model 参数:

# GPT-4.1 (OpenAI): 每 1M tokens $2.00/$8.00
response = client.chat.completions.create(model="gpt-4.1", messages=messages)

# Claude Sonnet 4.6 (Anthropic): 每 1M tokens $3.00/$15.00
response = client.chat.completions.create(model="claude-sonnet-4-6", messages=messages)

# Gemini 2.5 Pro (Google)
response = client.chat.completions.create(model="gemini-2.5-pro", messages=messages)

# DeepSeek V3: 每 1M tokens $0.28/$0.42 (使用 "deepseek-chat" 或别名 "deepseek-v3")
response = client.chat.completions.create(model="deepseek-chat", messages=messages)

多通道冗余意味着如果某个上游供应商出现问题,网关会自动路由到备用通道。无需改动代码。

原生协议访问(可选)

如果您想使用 Anthropic 或 Google 模型及其完整的原生功能(如 extended thinking、带 cache_control 的提示词缓存、Google 搜索接地),LemonData 通过相同的 base URL 支持它们的原生协议:

# Anthropic 原生:使用 Anthropic SDK
# Extended thinking, cache_control, Citations 均可原生工作
from anthropic import Anthropic
client = Anthropic(
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc"  # 无需 /v1。Anthropic SDK 会自动添加 /v1/messages。
)

# Google Gemini 原生:使用 Google SDK
# Search grounding, grounding_metadata 均可原生工作
from google import genai
client = genai.Client(
    api_key="sk-lemon-xxx",
    http_options={"base_url": "https://api.lemondata.cc"}  # 无路径后缀。SDK 会自动添加 /v1beta/models/...。
)

这完全是可选的。OpenAI 兼容端点适用于所有模型。但如果您需要 Anthropic 的 extended thinking 或 Google 的 grounding,原生协议访问可以让您在没有任何格式转换损失的情况下使用这些功能。

迁移中通常会发生的变化

大多数迁移在技术上很简单,但在操作上容易疏忽。团队通常只更改 base URL 和 key,然后假设其他一切都完全相同。对于请求模式(request schema)来说通常确实如此,但对于周边的其他环节则未必。

在切换流量之前,值得检查的领域包括:

  • SDK 或 HTTP 客户端中的超时设置
  • 应用程序配置中的模型白名单
  • 假设单一供应商的成本仪表板
  • 针对特定上游调整的重试逻辑
  • 任何关于响应头或速率限制(rate limits)的硬编码假设

如果您在切换生产流量之前审计这五个领域,迁移通常会非常顺利。

迁移清单

如果您希望迁移过程“平淡无奇”,请使用此清单:

  1. 创建 LemonData API key。
  2. 切换 base_urlbaseURL
  3. /v1/models 运行一次冒烟测试。
  4. 测试一次聊天补全、一次流式响应和一次失败路径。
  5. 确认您的日志仍然记录了请求 ID 和模型名称。
  6. 在前几次调用后检查账单,确保您的成本假设仍然成立。
  7. 只有在完成上述步骤后,再迁移后台任务和生产流量。

常见错误

错误 1:硬编码旧的模型清单

一些团队会根据应用配置中的静态列表验证模型 ID。如果您保留该列表,网关虽然可以工作,但您的应用程序会在请求发送前拒绝有效的模型名称。

错误 2:仅将迁移视为供应商更换

真正的收益不仅仅是离开 OpenAI。真正的收益是从单一供应商架构转向网关模式,这样您就可以在不再次更改应用程序其余部分的情况下,添加 Claude, Gemini, DeepSeek 等模型。

错误 3:跳过失败路径测试

正常路径(happy-path)的补全只能证明 API key 有效。它不能证明您的重试逻辑、错误解析或可观测性在迁移后仍然有效。

如果您发布的是面向用户的应用程序而不仅仅是一个脚本,那么接下来值得阅读的两份实现指南是单 Key 聊天机器人教程速率限制指南

常见集成迁移

Cursor

设置 (Settings) → 模型 (Models) → OpenAI API Key:

  • API Key: sk-lemon-xxx
  • Base URL: https://api.lemondata.cc/v1

LangChain

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-4.1",
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

Vercel AI SDK

import { createOpenAI } from '@ai-sdk/openai';

const lemondata = createOpenAI({
  apiKey: 'sk-lemon-xxx',
  baseURL: 'https://api.lemondata.cc/v1',
});

const result = await generateText({
  model: lemondata('gpt-4.1'),
  prompt: 'Hello!',
});

LiteLLM

import litellm

response = litellm.completion(
    model="openai/gpt-4.1",
    messages=[{"role": "user", "content": "Hello!"}],
    api_key="sk-lemon-xxx",
    api_base="https://api.lemondata.cc/v1"
)

验证您的迁移

切换后的快速检查:

curl https://api.lemondata.cc/v1/models \
  -H "Authorization: Bearer sk-lemon-xxx" | head -c 200

如果您看到包含模型对象的 JSON 响应,说明一切正常。

FAQ

我现有的提示词(prompts)还能用吗? 是的。LemonData 与 OpenAI 完全兼容,因此请求和响应格式保持不变。

我需要更改模型名称吗? 不需要。gpt-4.1gpt-4ogpt-4.1-mini 都能按预期工作。LemonData 还拥有三层模型解析系统:精确匹配、别名查找和模糊纠错。这意味着即使是像 gpt-4-turbo 这样已弃用的名称或像 gpt4o 这样的拼写错误,通常仍能正确解析。

流式传输(streaming)呢? 工作方式完全相同。SSE 格式,相同的 chunk 结构。对于原生 Anthropic/Gemini 协议,您将获得每个供应商的原生 SSE 格式(包括 extended thinking 的思维增量)。

函数调用 / 工具(tools)呢? 完全支持。相同的 schema,相同的行为。

错误处理呢? LemonData 返回与 OpenAI 兼容的错误,并增加了对智能体(agent)友好的额外字段,如 retryabledid_you_meansuggestionsretry_after。标准的 OpenAI SDK 错误处理仍然有效,因为这些字段是附加的。

我可以切换回去吗? 可以。将那两行代码改回去即可。没有私有格式,也没有需要撤销的数据迁移。


从这里开始:lemondata.cc/r/devto-migration
完整 API 文档:docs.lemondata.cc
快速入门指南:docs.lemondata.cc/quickstart

分享: