الإعدادات

اللغة

الانتقال من OpenAI إلى LemonData في 5 دقائق

L
LemonData
·٢٦ فبراير ٢٠٢٦·47 مشاهدة
#دليل تعليمي#ترحيل#OpenAI#دليل البداية
الانتقال من OpenAI إلى LemonData في 5 دقائق

انتقل من OpenAI إلى LemonData في 5 دقائق

يستغرق الانتقال من API الرسمي لـ OpenAI إلى LemonData تغيير سطرين فقط. ستعمل الأكواد الحالية، والـ prompts، وأسماء الـ model كما هي تماماً. كما ستحصل على وصول إلى أكثر من 300 model عبر OpenAI و Anthropic و Google و DeepSeek والمزيد، من خلال نفس الـ API key.

النسخة المختصرة

  1. سجل في lemondata.cc واحصل على API key (ستحصل على رصيد مجاني بقيمة 1 دولار)
  2. استبدل الـ base_url والـ api_key الخاصين بك
  3. انتهيت. كل شيء آخر سيبقى كما هو.

Python (OpenAI SDK)

# Before — OpenAI official
from openai import OpenAI
client = OpenAI(api_key="sk-openai-xxx")

# After — LemonData (change 2 lines)
from openai import OpenAI
client = OpenAI(
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

# Everything else stays the same
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)

// Before — OpenAI official
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: 'sk-openai-xxx' });

// After — LemonData (change 2 lines)
import OpenAI from 'openai';
const openai = new OpenAI({
  apiKey: 'sk-lemon-xxx',
  baseURL: 'https://api.lemondata.cc/v1',
});

// Everything else stays the same
const completion = await openai.chat.completions.create({
  model: 'gpt-4.1',
  messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(completion.choices[0].message.content);

ملاحظة: هي baseURL (بصيغة camelCase) في Node.js SDK، وليست base_url.

curl

# Before — OpenAI official
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"}]}'

# After — LemonData (change URL and 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"}]}'

نفس مسار الـ endpoint، ونفس جسم الطلب (request body)، ونفس تنسيق الاستجابة (response format).

نهج متغيرات البيئة (Environment Variable)

إذا كان الكود الخاص بك يقرأ من متغيرات البيئة (وهو ما ينبغي فعله)، فلن تحتاج حتى إلى لمس الكود:

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

# After
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 model، بـ API key واحد

كود OpenAI الحالي الخاص بك يعمل الآن مع Claude و Gemini و DeepSeek و Mistral ومئات النماذج الأخرى — فقط قم بتغيير بارامتر الـ model:

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

# Claude Sonnet 4.6 (Anthropic) — $3.00/$15.00 per 1M tokens
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 — $0.28/$0.42 per 1M tokens (use "deepseek-chat" or alias "deepseek-v3")
response = client.chat.completions.create(model="deepseek-chat", messages=messages)

تعني ميزة التكرار متعدد القنوات (Multi-channel redundancy) أنه إذا واجه أحد المزودين الأساسيين مشكلات، فستقوم البوابة تلقائياً بالتوجيه إلى قناة بديلة. لا حاجة لتغييرات في الكود.

الوصول إلى البروتوكول الأصلي (اختياري)

إذا كنت ترغب في استخدام نماذج Anthropic أو Google بكامل قدراتها الأصلية (التفكير الموسع - extended thinking، وتخزين الـ prompt مؤقتاً باستخدام cache_control، و Google search grounding)، فإن LemonData يدعم بروتوكولاتها الأصلية من خلال نفس الـ base URL:

# Anthropic native — use the Anthropic SDK
# Extended thinking, cache_control, Citations all work natively
from anthropic import Anthropic
client = Anthropic(
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc"  # No /v1 — Anthropic SDK adds /v1/messages itself
)

# Google Gemini native — use the Google SDK
# Search grounding, grounding_metadata all work natively
from google import genai
client = genai.Client(
    api_key="sk-lemon-xxx",
    http_options={"base_url": "https://api.lemondata.cc"}  # No path suffix — SDK adds /v1beta/models/...
)

هذا اختياري تماماً. تعمل الـ endpoint المتوافقة مع OpenAI لجميع النماذج. ولكن إذا كنت بحاجة إلى ميزة التفكير الموسع من Anthropic أو الـ grounding من 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 تحتوي على كائنات الـ model، فأنت جاهز.

الأسئلة الشائعة

هل ستعمل الـ prompts الحالية الخاصة بي؟ نعم. LemonData متوافق تماماً مع OpenAI. نفس تنسيق الطلب، ونفس تنسيق الاستجابة.

هل أحتاج إلى تغيير أسماء الـ model؟ لا. gpt-4.1، gpt-4o، gpt-4.1-mini — جميع أسماء نماذج OpenAI القياسية تعمل. تمتلك LemonData أيضاً نظاماً لحل أسماء النماذج من ثلاث طبقات: المطابقة التامة ← البحث عن الاسم المستعار (21 اسماً مستعاراً ثابتاً مثل gpt4gpt-4، gpt-3.5gpt-3.5-turbo) ← التصحيح التقريبي (مسافة Levenshtein ≤ 3). لذا حتى الأسماء المهملة مثل gpt-4-turbo أو الأخطاء الإملائية مثل gpt4o يتم حلها بشكل صحيح.

ماذا عن الـ streaming؟ يعمل بشكل متطابق. تنسيق SSE، ونفس هيكل الـ chunk. بالنسبة لبروتوكولات Anthropic/Gemini الأصلية، ستحصل على تنسيق SSE الأصلي لكل مزود (بما في ذلك فروق التفكير - thinking deltas للتفكير الموسع).

ماذا عن الـ function calling / tools؟ مدعومة بالكامل. نفس الـ schema، ونفس السلوك.

ماذا عن معالجة الأخطاء؟ تعيد LemonData أخطاء متوافقة مع OpenAI مع حقول إضافية صديقة للـ agents: retryable، did_you_mean، suggestions، retry_after. تعمل معالجة الأخطاء القياسية في OpenAI SDK دون تغيير — الحقول الإضافية هي مضافة فقط.

هل يمكنني العودة؟ نعم. قم بتغيير السطرين مرة أخرى. لا يوجد تقييد (lock-in). لا يوجد تنسيق ملكية خاص، ولا يوجد ترحيل للبيانات.


توثيق API الكامل: docs.lemondata.cc
دليل البدء السريع: docs.lemondata.cc/quickstart

Share: