القيم الثلاث التي تحتاجها
تأتي الأسئلة حول عنوان URL الأساسي لواجهة برمجة تطبيقات glm عادةً من شخص لديه عميل يريد عنوان URL ومفتاحًا واسم نموذج، ولا يعرف أي القيم تذهب إلى أين. إليك جميعها في مكان واحد.
| الإعداد | القيمة |
|---|---|
| عنوان URL الأساسي | https://api.glmapi.cc/v1 |
| معرّف النموذج | uncensored |
| رأس المصادقة | Authorization: Bearer YOUR_KEY |
| نقطة نهاية الدردشة | POST /v1/chat/completions |
| قائمة النماذج | GET /v1/models |
توضيح واحد قبل أن تنسخ أي شيء. الاسم في النطاق يشير إلى كلمة البحث، وليس إلى النموذج. هذه واجهة برمجة تطبيقات نصية متوافقة مع OpenAI ومستضافة، لنموذج واحد مفتوح الأوزان، تقدمها جهة مستقلة، ومُضبوطة للإجابة بدون رفض للمحتوى للاستخدام القانوني للبالغين. ليست واجهة برمجة التطبيقات الرسمية للجهة المطوِّرة لـ GLM، وليست وسيطًا يعيد التوجيه إلى جهات أخرى. إذا كنت بحاجة إلى نموذج GLM الرسمي، فاستخدم خدمة تلك الجهة.
تحصل على المفتاح عبر التسجيل باستخدام Google أو البريد الإلكتروني وكلمة المرور. تحتوي صفحة مفتاح API أيضًا على تجربة بقيمة $0.50 يمكن تفعيلها بنقرة واحدة، سارية لمدة 7 أيام دون الحاجة إلى بطاقة.
فحص الاتصال باستخدام curl
قبل استخدام أي SDK أو تطبيق، تحقق من المفتاح وURL بطلب بسيط. إذا نجح هذا، فإن كل المشاكل اللاحقة تكون في تكوين العميل الخاص بك وليست في الحساب. أولاً، اذكر النماذج:
curl https://api.glmapi.cc/v1/models \
-H "Authorization: Bearer YOUR_KEY"يجب أن تحصل على قائمة JSON تتضمن المعرف uncensored. ثم أرسل إكمال محادثة واحد:
curl https://api.glmapi.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Reply with the word ready."}],
"max_tokens": 20
}'أضف -i لعرض رؤوس الاستجابة. تتضمن X-Request-Id، X-Balance-USD (رصيدك المتبقي)، X-RateLimit-Limit-Requests وX-RateLimit-Limit-Concurrency. احتفظ بمعرف الطلب إذا احتجت إلى طلب دعم بشأن مكالمة.
Python و Node
تقبل واجهات برمجة التطبيقات الرسمية لـ OpenAI URL أساسي مخصص. تقوم بتغيير وسطين من وسيطات البناء واسم النموذج؛ يبقى باقي الكود كما هو.
Python
from openai import OpenAI
client = OpenAI(
base_url="https://api.glmapi.cc/v1",
api_key="YOUR_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Give me three names for a tavern."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.glmapi.cc/v1",
apiKey: process.env.GLM_API_KEY,
});
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Give me three names for a tavern." }],
});
console.log(resp.choices[0].message.content);خاصية Node هي baseURL بحروف كبيرة، بينما وسيط Python هي base_url. خلطهما هو طريقة كلاسيكية للعودة الصامتة إلى المضيف الافتراضي للـ SDK والحصول على خطأ مصادقة من الخادم الخاطئ.
متغيرات البيئة بدلاً من الكود
تقرأ مكتبات OpenAI SDK المتغيرات OPENAI_BASE_URL وOPENAI_API_KEY من البيئة عندما لا تمررها صراحة. هذه هي الطريقة الأقل تدخلاً لإعادة توجيه أداة لا يمكنك تحريرها، مثل سكربت من مستودع أو إطار عمل يبني العميل لك.
export OPENAI_BASE_URL="https://api.glmapi.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
python my_existing_script.pyلا يزال عليك تعيين اسم النموذج داخل الأداة أو ملف التكوين الخاص بها إلى uncensored، لأن متغير البيئة لا يحملها. إذا كان للأداة قائمة منسدلة للنماذج تعرض فقط الأسماء التي تعرفها، ابحث عن خيار نموذج مخصص أو نص حر.
احتفظ بالقيم في مكان واحد
بمجرد أن يعمل الاتصال، تجنب لصق URL في خمسة ملفات. ضع القيم الثلاث في مكان واحد واقرأها في كل مكان آخر. ملف .env يعمل للمشاريع الصغيرة:
GLM_BASE_URL=https://api.glmapi.cc/v1
GLM_API_KEY=YOUR_KEY
GLM_MODEL=uncensoredثم قم بتحميلها مرة واحدة عند بدء التشغيل وابنِ عميلًا واحدًا يستورده باقي البرنامج. تظهر الفائدة في اليوم الذي تغير فيه المفاتيح، أو تضيف مفتاح اختبار برصيد تجريبي، أو تقارن نقطة النهاية هذه بأخرى. تقوم بتحرير ملف، وليس قاعدة التعليمات البرمجية الخاصة بك.
احتفظ بمفاتيح منفصلة للتطوير والإنتاج حيث يسمح الحساب بذلك، وقم بتدوير المفتاح فورًا إذا ظهر في التزام، أو لقطة شاشة، أو سجل مشترك. ينفق المفتاح المسرب رصيدك المسبق الدفع، ولا يعود الرصيد.
تطبيقات المحادثة وأطر العمل
تختلف الواجهات الأمامية في الصياغة لكنها تطلب نفس القيم الثلاث. ابحث عن نوع اتصال يسمى OpenAI-compatible، أو custom OpenAI أو ما شابه، ثم املأ:
- عنوان API / العنوان الأساسي:
https://api.glmapi.cc/v1 - مفتاح API: المفتاح من حسابك
- النموذج:
uncensored
يتيح لك SillyTavern إضافة نقطة نهاية متوافقة مع OpenAI من خلال مصدر إكمال المحادثة المخصص الخاص به، ويوفّر Open WebUI نوع اتصال متوافق مع OpenAI في إعداداته. تأخذ أطر العمل مثل LangChain base_url على فئة نموذج المحادثة الخاصة بها، ويمكن لـ LiteLLM توجيه نموذج على طراز OpenAI من خلال URL أساسي لواجهة برمجة التطبيقات المخصصة. تتغير أسماء القوائم بين الإصدارات، لذا اتبع الوثائق الحالية لكل مشروع لمعرفة مكان الحقل بالضبط.
تسأل بعض التطبيقات عما إذا كنت تريد إضافة /chat/completions لك. تفعل ذلك تطبيقات كثيرة، مما يعني أن URL الذي تدخله يجب أن يتوقف عند /v1. إذا طلب التطبيق بدلاً من ذلك نقطة النهاية الكاملة، أعطه https://api.glmapi.cc/v1/chat/completions. يُظهر دليل البدء السريع حقول الطلب المدعومة بتفاصيل أكثر.
لماذا يفشل الاتصال الأول
إذا نجح اختبار curl ولا يزال التطبيق يعرض أخطاءً، فإن السبب يكون في الغالب أحد هذه:
- غياب
/v1. استخدامhttps://api.glmapi.ccوحده سيؤدي غالباً إلى خطأ "المسار غير موجود"، لأن المسارات موجودة تحت/v1. - مسار مكرر. التطبيق يضيف
/chat/completions، وأنت كتبته أيضاً، مما ينتج/chat/completions/chat/completions. احذفه من عنوان URL الأساسي. - شرطة مائلة في النهاية. بعض العملاء يدمجون المسارات بشكل سيء. احذف شرطة النهاية
/إذا رأيت شرطة مائلة مزدوجة في عنوان URL المسجل. - اسم النموذج غير الصحيح. معرف النموذج الوحيد هو
uncensored. لن تتطابق الأسماء من خدمات أخرى. - مشاكل المفتاح. تحقق من وجود مسافة أو سطر جديد عند اللصق، ومن إرسال المفتاح كـ
Bearerمرتين بواسطة تطبيق يضيف البادئة بالفعل. - استدعاء مضيف خاطئ. في تطبيق المتصفح، يؤدي عنوان URL الأساسي غير المحدد إلى العودة إلى القيمة الافتراضية لـ SDK. سجّل عنوان URL الفعلي للطلب.
تعرض الطلبات من جانب المتصفح مفتاحك لأي شخص يفتح أدوات المطوّر. لموقع عام، أرسل الطلبات من خادمك الخاص واحتفظ بالمفتاح هناك.
عندما لا يفسّر أي من ذلك المشكلة، اعمل بالرجوع إلى أصغر حالة ممكنة. شغّل أمر curl من السابق على نفس الجهاز الذي يعمل عليه التطبيق الذي يعرض الأخطاء. إذا نجح curl هناك، فإن الشبكة والمفتاح صحيحان، والتطبيق يبني الطلب بشكل مختلف، لذا فعّل سجلات التصحيح (debug logging) فيه وقارن عنوان URL المسجل، والرؤوس، وجسم الطلب بصيغة JSON مع نسخة curl حرفاً بحرف. إذا فشل curl على ذلك الجهاز فقط، فافحص خوادم البروكسي المؤسسية، وقواعد VPN، ومصفّيات DNS التي تحجب أحياناً أسماء مضيفي API غير المألوفة. الطلب الذي لا يصل إلى الخادم لا يعيد X-Request-Id، وهي طريقة سريعة للتمييز بين الحالتين.
الحدود واستجابات 429
المفتاح الكامل يسمح بـ 8 طلبات متزامنة و300 طلب في الدقيقة. المفتاح التجريبي يسمح بـ 2 و60. تجاوز أي منهما يجعل الواجهة ترجع HTTP 429 مع الرمز rate_limited (طلبات كثيرة في الدقيقة) أو concurrency (طلبات كثيرة في آن واحد). أثناء الحمل الزائد المؤقت، تحصل أيضًا على 429، مع رأس Retry-After: 5.
يحتفظ الطلب المتدفق بمكانه في الطلبات المتزامنة حتى ينتهي البث، لذا فإن التطبيق الذي يفتح بثاً ويتخلى عنه دون إغلاق الاتصال قد يستنفد موارد نفسه. الحد الأقصى لجسم الطلب هو 8 MB، ونافذة السياق هي 100,000 رمز تغطي الموجّه والإكمال معاً. لمعدلات الأسعار والشحن، انظر إلى صفحة التسعير.
يستخدم البث المتدفق، والأدوات، ووضع JSON نفس عنوان URL
لا يوجد عنوان منفصل للبث المتدفق أو استدعاء الدوال. كل شيء يذهب إلى /v1/chat/completions، وتفعّل الميزات في جسم الطلب. يضبط طلب البث المتدفق "stream": true ويعيد أحداثاً مرسلة من الخادم؛ ويضيف الطلب مع الأدوات tools وtool_choice اختيارياً؛ ويضيف وضع JSON response_format مع النوع json_object. تُمرر حقول أخذ العينات مثل temperature، top_p، stop، seed والعقوبات كما هي.
إليك استدعاء curl للبث المتدفق. مفتاح -N يعطل تخزين الإخراج مؤقتًا في curl، لترى القطع عند وصولها:
curl -N https://api.glmapi.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","stream":true,"messages":[{"role":"user","content":"Count to five."}]}'إذا كان الوكيل أو طبقة الاستضافة يخزّن الاستجابات مؤقتاً، فسيبدو البث المتدفق كاستجابة واحدة كبيرة ومتأخرة. غالباً ما تحتاج الوكلاء العكسيون (reverse proxies) إلى إيقاف تخزين الاستجابة مؤقتاً لأحداث الخادم المرسلة، لذا تحقق من هذا الإعداد قبل إلقاء اللوم على API. للحصول على نسخة Python عملية لكل ميزة، انظر إلى دليل البدء السريع.
المزيد من الأدلة
أسئلة وأجوبة
ما هو عنوان URL الأساسي لهذا API؟
https://api.glmapi.cc/v1. تُرسَل طلبات الدردشة إلى /chat/completions تحته، وقائمة النماذج موجودة في /models.
ما اسم النموذج الذي يجب استخدامه؟
استخدم uncensored. إنه معرف النموذج الوحيد، ويعمل في أي عميل على طراز OpenAI يسمح لك بكتابة نموذج مخصص.
هل هذه هي واجهة برمجة التطبيقات الرسمية لـ GLM؟
لا. إنها خدمة مستقلة ومتوافقة مع OpenAI تشغل نموذجًا واحدًا مفتوح الأوزان، وليست واجهة برمجة التطبيقات الرسمية لأي جهة.
أي رأس يحمل المفتاح؟
Authorization: Bearer متبوعاً بمفتاحك. تضيف مكتبات OpenAI SDK هذا تلقائياً عند تمرير المفتاح.
هل أحتاج إلى بطاقة لاختبار الاتصال؟
لا. تتوفر تجربة مجانية بنقرة واحدة بقيمة $0.50، صالحة لمدة 7 أيام، في صفحة مفتاح API بعد التسجيل.
مفتاحك على بُعد استمارة واحدة
أنشئ حساباً، وانسخ المفتاح، ثم غيّر URL الأساسي. هذه هي الإعدادات الكاملة.
