انتقل إلى المحتوى

الانتقال من OpenAI إلى Claude API: ما الذي يتغير في الكود

انقل كود OpenAI API إلى Claude: احتفظ بمكتبة OpenAI وغيّر ثلاثة إعدادات، أو انتقل إلى مكتبة Anthropic. خريطة الحقول وأخطاء 400 والتكلفة.

آخر تحديث: 3 نوفمبر 2026نسخة Markdown

للانتقال من OpenAI إلى Claude تستطيع أن تحتفظ بمكتبة OpenAI وتغيّر ثلاثة إعدادات: العنوان الأساسي https://api.5abeer.ai/v1، ومفتاحًا من خبير لنماذج Claude، ومعرّف نموذج من Claude مثل claude-sonnet-5.5. وإن احتجت إعدادات Claude الخاصة، مثل التخزين المؤقت للطلبات، فانتقل إلى مكتبة Anthropic على العنوان https://api.5abeer.ai. وكلا الطريقين يعمل بالمفتاح نفسه.

ما الذي يتغير عند الانتقال من OpenAI إلى Claude؟#

خبير متوافق مع OpenAI: غيّر العنوان الأساسي واحتفظ بالكود نفسه. والإعدادات التي تتغير ثلاثة:

الإعدادقبل، على OpenAIبعد، Claude في خبير
العنوان الأساسيhttps://api.openai.com/v1https://api.5abeer.ai/v1
المفتاحمفتاح OpenAI APIمفتاح من خبير لنماذج Claude
النموذجمعرّف نموذج من GPTمعرّف نموذج من Claude، مثل claude-sonnet-5.5

ثم اختر طريقك: أن تحتفظ بمكتبة OpenAI، وهو أصغر تغيير، أو أن تنتقل إلى مكتبة Anthropic، ومنها تصل إلى كل إعدادات Claude. وكيف تبني المكتبة كل عنوان يشرحه دليل ما هو العنوان الأساسي.

الطريق الأول: احتفظ بمكتبة OpenAI#

ضع مفتاحك في متغير البيئة KHABEER_API_KEY، ثم غيّر إعداد العميل ومعرّف النموذج:

Python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.5abeer.ai/v1",
    api_key=os.environ["KHABEER_API_KEY"],
)

response = client.chat.completions.create(
    model="claude-sonnet-5.5",
    messages=[
        {"role": "system", "content": "Answer in two sentences."},
        {"role": "user", "content": "What is a context window?"},
    ],
)

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

وفي مكتبة Node.js اسم الخيار baseURL:

JavaScript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.5abeer.ai/v1",
  apiKey: process.env.KHABEER_API_KEY,
});

const response = await client.chat.completions.create({
  model: "claude-sonnet-5.5",
  messages: [{ role: "user", content: "What is a context window?" }],
});

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

وتقرأ المكتبتان العنوان الأساسي من المتغير OPENAI_BASE_URL والمفتاح من OPENAI_API_KEY إن لم تمرّرهما في الكود، لذلك يستطيع مشروع كامل أن ينتقل بضبط هذين المتغيرين وتغيير معرّف النموذج. ويستمر الكود الذي يستدعي client.responses.create في العمل كذلك، لأن نماذج Claude تُقدَّم على Responses أيضًا.

بأي نموذج من Claude أبدأ؟#

نماذج Claude التي يمكنك استدعاؤها الآن:

لكل مليون توكن
  • Claude Sonnet 5.5الافتراضيالإدخال‏30 ج.م‏الإخراج‏150 ج.م‏السياق1M
  • Claude Opus 5.5الإدخال‏60 ج.م‏الإخراج‏300 ج.م‏السياق1M
  • Claude Fable 5.1الإدخال‏150 ج.م‏الإخراج‏750 ج.م‏السياق—
  • Claude Fable 5الإدخال‏150 ج.م‏الإخراج‏750 ج.م‏السياق1M
  • Claude Opus 4.6الإدخال‏75 ج.م‏الإخراج‏375 ج.م‏السياق1M
  • Claude Opus 4.7الإدخال‏75 ج.م‏الإخراج‏375 ج.م‏السياق1M

السعر الرسمي من صفحة المزوّد، بتاريخ 19 أكتوبر 2026.

كل النماذج والأسعار

ابدأ بـ claude-sonnet-5.5، وهو النموذج الافتراضي في خبير، ثم جرّب claude-opus-5.5 أو claude-fable-5.1 على أصعب طلباتك، ودليل أي نموذج Claude تختار يقارن بينها. وانسخ كل معرّف كما تكتبه قائمتنا، بنقطة في رقم الإصدار، حتى حين يكتبه توثيق Anthropic بشرطة. وتعيد الدالة client.models.list() النماذج التي يستطيع مفتاحك استخدامها، كما في عرض النماذج.

