ما هي واجهة برمجة تطبيقات LLM؟ كيف يعمل ومتى تستخدمه
واجهة برمجة تطبيقات LLM هي خدمة ويب تشغل نموذج لغة كبير لك. ترسل برمجيتك النص عبر HTTP، ويرسل النموذج النص مرة أخرى، وتدفع مقابل ما تستخدمه.
تم التحديث

نقاط رئيسية
- واجهة برمجة تطبيقات LLM هي نقطة نهاية HTTP: تُرسل الرسائل عبر POST، وتتلقى إكمالًا.
- الفوترة تكون لكل رمز، وتُحسب بشكل منفصل للإدخال والإخراج.
- تتشارك واجهات برمجة التطبيقات المتوافقة مع OpenAI في تنسيق طلب واحد، لذا فإن التبديل بين المزودين يتطلب في الغالب تغيير Base URL فقط.
- يحوّل البث المتدفق، استدعاء الدوال ووضع JSON نقطة نهاية الدردشة العادية إلى كتلة بناء لبرمجيات حقيقية.
النسخة المختصرة
إذن، ما هي واجهة برمجة تطبيقات LLM؟ إنها خدمة تعرض نموذج لغة من خلال عنوان ويب. لا تقوم بتنزيل النموذج، ولا تمتلك معالج رسوميات GPU، ولا تدير برامج الاستنتاج. ترسل طلبًا يحتوي على محادثة، وتعيد الخدمة الرسالة التالية في تلك المحادثة.
فكر فيها كما تفكر في واجهة برمجة تطبيقات الدفع أو واجهة برمجة تطبيقات الخرائط. طرف آخر يدير البنية التحتية المعقدة، وأنت تستدعيها من برنامجك باستخدام مفتاح يحدد هويتك. النموذج هو المنتج، وواجهة برمجة التطبيقات هي الباب إليه.
هذا الباب هو HTTP عادي مع جسم JSON (body)، مما يعني أنه يعمل من Python، وNode، وGo، وسكريبت shell، أو ماكرو جدول بيانات، أو إضافة VS Code. لا شيء فيه مرتبط بلغة واحدة أو إطار عمل واحد.
كيف يبدو الطلب والاستجابة
معظم واجهات برمجة تطبيقات LLM اليوم تحاكي الشكل الذي قدمته OpenAI للدردشة. تستدعي نقطة نهاية واحدة، POST /v1/chat/completions، وترسل قائمة من الرسائل. تحتوي كل رسالة على role وcontent.
- يحدد
systemالقواعد والشخصية لكامل المحادثة. - يُمثل
userما يقوله الشخص (أو برنامجك). - يُمثل
assistantما قاله النموذج سابقًا، والذي ترسله مرة أخرى ليحافظ على سياق السلسلة. - يحمل
toolنتيجة دالة طلب منك النموذج تشغيلها.
التفاصيل الأساسية هي أن النموذج لا يملك ذاكرة بين الاستدعاءات. يجب أن يحمل كل طلب كامل المحادثة التي تريد منه النظر فيها. إذا كنت تريد روبوت دردشة يتذكر آخر عشر أدوار، فيجب أن يخزن برنامجك هذه الأدوار العشرة ويرسلها في كل مرة.
إليك أصغر استدعاء مفيد باستخدام curl. يستخدم نقطة نهاية هذا الموقع، ومعرف النموذج uncensored، ورمز bearer.
curl https://api.codingllmapi.com/v1/chat/completions \
-H "Authorization: Bearer $LLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain what a mutex is in two sentences."}
]
}'
الاستجابة بصيغة JSON. النص الذي تريده موجود عند choices[0].message.content. بجانبه تحصل على كائن usage الذي يبلغ عن عدد الرموز الداخلة وعدد الرموز الخارجة، وهو ما تُبنى عليه الفاتورة.
الرموز: الوحدة التي يُقاس بها كل شيء
لا يقرأ النموذج أحرفًا أو كلمات. يقرأ الرموز (tokens)، وهي أجزاء من النص قد تكون كلمة قصيرة أو جزءًا من كلمة أطول. يبلغ متوسط النثر الإنجليزي أقل قليلًا من رمز واحد لكل كلمة، بينما يميل الكود إلى استخدام رموز أكثر لكل سطر بسبب علامات الترقيم والمسافات البادئة. تعامل أي تحويل دقيق على أنه تقدير واقرأ حقل usage للحصول على العدد الفعلي.
تكتسب الرموز أهمية لثلاثة أسباب.
- السعر. تدفع مقابل كل مليون رمز، بمعدل واحد للإدخال (الموجّه الخاص بك) ومعدل أعلى للإخراج (إجابة النموذج).
- نافذة السياق. يتشارك الموجّه والإجابة في حد واحد. في واجهة برمجة التطبيقات هذه، تبلغ نافذة السياق 100,000 رمز إجماليًا.
- السرعة. يُنتج الإخراج رمزًا تلو الآخر، لذا تستغرق الإجابة الطويلة وقتًا أطول من الإجابة القصيرة.
مع المعدلات على هذا الموقع، $0.15 لكل مليون رمز إدخال و $0.50 لكل مليون رمز إخراج، فإن طلبًا يحتوي على 2,000 رمز إدخال و 500 رمز إخراج يكلف 2,000 × $0.15 / 1,000,000 = $0.0003 للإدخال بالإضافة إلى 500 × $0.50 / 1,000,000 = $0.00025 للإخراج. هذا إجمالي $0.00055، لذا فإن ألف طلب من هذا النوع تكلف $0.55. المعدلات الحالية تظهر دائمًا على صفحة الأسعار.
استدعاء واجهة برمجة تطبيقات LLM من الكود
يمكنك كتابة طلب HTTP يدوياً، لكن الـ SDK يوفر الجهد. وبما أن هذه الواجهة متوافقة مع OpenAI، فإن المكتبات الرسمية لـ OpenAI تعمل بعد تغيير قيمتين: Base URL ومفتاح الوصول.
Python
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.codingllmapi.com/v1",
api_key=os.environ["LLM_API_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a careful code reviewer."},
{"role": "user", "content": "What is wrong with: for i in range(len(x)): print(x[i])"},
],
temperature=0.3,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
Node
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.codingllmapi.com/v1",
apiKey: process.env.LLM_API_KEY,
});
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Give me three names for a CLI that renames files." }],
});
console.log(resp.choices[0].message.content);
احتفظ بالمفتاح في متغير بيئة أو مستودع أسرار. يمكن لأي شخص يعثر على مفتاح مُدرج في كود الواجهة الأمامية أو مستودع عام استخدامه، وستتحمل الرسوم.
ميزات تحوّل مربع الدردشة إلى مكون أساسي
الإكمال الأساسي مفيد، لكن معظم البرامج الحقيقية تستخدم واحدة على الأقل من الخيارات التالية.
البث المتدفق
عيّن stream: true، ويرسل الخادم الإجابة كـ أحداث مرسلة من الخادم (SSE)، رمزاً تلو الآخر. يرى المستخدمون النص يظهر فوراً بدلاً من الانتظار حتى اكتمال الرد. تصل أرقام الاستخدام في نهاية البث المتدفق.
وضع JSON
مرر response_format: {"type": "json_object"}، ويتم توجيه النموذج لإرجاع JSON صالح. هذه هي الطريقة لاستخراج الحقول من النصوص غير المنظمة، أو تصنيف التذاكر، أو إنتاج بيانات منظمة للخطوة التالية في خط الأنابيب. لا تزال بحاجة إلى التحقق من صحة النتيجة في الكود الخاص بك، وتحديد المفاتيح المتوقعة في الموجّه (prompt).
استدعاء الدوال
تصف الدوال في مصفوفة tools. قد يجيب النموذج بطلب لاستدعاء واحدة، مع تعبئة الحجج. يقوم الكود الخاص بك بتشغيل الدالة وإرسال النتيجة مرة أخرى كرسالة مع role: "tool". لا ينفذ النموذج أي شيء بنفسه. هو فقط يطلب، وأنت تقرر ما الذي يتم تنفيذه فعلياً. هذه هي الآلية وراء وكلاء البرمجة الذين يقرؤون الملفات ويشغلون الاختبارات.
ضوابط أخذ العينات
يتم تمرير temperature، top_p، stop، seed وعقوبات التكرار. تعطي درجة الحرارة المنخفضة إجابات أكثر استقرارًا للكود والاستخراج. تعطي القيم الأعلى نثرًا أكثر تنوعًا.
واجهة برمجة التطبيقات المستضافة أو تشغيل نموذج بنفسك
البديل لواجهة برمجة التطبيقات هو تشغيل نموذج مفتوح الأوزان على أجهزتك الخاصة. هذا خيار معقول، ويستحق أن تكون صادقًا بشأن متى يفوز.
| السؤال | واجهة برمجة التطبيقات المستضافة | مستضافة ذاتياً |
|---|---|---|
| التكلفة الأولية | لا شيء، تدفع لكل رمز | شراء أو استئجار GPU |
| وقت الإعداد | دقائق | ساعات إلى أيام |
| التوسع | محدود بحدود المعدل لمفتاحك | محدود بعتادك |
| تغادر البيانات جهازك | نعم، إلى المزود | لا |
| التكلفة أثناء الخمول | صفر | تدفع حتى عندما لا يعمل شيء |
إذا كنت ترسل بضع آلاف من الطلبات يومياً، أو كان استخدامك متقطعاً، فإن تسعير الرمز (token) هو عادةً المسار الأسهل. إذا كان لديك حمل مستمر عالي وقواعد صارمة تمنع إرسال النص إلى أي طرف ثالث، فإن الاستضافة المحلية قد تكون أكثر منطقية. تبدأ العديد من الفرق باستخدام واجهة برمجة التطبيقات (API) للتحقق من صحة الفكرة وتعود إلى هذا السؤال لاحقاً.
الحدود والأخطاء والعادات الجيدة
لكل واجهة برمجة تطبيقات حدود، ومعرفة هذه الحدود مبكرًا يوفر وقت تصحيح الأخطاء. في هذه الخدمة، يسمح المفتاح الكامل بـ 8 طلبات متزامنة و300 طلب في الدقيقة. يسمح المفتاح التجريبي بـ 2 و60. الحد الأقصى لحجم الطلب هو 8 ميجابايت. يحافظ الطلب المتدفق على فتحة التزامن الخاصة به حتى انتهاء البث المتدفق، وهو ما يُصيب الأشخاص الذين يفتحون العديد من التدفقات وينسون إغلاقها.
تجاوز الحد يعيد خطأ HTTP 429. رمز الخطأ rate_limited يعني عددًا كبيرًا جدًا من الطلبات في الدقيقة، وconcurrency يعني عددًا كبيرًا جدًا في وقت واحد. يشير خطأ 429 مع رأس Retry-After: 5 إلى زيادة مؤقتة في الحمل. في جميع الحالات الثلاث، يكون الرد الصحيح هو الانتظار وإعادة المحاولة مع تراجع، وليس الضغط على نقطة النهاية.
- اقرأ
X-RateLimit-Limit-RequestsوX-RateLimit-Limit-Concurrencyمن رؤوس الاستجابة لمعرفة حدودك، وX-Balance-USDلمراقبة رصيدك. - سجّل
X-Request-Idمع كل استدعاء. هذا يجعل الإجابة على أسئلة الدعم أسرع بكثير. - حدد مهلة زمنية معقولة وحداً لطول المحادثة حتى لا ينفد رصيدك بسبب حلقة غير مسيطر عليها.
- قم بتقليص المحادثات القديمة قبل أن تملأ نافذة السياق.
الطلبات الفاشلة أو المرفوضة لا تُحتسب في واجهة برمجة التطبيقات هذه، ولا ينتهي الرصيد المسبق الدفع، لذا فإن الخطأ في الاختبار يكلف القليل.
البدء باستخدام واجهة برمجة التطبيقات (API) هذه
هذه الخدمة هي واجهة برمجة تطبيقات نصية متوافقة مع OpenAI لنموذج واحد مفتوح الأوزان، وتشغلها جهة مستقلة ومضبوطة للإجابة بدون رفض المحتوى للاستخدام القانوني للبالغين. هي للنص فقط: لا صور، ولا صوت، ولا تضمينات (embeddings)، ولا ضبط دقيق (fine-tuning). ليست واجهة برمجة التطبيقات الرسمية لأي بائع نماذج. لا تُستخدم الموجّهات (prompts) للتدريب.
يمكن للمستخدمين الجدد المطالبة بـ $0.50 من رصيد تجريبي مجاني بنقرة واحدة في صفحة مفتاح API بعد تسجيل الدخول باستخدام Google أو عبر البريد الإلكتروني وكلمة المرور. لا يتطلب بطاقة ويستمر لمدة 7 أيام. بعد ذلك، يمكنك شحن الرصيد بمبلغ صحيح يتراوح بين $20 و$500، مع مكافأة بنسبة 5% من $50، و10% من $100، و15% من $200. يمكنك الدفع بالبطاقة (Visa، Mastercard، Apple Pay، Google Pay) أو بالعملات المشفرة (USDT على TRC20، USDC على Base).
الخطوات قصيرة: إنشاء مفتاح API الخاص بك، اتبع البدء السريع في الوثائق، وشغّل مقتطف Python أعلاه. إذا كان استخدامك الرئيسي هو مساعدة البرمجة، فإن الصفحة حول نموذج بدون رقابة لوكلاء البرمجة تغطي هذه الحالة بتفصيل أكثر.
المزيد من الأدلة
أسئلة وأجوبة
هل واجهة برمجة تطبيقات LLM هي نفسها روبوت الدردشة؟
لا. روبوت الدردشة هو تطبيق يحتوي على واجهة. واجهة برمجة تطبيقات LLM هي الخدمة خلف مثل هذا التطبيق، وتستدعيها من كودك الخاص لبناء الواجهة أو سير العمل الذي تريده.
هل أحتاج إلى معرفة تعلم الآلة لاستخدام واحدة؟
لا. إذا كنت تستطيع إرسال طلب HTTP أو استخدام SDK، يمكنك استخدام واجهة برمجة تطبيقات LLM. تحتاج إلى فهم الموجّهات (prompts) والرموز (tokens)، ولكن ليس كيفية تدريب النموذج.
ماذا يعني متوافق مع OpenAI؟
هذا يعني أن واجهة برمجة التطبيقات (API) تقبل نفس تنسيق الطلب الخاص بنقطة النهاية للدردشة في OpenAI. تعمل حزم SDK والأدوات الموجودة من OpenAI بعد تغيير Base URL والمفتاح.
كم تكلفة واجهة برمجة تطبيقات LLM؟
يقوم المزودون عادةً بتحصيل الرسوم لكل مليون رمز، بمعدلات منفصلة للإدخال والإخراج. هنا السعر هو $0.15 لكل مليون رمز إدخال و $0.50 لكل مليون رمز إخراج، من رصيد مسبق الدفع بدون اشتراك.
هل تُستخدم بياناتي لتدريب النموذج؟
في هذه الخدمة، لا تُستخدم الموجّهات للتدريب. بالنسبة لأي مزود آخر، اقرأ سياسة البيانات الخاصة به قبل إرسال النصوص الحساسة.
مفتاحك على بُعد استمارة واحدة فقط
أنشئ حساباً، وانسخ المفتاح، ثم غيّر Base URL. هذه هي الإعدادات الكاملة.
احصل على مفتاح API