الرئيسيةالدليل
مفتاح API الخاص بـ AnythingLLM: ربط نقطة نهاية OpenAI مخصصة
لاستخدام مفتاح API الخاص بـ AnythingLLM مع نقطة نهاية مخصصة، اختر مزود Generic OpenAI وأدخل عنوان URL الأساسي، والمفتاح، ومعرف النموذج. الخطوات والاختبارات أدناه.
محدّث
أي مفتاح API تقصد؟
عندما يبحث المستخدمون عن anything llm api key، فإنهم يقصدون عادةً أحد أمرين، وهما أمران يسهل الخلط بينهما. الأول هو المفتاح الذي ترسله AnythingLLM إلى مزوّد النموذج لتمكينه من توليد الإجابات. والثاني هو مفتاح API للمطوّرين تنشئه AnythingLLM نفسها، بحيث يمكن للبرامج الأخرى استدعاء واجهة برمجة التطبيقات الخاصة بـ AnythingLLM. إنها مفاتيح مختلفة ذات مهام مختلفة.
يتناول هذا المقال الأمر الأول: تزويد AnythingLLM بمفتاح ونقطة نهاية لواجهة برمجة تطبيقات دردشة متوافقة مع OpenAI. ستحصل على المفتاح من صفحة مفتاح API، وتلصقه في AnythingLLM مع عنوان URL الأساسي https://api.llmapisource.com/v1، وتستخدم معرف النموذج uncensored. إذا كنت بحاجة بدلاً من ذلك إلى استدعاء AnythingLLM من كودك الخاص، فقم بتوليد ذلك المفتاح داخل إعدادات AnythingLLM؛ فهو لا علاقة له بمفتاح مزود الخدمة هذا.
قبل البدء: اختبر المفتاح خارج AnythingLLM
نصف أسئلة الدعم المتعلقة بنقاط النهاية المخصصة تتبين أنها مفتاح خاطئ أو خطأ مطبعي في عنوان URL. اختبار لمدة ثلاثين ثانية باستخدام curl يفصل بين "نقطة النهاية خاطئة" و"تكوين التطبيق خاطئ". ابدأ بسرد النماذج أولاً:
curl https://api.llmapisource.com/v1/models \
-H "Authorization: Bearer YOUR_KEY" | grep uncensored
يجب أن ترى سطراً يتضمن uncensored. ثم أرسل طلب دردشة واحد:
curl https://api.llmapisource.com/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
}'
إذا نجحت كلتا العمليتين، فإن المفتاح وURL صحيحان، وأي فشل لاحق يكون بسبب إعداد داخل التطبيق. إذا لم يكن لديك مفتاح بعد، سجّل باستخدام Google أو باستخدام البريد الإلكتروني وكلمة المرور. يمكن للمستخدمين الجدد الحصول على $0.50 من رصيد تجريبي بنقرة واحدة في صفحة المفتاح، وهو لا يتطلب بطاقةً ويعمل لمدة 7 أيام. وهذا يكفي لإكمال هذا الإعداد واختباره.
إعداده في AnythingLLM
يدعم AnythingLLM عدة مزودي LLM، وأحدها خيار عام متوافق مع OpenAI. تتغير تسميات القوائم بين الإصدارات، لذا تعامل مع الأسماء أدناه كدليل وليس كخطوات دقيقة.
- افتح إعدادات AnythingLLM وابحث عن تفضيل LLM (يُسمى أحياناً مزود LLM).
- اختر Generic OpenAI من قائمة المزودين.
- اضبط URL الأساسي على
https://api.llmapisource.com/v1. قم بتضمين/v1ولا تضف/chat/completionsفي النهاية؛ التطبيق يضيف المسار بنفسه. - الصق مفتاحك في حقل API Key. يرسله التطبيق كـ
Authorization: Bearer، وهو ما تتوقعه هذه الواجهة. - عيّن اسم نموذج الدردشة على
uncensored. - عيّن Token context window إلى 100000. نافذة النموذج هي 100,000 رمز (token)، للموجّه والإكمال، والقيمة المنخفضة هنا تجعل AnythingLLM تقصر سجل المحادثات الخاص بك قبل الأوان.
- اترك max_tokens فارغاً، أو عيّن سقفاً تشعر بالراحة معه. وهو اختياري من جانب الواجهة.
- احفظ، افتح مساحة عمل وأرسل رسالة.
إذا كانت مساحة العمل تحتوي على إعدادات دردشة خاصة بها، فتأكد من أنها تستخدم مزود النظام الافتراضي بدلاً من تجاوز أقدم. تثبيت مساحة العمل على مزود سابق هو سبب شائع لعدم ظهور أي تغيير.
تحتاج التضمينات والمستندات إلى قطعة منفصلة
تقوم AnythingLLM بوظيفتين. تتحدث مع نموذج، وتقوم بفهرسة مستنداتك ليتمكن النموذج من الإجابة بناءً عليها. الوظيفة الثانية تستخدم نموذج تضمين، وهذا الـ API لا يقدم تضمينات. إنه يعرض POST /v1/chat/completions و GET /v1/models، مع إدخال نص وإخراج نص.
هذا لا يعيقك. تتيح لك AnythingLLM اختيار نموذج التضمين بشكل منفصل عن نموذج الدردشة، ويمكنه استخدام نموذج تضمين محلي مدمج أو مزوّد آخر تضبطه. اضبط نموذج التضمين على شيء آخر غير نقطة النهاية هذه، واستخدم هذه نقطة النهاية فقط لنموذج الدردشة. ينطبق الأمر نفسه على ميزات الصور أو الصوت: النموذج يدعم النصوص فقط، ولا يدعم توليد الصور أو الصوت أو الفيديو ولا الضبط الدقيق.
عند التحدث مع المستندات، تُلصق الأجزاء المسترجعة في الموجّه، لذا يزداد عدد الرموز المدخلة. عند $0.15 لكل مليون رمز مدخل، تبلغ تكلفة موجّه مكون من 6,000 رمز مع 500 رمز مخرجات 6,000 × $0.15 / 1,000,000 = $0.0009 للمدخلات بالإضافة إلى 500 × $0.50 / 1,000,000 = $0.00025 للمخرجات، أو $0.00115 لكل سؤال. تكلف مساحات العمل الغنية بالمستندات أكثر من الدردشة العادية، لكنها لا تزال جزءاً صغيراً من سنت واحد لكل سؤال.
التحقق من البث المتدفق والأدوات ووضع JSON
تقوم AnythingLLM ببث الردود، ويدعم الـ API أحداث الإرسال الخادم (SSE) مع stream: true، وينتهي بقطعة استخدام. إذا ظهرت ردودك دفعة واحدة بدلاً من رمز تلو الآخر، فإن المشكلة عادةً تكون في وسيط أمام التطبيق يقوم بتخزين استجابات مؤقتة، وليس في نقطة النهاية. يمكنك التحقق من البث المتدفق من نص برمجي باستخدام SDK Python الخاص بـ OpenAI:
from openai import OpenAI
client = OpenAI(
base_url="https://api.llmapisource.com/v1",
api_key="YOUR_KEY",
)
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "List three uses of a local knowledge base."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print("\ntokens:", chunk.usage.prompt_tokens, chunk.usage.completion_tokens)
يعمل استدعاء الدوال ووضع JSON عبر نفس نقطة النهاية للدردشة، وهو أمر مهم إذا كنت تبني وكلاء أو تدفقات عمل حول التطبيق. وضع JSON هو حقل واحد:
curl https://api.llmapisource.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"response_format": {"type": "json_object"},
"messages": [
{"role": "system", "content": "Return a JSON object with keys title and summary."},
{"role": "user", "content": "Summarize: a notes app that works offline."}
]
}'
تستخدم الأدوات حقول tools و tool_choice المعتادة، مع إرجاع النتائج كرسائل role: "tool". يعتمد ما إذا كانت AnythingLLM تعرض ميزة وكيل معينة على إصدار التطبيق، لذا اختبر المكالمة في برنامج نصي أولاً ثم جرب الميزة في التطبيق. يعرض الدليل مثالاً كاملاً لاستدعاء الدوال.
إصلاح الأخطاء الشائعة
| العرض | السبب المحتمل | الحل |
|---|---|---|
| خطأ 401 أو خطأ مصادقة | تم لصق المفتاح مع وجود مسافة، أو مفتاح قديم | انسخ المفتاح مرة أخرى من صفحة المفتاح والصقه بدون مسافات |
| 404 أو "غير موجود" | عنوان URL الأساسي مفقود /v1، أو يحتوي على /chat/completions في النهاية | استخدم بالضبط https://api.llmapisource.com/v1 |
| النموذج غير موجود | تم كتابة اسم النموذج بشكل مختلف | استخدم uncensored، بحروف صغيرة، بدون إضافة أي شيء |
429 مع rate_limited | أكثر من 300 طلب في الدقيقة (60 في المفتاح التجريبي) | قلل من سرعة الإرسال أو التجميع بشكل أقل كثافة |
429 مع concurrency | أكثر من 8 طلبات في وقت واحد (2 في المفتاح التجريبي) | قلل من مساحات العمل المتزامنة أو الوكلاء؛ حيث يحتفظ البث المتدفق بمكانه حتى ينتهي |
429 مع رأس Retry-After: 5 | حمل زائد مؤقت | انتظر 5 ثوانٍ وأعد المحاولة |
| تقطع الردود مبكراً | حد أقصى منخفض للرموز في التطبيق | ارفعه أو امسحه |
يساعد رأس الطلب X-Request-Id في كل استجابة إذا تواصلت مع فريق الدعم بخصوص مكالمة محددة. يخبرك الرصيد في X-Balance-USD أيضاً بسرعة ما إذا كان الفشل ناتجاً ببساطة عن حساب فارغ.
الحصول على إجابات أفضل من مساحة العمل
بمجرد عمل الاتصال، فإن بعض عادات مساحة العمل تحدث فرقاً ملحوظاً. اكتب موجّه نظام لمساحة العمل يحدد الدور، والنبرة، وما يجب فعله عندما لا تحتوي المستندات على الإجابة. بدون هذه التعليمات الأخيرة، غالباً ما يخمن النموذج، والتخمين الذي يبدو واثقاً أسوأ من عبارة "لم أجد ذلك في المستندات".
الحرارة (Temperature) هي الرافعة الأخرى. للإجابة على الأسئلة حول ملفاتك الخاصة، تحافظ القيمة المنخفضة مثل 0.2 إلى 0.4 على الإجابات القريبة من النص المسترجع. للعصف الذهني أو المسودة، ارفعها نحو 0.8. تمرر واجهة برمجة التطبيقات (API) الحرارة و top_p و stop و seed وعقوبات التكرار، لذا فإن أي شيء يرسله التطبيق يصل إلى النموذج دون تغيير.
راقب عدد المقتطفات التي ترفقها مساحة العمل بكل سؤال. كل مقتطف إضافي يعني المزيد من الرموز المدخلة، ومع نافذة سياق بحجم 100,000 رمز، لديك مساحة، لكنك تدفع أيضاً مقابل كل منها في كل دور. ابدأ بعدد صغير من المقتطفات وارفعه فقط عندما تكون الإجابات ناقصة وتفتقر إلى المواد ذات الصلة.
ملاحظات الخصوصية والتكلفة
لا تُستخدم الموجّهات المرسلة عبر واجهة برمجة التطبيقات (API) للتدريب. لا تزال مستنداتك تنتقل إلى نقطة النهاية داخل الموجّهات عندما تستخرج AnythingLLM أجزاء، لذا قرر مساحات العمل التي تشعر بالراحة في إرسال بياناتها. للمواد التي يجب ألا تغادر جهازك أبداً، استخدم نموذجاً محلياً بدلاً من ذلك.
الفوترة بنظام الدفع حسب الاستخدام من رصيد مسبق الدفع: $0.15 لكل مليون رمز إدخال و $0.50 لكل مليون رمز إخراج، شحنات من $20 إلى $500، مع مكافآت بنسبة 5% من $50، و10% من $100 و15% من $200. الرصيد لا ينتهي، ولا يتم تحميل تكاليف الطلبات الفاشلة أو المرفوضة. يعرض صفحة الأسعار طرق الدفع.
المزيد من الأدلة
أسئلة وأجوبة
أي خيار مزود أختار في AnythingLLM؟
اختر Generic OpenAI. أدخل https://api.llmapisource.com/v1 كعنوان URL أساسي، ومفتاحك كمفتاح API، و uncensored كاسم نموذج الدردشة.
ما حجم نافذة السياق (token context) الذي يجب إدخاله؟
استخدم 100000، وهو ما يتوافق مع نافذة النموذج المكونة من 100,000 رمز (token) للموجّه (prompt) والإكمال (completion).
هل يمكنني استخدام نقطة النهاية هذه لإنشاء التضميمات (embeddings) في AnythingLLM؟
لا. تقدم واجهة برمجة التطبيقات (API) إكمال المحادثات وقائمة بالنماذج فقط. اختر أداة تضمين (embedder) مختلفة في AnythingLLM واستخدم نقطة النهاية هذه مع نموذج المحادثة.
هل مفتاح API الخاص بمطوري AnythingLLM هو نفسه؟
لا. يُنشأ هذا المفتاح داخل AnythingLLM لتمكين البرامج الأخرى من استدعاء التطبيق. أما المفتاح القادم من هذه الخدمة فهو ما ترسله AnythingLLM إلى نقطة نهاية المحادثة.