الطريق الثاني: انتقل إلى مكتبة Anthropic#

إعدادات Claude الخاصة، مثل cache_control وإعدادات التفكير وoutput_config، موجودة في صيغة Anthropic. وخبير متوافق مع واجهة Anthropic Messages، لذلك تعمل معه المكتبة الرسمية. ثبّتها بالأمر pip install anthropic:

Python
import os
from anthropic import Anthropic

client = Anthropic(
    base_url="https://api.5abeer.ai",
    api_key=os.environ["KHABEER_API_KEY"],
)

message = client.messages.create(
    model="claude-sonnet-5.5",
    max_tokens=4096,
    system="Answer in two sentences.",
    messages=[{"role": "user", "content": "What is a context window?"}],
)

print("".join(block.text for block in message.content if block.type == "text"))

وتختلف أربعة أمور عن كود OpenAI:

  • لا يحتوي العنوان الأساسي على /v1، فمكتبة Anthropic تضيف المسار بنفسها.
  • الحقل max_tokens مطلوب، والتعليمات توضع في الحقل system في أعلى الطلب.
  • التفكير يعمل افتراضيًا في نماذج Claude 5. وتحسب Anthropic توكنات التفكير ضمن max_tokens وتحاسب عليها كتوكنات إخراج، فاترك لها مساحة: الأمثلة هنا تستخدم 4096.
  • الرد قائمة من الكتل، وقد تأتي كتلة thinking قبل النص. فاقرأ كتل text، لا الكتلة الأولى.

وتقرأ المكتبة أيضًا المتغيرين ANTHROPIC_BASE_URL وANTHROPIC_API_KEY من البيئة، كما في العناوين الأساسية.

ما الفرق بين Chat Completions وMessages؟#

المحادثة نفسها في حقول مختلفة. والانتقال إلى Messages يعني تغيير هذه الأسماء:

في Chat Completionsفي Messages
العنوان الأساسي https://api.5abeer.ai/v1العنوان الأساسي https://api.5abeer.ai دون /v1
الترويسة Authorization: Bearerالترويستان x-api-key وanthropic-version: 2023-06-01، وتعمل Bearer أيضًا
رسالة دورها systemالحقل system في أعلى الطلب
max_tokens اختياريmax_tokens مطلوب
choices[0].message.contentكتل text داخل content
stopstop_sequences
parameters في الدالةinput_schema في الأداة
رسالة دورها toolكتلة tool_result داخل رسالة user
reasoning_efforteffort داخل output_config
response_formatأداة لها مخطط
prompt_tokens وcompletion_tokensinput_tokens وoutput_tokens
أجزاء فيها deltaأحداث لها أسماء مثل content_block_delta

وكل حقل في مرجع Messages، والأداة نفسها بكل صيغة في استدعاء الأدوات.

ما خيارات OpenAI التي تعمل مع Claude في خبير؟#

من مرجع Chat Completions في خبير. والخيار المتجاهَل لا يسبب خطأ، لكن لا يكون له أي أثر.

الخيارمع نماذج Claude في خبير
messages بالأدوار system وuser وassistant وtoolمدعوم، ومعه الصور
max_completion_tokens أو max_tokensمدعوم
stream وstream_optionsمدعوم
tools وtool_choiceمدعوم، وأبقِ tool_choice على auto (انظر ما بعد الجدول)
reasoning_effortمدعوم
temperature وtop_pيُمرَّر إلى النموذج (انظر ما بعد الجدول)
response_formatمتجاهَل: استخدم أداة لها مخطط
stopمتجاهَل: استخدم stop_sequences في Messages
parallel_tool_calls وn وseed وpresence_penalty وfrequency_penalty وlogprobs وlogit_bias وuserمتجاهَلة

ويضيف توثيق Anthropic، الذي راجعناه في 2026-11-03، قيدين. في نماذج Claude 4.7 وما بعدها، القيمة غير الافتراضية لـ temperature أو top_p تعيد الخطأ 400. وفي claude-opus-5.5 وclaude-sonnet-5.5 وclaude-fable-5.1 يعيده كذلك فرض استدعاء أداة عبر tool_choice. فاحذف temperature وtop_p من الطلب، وأبقِ tool_choice على auto، واذكر في نص الطلب اسم الأداة التي تريدها.

كيف أحصل على JSON من Claude؟#

