أدلة الانتقالمن حزم SDK المباشرة من OpenAI وAnthropic
من استدعاءات SDK المباشرة إلى طبقة تحكم واحدة
تبدأ معظم الفرق باستدعاء OpenAI أو Anthropic بـ SDK الخاص بالمورّد ومفتاح في متغير بيئة. ينجح ذلك حتى تتعدد الخدمات والمفاتيح وتأتي فاتورة شهرية لا يستطيع أحد توزيعها. هذه الصفحة هي التعديل الذي يضع INFRO أمام تلك الاستدعاءات دون تغيير SDK أو حساب المزوّد أو العقد.
كودك الخاص، يستدعي SDK كل مزوّد بمفتاح ذلك المزوّد
التسجيل في INFRO ذاتي، دون وسيط. الكتالوج والتوثيق وعقد API متاحة للعموم، والبوابة قيد التشغيل، وكل ما يتجاوز v1 موسوم بـ «لاحقًا». الباقات والفترة التجريبية
أين وصلت الأمور
ما لديك
مفاتيح المزوّدين موزّعة في بيئة كل خدمة، وإعادة المحاولة والمهلات مكتوبة في كل قاعدة كود على حدة، والتكلفة لا تظهر إلا في فاتورة المزوّد أو صفحة الاستخدام لديه، وفي أحسن الأحوال حسب المفتاح أو المشروع.
ما يتغير
يشير كل عميل إلى https://api.infro.io بمفتاح بوابة INFRO. تنتقل مفاتيح مزوّديك إلى INFRO كاتصالات مشفّرة؛ ويواصل مزوّدوك محاسبتك مباشرةً بأسعارك أنت.
ما لا يتغير
مكتبات SDK، وصيغ الطلبات والاستجابات، والبث، واستدعاءات الأدوات، والمخرجات المهيكلة على chat completions. تدعم INFRO صيغتي Chat Completions وResponses الخاصتين بـ OpenAI وصيغة Messages الخاصة بـ Anthropic.
البوابة نقطة عبور إضافية ومورّد إضافي. وفي بعض البيئات لا تستحق ذلك بعد، وهذه القائمة تقول ذلك بصراحة.
- خدمة واحدة، ومزوّد واحد، ومفتاح واحد، وفاتورة يراجعها شخص واحد. هنا تضيف البوابة خطوة إضافية في المسار واشتراكًا قبل أن تقدّم لك شيئًا تحتاجه.
- عبء عملك في معظمه Batch أو ضبط دقيق أو Files أو مخازن متجهات أو Realtime API. لا تخدم INFRO أيًّا منها؛ وستبقى تلك الاستدعاءات مباشرة على أي حال.
- تعتمد على ميزة لدى المزوّد لا تحملها صيغ المحادثة، ولا تستخدم إلا ذلك المزوّد. الاستدعاءات التي لا تستطيع INFRO حملها من الأفضل تركها مباشرة على تحويلها جزئيًا.
- تحتاج إلى أن يبقى كل طلب داخل منطقة سحابية واحدة. تعمل INFRO على شبكة Cloudflare وتثبيت المنطقة غير متاح اليوم.
التعديلات، صف لكل منها. كل ما لم يُذكر هنا يبقى كما هو.
| استدعاءات SDK المباشرة | INFRO | |
|---|---|---|
| عنوان URL الأساسي | الافتراضي في SDK: api.openai.com/v1 وapi.anthropic.com. | https://api.infro.io/v1 لـ OpenAI SDK؛ وhttps://api.infro.io لـ Anthropic SDK (الذي يضيف /v1/messages). |
| المفتاح | OPENAI_API_KEY وANTHROPIC_API_KEY في كل خدمة. | مفتاح بوابة INFRO (Authorization: Bearer؛ ويُقبل أيضًا x-api-key الخاص بـ Anthropic SDK). تُدخَل مفاتيح المزوّدين مرة واحدة، في لوحة التحكم، كاتصالات. |
| معرّف النموذج | gpt-5.6-terra, claude-sonnet-5-5. | openai/gpt-5.6-terra على chat completions، أو اسم مسار. ويمكن لـ Anthropic SDK الإبقاء على claude-sonnet-5-5: فـ /v1/messages يقرأ معرّفات Anthropic الخاصة. |
| إسناد التكلفة | عادةً لا شيء، أو حقل user لدى المزوّد. | metadata.user_id وmetadata.session_id وmetadata.tags في الجسم، أو الترويستان X-INFRO-User-Id / X-INFRO-Feature. تُسجَّل على الطلب، ولا تُرسل إلى المزوّد أبدًا. |
قبل · حزم SDK الخاصة بالمزوّدين
import OpenAI from "openai";
import Anthropic from "@anthropic-ai/sdk";
const openai = new OpenAI(); // reads OPENAI_API_KEY
const anthropic = new Anthropic(); // reads ANTHROPIC_API_KEY
await openai.chat.completions.create({
model: "gpt-5.6-terra",
messages: [{ role: "user", content: "Hello" }],
});
await anthropic.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
});بعد · INFRO
import OpenAI from "openai";
import Anthropic from "@anthropic-ai/sdk";
const openai = new OpenAI({
baseURL: "https://api.infro.io/v1",
apiKey: process.env.INFRO_API_KEY,
});
const anthropic = new Anthropic({
baseURL: "https://api.infro.io",
apiKey: process.env.INFRO_API_KEY,
});
await openai.chat.completions.create({
model: "openai/gpt-5.6-terra",
messages: [{ role: "user", content: "Hello" }],
});
await anthropic.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
});التحويل التلقائي دون كود جديد
اربط Claude على Anthropic وعلى Vertex AI، أو مفتاحين لدى Anthropic، فيتحوّل الطلب الذي يحدد النموذج بينهما تلقائيًا عند الأعطال. ويحدد المسار المسمّى في الإعدادات ترتيب الأهداف وقواعد كل نوع من الأعطال (429، 5xx، انتهاء المهلة).
الميزانيات قبل الاستدعاء
الميزانيات على مستوى المؤسسة والمشروع والعضو والمفتاح تحجز أسوأ حالات الطلب قبل استدعاء المزوّد. وعند السقف تكون الإجابة 402 budget_exceeded، في غلاف الأخطاء الخاص بالواجهة نفسها.
ما يجب تركه كما هو
تحتفظ Batch وFiles والضبط الدقيق ومخازن المتجهات والإشراف على المحتوى وRealtime بعميلها المباشر. ويمكن لخدمة واحدة أن تحمل العميلين: واحد عبر INFRO وآخر مباشر. التضمينات تنتقل، لكن احتفظ بالنموذج نفسه بالضبط الذي بنى فهرسك: المتجهات من نماذج مختلفة غير قابلة للمقارنة.
ما يفعله إعدادك اليوم مقابل INFRO، مُتحقَّقًا منه وفق ما تطبّقه البوابة. يشير صف واحد إلى أن INFRO لا يوفّر ذلك.
| استدعاءات SDK المباشرة | ما تفعله هناك | في INFRO |
|---|---|---|
| مفتاح مزوّد لكل خدمةمختلف | تحتفظ كل خدمة بمفتاح المزوّد في بيئتها. | المفتاح اتصال مختوم في INFRO؛ وتحمل الخدمات مفاتيح بوابة محددة النطاق يمكن قصرها على مزوّدين ونماذج ونطاقات IP وبيئة، وتدويرها أو إيقافها. |
| إعادة المحاولة والمهلمختلف | إعادات المحاولة المدمجة في SDK، إضافةً إلى ما تضيفه كل قاعدة كود. | مسارات بأهداف مرتبة بالأولوية أو بأوزان عبر اتصالاتك، وقواعد أعطال حسب نوع الخطأ (429، 5xx، انتهاء المهلة). وتبقى إعادة المحاولة في SDK نفسه سارية فوق ذلك. |
| التكلفةمختلف | صفحة الاستخدام والفاتورة لدى المزوّد، حسب المفتاح أو المشروع. | تكلفة مزوّد تقديرية على كل استجابة (usage.cost وusage.price_source)، حسب المشروع والمفتاح والمستخدم والوسم؛ تُطابَق يوميًا مع واجهات التكلفة لدى OpenAI وAnthropic بمفتاح إداري تضيفه. |
| حدود الإنفاقمختلف | حدود المشاريع لدى المزوّد، إن كان يوفّرها. | ميزانيات ترفض عند السقف بـ 402، عبر كل المزوّدين في آن واحد، على مستوى المؤسسة والمشروع والعضو والمفتاح والعميل النهائي. |
| Chat Completions وResponsesالصيغة نفسها | واجهتا النصوص لدى OpenAI. | كلاهما، على /v1/chat/completions و/v1/responses. ويُرفض previous_response_id وbackground: لا تحتفظ INFRO بأي استجابات، لذا أرسل المحادثة في كل دور. |
| Anthropic Messagesالصيغة نفسها | /v1/messages، مع التفكير وcache_control وأدوات الخادم. | /v1/messages بصيغة Anthropic. على اتصال Anthropic، أو Claude على Vertex AI، يصل الجسم إلى المزوّد كما هو مكتوب. |
| الصور، والكلام، والتفريغ النصي، والفيديوالصيغة نفسها | نقاط نهاية الوسائط لدى المزوّد. | /v1/images و/v1/audio و/v1/videos بمهام غير متزامنة، لدى المزوّدين الذين يخدمون كل نموذج. |
| التضمينات (Embeddings)الصيغة نفسها | /v1/embeddings. | /v1/embeddings بصيغة OpenAI على اتصالك لدى OpenAI أو Azure OpenAI أو Mistral. التحويل التلقائي عند الأعطال إلى النموذج نفسه فقط، لتبقى المتجهات المخزّنة قابلة للمقارنة. |
| Batch وFiles والضبط الدقيق وRealtimeلا شيء | واجهات API على مستوى حساب المزوّد. | غير مخدومة، وليست مخططة كميزات للبوابة. تبقى لدى المزوّد. |
ما لا يفعله INFRO
- Batch وFiles والضبط الدقيق ومخازن المتجهات والإشراف على المحتوى وAssistants وRealtime API.
- الاستجابات المخزّنة: تُرفض
previous_response_idوconversationوbackground: trueعلى/v1/responsesبالرمز400. - تثبيت المنطقة. يعمل INFRO على شبكة Cloudflare؛ أما حصر البيانات في منطقة محددة فمُدرج في خارطة الطريق وغير متاح حاليًا.
- نشر مستضاف ذاتيًا دون اتفاقية مؤسسية.
ما الذي لا ينتقل
- سجل الاستخدام من قبل التحويل. تحتفظ به لوحة معلومات المزوّد نفسه؛ وتسجّل INFRO بدءًا من أول طلب تخدمه.
- حدود المشاريع لدى المزوّد. ضع ميزانيات في INFRO بدلًا منها، وتبقى حدود المزوّد سارية من جهته.
الأسئلة
- هل لا أزال أدفع لـ OpenAI وAnthropic مباشرةً؟
- نعم. تستدعي INFRO حسابات مزوّديك الخاصة بمفاتيحك، فيُصدر مزوّدوك فواتيرهم لك بأسعارك. تتقاضى INFRO اشتراكًا ولا تضيف أي هامش (0%) على الإنفاق على النماذج.
- هل أحتاج إلى تغيير SDK؟
- لا. يقبل OpenAI SDK قيمة
baseURLهيhttps://api.infro.io/v1، ويقبل Anthropic SDK قيمةbaseURLهيhttps://api.infro.io، وكلاهما يقبل مفتاح INFRO كمفتاح API. - ما الذي يجب أن يبقى لدى المزوّد مباشرةً؟
- Batch وFiles والضبط الدقيق ومخازن المتجهات والإشراف على المحتوى وRealtime. لا تخدمها INFRO. ويمكن نقل التضمينات: يعمل
/v1/embeddingsعلى اتصالات OpenAI وAzure OpenAI وMistral.
انتقل معنا، أو بمفردك
يطابق برنامج الترحيل إعداداتك في حزم SDK المباشرة من OpenAI وAnthropic مع اتصالات INFRO ومساراته وميزانياته خلال مكالمة، وينقل معك الخدمة الأولى. ويستمر مزوّدوك في محاسبتك مباشرة؛ وINFRO اشتراك يضيف 0% على الإنفاق على النماذج.
المصادر
سلوك SDK الموصوف في هذه الصفحة مأخوذ من هذه المصادر، وقد قرأناها في 19 أكتوبر 2026.
- OpenAI — openai-node README (client options)اطّلعنا عليه في 19 أكتوبر 2026
- OpenAI — openai-python README (client options)اطّلعنا عليه في 19 أكتوبر 2026
- Anthropic — TypeScript SDKاطّلعنا عليه في 19 أكتوبر 2026
- Anthropic — Python SDKاطّلعنا عليه في 19 أكتوبر 2026