5分でOpenAIからLemonDataへ移行する方法
OpenAIの公式APIからLemonDataへの切り替えは、わずか2行の変更で完了します。既存のコード、プロンプト、モデル名はすべてそのまま機能します。また、同じAPI keyを使用して、OpenAI、Anthropic、Google、DeepSeekなど、300以上のモデルにアクセスできるようになります。
クイック手順
- lemondata.ccでサインアップし、API keyを取得します(1ドルの無料クレジットが付与されます)
base_urlとapi_keyを置き換えます- 完了です。それ以外はすべて同じです。
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)
ストリーミング、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では、base_urlではなくbaseURL(キャメルケース)を使用します。
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とキーを変更)
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_KEYとOPENAI_BASE_URLを自動的に読み込みます。コードの変更は不要です。
移行後のメリット
LemonDataに移行すると、OpenAIとの完全な互換性を維持したまま、追加の機能を利用できるようになります:
300以上のモデルを1つのAPI Keyで
既存のOpenAIコードで、Claude、Gemini、DeepSeek、Mistralなど数百のモデルが利用可能になります。modelパラメータを変更するだけです:
# GPT-4.1 (OpenAI) — 100万tokenあたり $2.00/$8.00
response = client.chat.completions.create(model="gpt-4.1", messages=messages)
# Claude Sonnet 4.6 (Anthropic) — 100万tokenあたり $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 — 100万tokenあたり $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のグラウンディングが必要な場合、ネイティブプロトコルアクセスを使用することで、フォーマット変換による損失なしにこれらの機能を利用できます。
主要なインテグレーションの移行
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
既存のプロンプトは機能しますか? はい。LemonDataはOpenAIと完全に互換性があります。リクエスト形式もレスポンス形式も同じです。
モデル名を変更する必要はありますか? いいえ。gpt-4.1、gpt-4o、gpt-4.1-miniなど、標準的なOpenAIモデル名はすべて機能します。LemonDataには3層のモデル解決システムがあります:完全一致 → エイリアス検索(gpt4からgpt-4、gpt-3.5からgpt-3.5-turboなど21の静的エイリアス) → 曖昧補正(レーベンシュタイン距離 ≤ 3)。そのため、非推奨の名前であるgpt-4-turboや、gpt4oのようなタイポでも正しく解決されます。
ストリーミングはどうなりますか? 同様に動作します。SSE形式、チャンク構造も同じです。ネイティブのAnthropic/Geminiプロトコルの場合、各プロバイダーのネイティブSSE形式(extended thinkingのthinking deltasを含む)が取得されます。
function calling / toolsはどうなりますか? 完全にサポートされています。同じスキーマ、同じ動作です。
エラーハンドリングはどうなりますか? LemonDataは、OpenAI互換のエラーに加えて、エージェントフレンドリーな追加フィールド(retryable、did_you_mean、suggestions、retry_after)を返します。標準のOpenAI SDKのエラーハンドリングはそのまま機能し、追加フィールドは付加的な情報として提供されます。
元に戻すことはできますか? はい。2行を元に戻すだけです。ロックインはありません。独自のフォーマットやデータの移行も不要です。
APIドキュメント(全文): docs.lemondata.cc
クイックスタートガイド: docs.lemondata.cc/quickstart