لا أثر للخيار response_format مع نماذج Claude في Chat Completions على خبير، لذلك اطلب JSON عبر أداة. وفي مكتبة Anthropic صِف أداة يحمل حقلها input_schema الحقول التي تريدها، ثم اقرأها من كتلة tool_use:

Python
tools = [{
    "name": "save_city",
    "description": "Save facts about a city.",
    "input_schema": {
        "type": "object",
        "properties": {
            "city": {"type": "string"},
            "country": {"type": "string"},
            "population": {"type": "integer"},
        },
        "required": ["city", "country", "population"],
    },
}]

message = client.messages.create(
    model="claude-sonnet-5.5",
    max_tokens=4096,
    tools=tools,
    messages=[{"role": "user", "content": "Call save_city with the facts about Tokyo."}],
)

calls = [block for block in message.content if block.type == "tool_use"]
if calls:
    print(calls[0].input["city"], calls[0].input["population"])
else:
    print("No tool call, stop_reason:", message.stop_reason)

ومع tool_choice على auto يقرر النموذج هل يستدعي الأداة، لذلك أبقِ التحقق من غياب كتلة tool_use. وطريقة إرسال نتيجة الأداة إلى النموذج في استدعاء الأدوات.

هل ينتقل التخزين المؤقت للطلبات؟#

لا ينتقل تلقائيًا. مع نماذج Claude تحدد ما يُخزَّن بإضافة cache_control إلى كتلة من المحتوى، وهذا الحقل موجود في Messages وحدها. فإن كانت طلباتك تكرر تعليمات أو مستندات طويلة، فهذا وحده سبب كافٍ للطريق الثاني، وانظر التخزين المؤقت للطلبات.

هل يعمل البث المتدفق؟#

نعم، في الطريقين. مع مكتبة OpenAI يعمل stream=True كما كان. ومع مكتبة Anthropic تعطيك الدالة المساعدة messages.stream النص أثناء كتابته:

Python
with client.messages.stream(
    model="claude-sonnet-5.5",
    max_tokens=4096,
    messages=[{"role": "user", "content": "Write a short poem about the sea."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

والأحداث التي يتكوّن منها البث في البث المتدفق.

الأخطاء الشائعة#

ما تراهالسبب المحتملالحل
403 مع MODEL_PLATFORM_NOT_ALLOWEDالمفتاح لنماذج GPT أو Geminiأنشئ مفتاحًا لنماذج Claude، كما في مفتاح لكل مزوّد
401 مع INVALID_API_KEYما زال الكود يرسل مفتاح OpenAIضع مفتاحك من خبير في المتغير الذي يقرؤه الكود
404 Not Foundأُضيف /v1 إلى العنوان الأساسي في مكتبة Anthropicاستخدم https://api.5abeer.ai
400 لطلب كان يعمل مع GPTقيمة غير افتراضية لـ temperature أو top_p، أو فرض استدعاء أداةاحذف temperature وtop_p، واجعل tool_choice على auto
stop_reason قيمته max_tokens، والنص قليل أو غائبنفد max_tokens، وغالبًا في التفكيرارفع max_tokens
AttributeError عند choicesكود مكتوب لـ Chat Completions يقرأ ردًّا من Messagesاقرأ كتل text داخل content

وكل الرموز في رموز الأخطاء وحدود الـ API.

اختبره بطلب واحد#

قبل أن تعدّل مشروعًا كبيرًا، أرسل طلبًا واحدًا بمفتاحك لنماذج Claude. فإن عاد رد، فالعنوان الأساسي والمفتاح ومعرّف النموذج صحيحة:

curl --request POST "https://api.5abeer.ai/v1/messages" \
  --header "x-api-key: $KHABEER_API_KEY" \
  --header "Content-Type: application/json" \
  --header "anthropic-version: 2023-06-01" \
  --data '{"model":"claude-sonnet-5.5","max_tokens":512,"messages":[{"role":"user","content":"اكتب فكرة منتج في سطر واحد"}]}'
الرد
{
  "id": "msg_01Xh7",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-5.5",
  "content": [
    {
      "type": "text",
      "text": "مرحبًا! كيف أساعدك اليوم؟"
    }
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 21,
    "output_tokens": 12
  }
}

المفتاح يُقرأ من متغير البيئة ⁦KHABEER_API_KEY⁩، فلا يظهر في الكود.

عنوان Anthropic المتوافق مع OpenAI أم عنوان خبير؟#

لدى Anthropic عنوانها الخاص المتوافق مع OpenAI. راجعنا الفروق في 2026-11-03 في توثيق Anthropic وتوثيقنا:

عنوان Anthropic المتوافق مع OpenAIخبير
العنوان الأساسيhttps://api.anthropic.com/v1/https://api.5abeer.ai/v1
المفتاحمفتاح Anthropic APIمفتاح من خبير لنماذج Claude
معرّف النموذجمعرّفات Anthropic، بشرطة في رقم الإصدارمعرّفات قائمتنا، مثل claude-sonnet-5.5
response_formatjson_schema مع strict: true فقطمتجاهَل: استخدم أداة لها مخطط
reasoning_effortمتجاهَلمدعوم
stopيعمل مع النصوص التي ليست مسافات فقطمتجاهَل: استخدم stop_sequences في Messages
التخزين المؤقت للطلباتغير متاح بهذه الصيغةغير متاح بهذه الصيغة، واستخدم cache_control في Messages

وتقول Anthropic إن هذه الطبقة مخصصة أساسًا لاختبار قدرات النماذج ومقارنتها، وتحيل إلى واجهتها الأصلية للحصول على كل الميزات. والأمر نفسه هنا: مكتبة OpenAI هي الطريق السريع، وMessages هي مكان إعدادات Claude الخاصة.

كم يكلّف الانتقال؟#

يدفع مفتاح API من خبير ثمن التوكنات من رصيدك، وكل نموذج مسعّر بالتوكن أقل من سعره الرسمي. ومثال على ذلك: 3,000 طلب إلى claude-sonnet-5.5، في كل طلب نحو 2,000 توكن إدخال و500 توكن إخراج، ومنها توكنات التفكير:

مثال: تكلفة ⁦Claude Sonnet 5.5⁩

6 مليون توكن إدخال و1.5 مليون توكن إخراج

سعرنا‏405.00 ج.م‏أقل من السعر الرسمي بنسبة 70%‎
السعر الرسمي‏1,350.00 ج.م‏

السعر الرسمي من صفحة المزوّد، بتاريخ 19 أكتوبر 2026.

والأسعار المباشرة في صفحة Claude API، ويشرح دليل ما هو التوكن كيف يتحول الطلب إلى توكنات. ولكل مفتاح حد للإنفاق وتاريخ انتهاء وقائمة عناوين IP المسموح بها، كما في تحكّم في كل مفتاح.

والباقات مخصصة للتطبيقات المدعومة، ولاستخدام النماذج من الكود الخاص بك أنشئ مفتاح API. وإن أردت Claude في الطرفية لا في الكود، فراجع Claude Code.

أسئلة شائعة#

هل أستطيع الاحتفاظ بكود OpenAI واستدعاء Claude؟#

نعم. اجعل العنوان الأساسي في مكتبة OpenAI https://api.5abeer.ai/v1، واستخدم مفتاحًا لنماذج Claude، ومرّر معرّف نموذج من Claude. ويعمل Chat Completions وResponses كلاهما.

متى تستحق مكتبة Anthropic إعادة الكتابة؟#

حين تحتاج cache_control أو إعدادات التفكير أو output_config. أما طلبات المحادثة واستدعاء الأدوات العادية فتكفيها الإعدادات الثلاثة، ويبقى مسار واحد في الكود قادرًا على استدعاء عدة مزوّدين.

لماذا يعيد Claude الخطأ 400 لطلب كان يعمل مع GPT؟#

السبب المعتاد قيمة لـ temperature أو top_p، أو فرض استدعاء أداة. فأحدث نماذج Anthropic ترفض القيمة غير الافتراضية لـ temperature أو top_p، وترفض tool_choice الذي يفرض أداة. احذف هذه الإعدادات وأعد المحاولة.

هل أحتاج إلى مفتاح جديد لـ Claude؟#

نعم. يعمل المفتاح في خبير مع نماذج مزوّد واحد، فالمفتاح الخاص بنماذج GPT لا يستدعي Claude. أنشئ مفتاحًا لنماذج Claude، وكل مفاتيحك تسحب من الرصيد نفسه.

هل أعيد كتابة التعليمات؟#

تنصح Anthropic بمراجعتها: فالتعليمات المضبوطة بدقة لنماذج GPT قد تحتاج إلى تعديل لتحصل على أفضل ما في Claude. جرّب أهم تعليماتك بطلب الاختبار في الأعلى قبل أن تنقل الباقي.

المصادر#

راجعناها في 2026-11-03:

ابدأ#

أنشئ مفتاحًا لنماذج Claude، واحفظه في المتغير KHABEER_API_KEY، وشغّل طلب الاختبار في الأعلى، ثم غيّر العنوان الأساسي ومعرّف النموذج في مشروعك كله.