הוסיפו את APIsRouter כ-endpoint מותאם אישית ב-LibreChat.
Updated 2026-07-29
LibreChat מתייחס ל-endpoints מותאמים אישית תואמי OpenAI כפיצ'ר ממדרגה ראשונה: בלוק endpoints.custom אחד ב-librechat.yaml עם baseURL, apiKey, ו-models.fetch מוגדר ל-true, וכל הקטלוג מופיע בבורר המודל תחת מפתח אחד.
תשובה מהירה: בלוק אחד ב-librechat.yaml.
ה-custom endpoints של LibreChat מוגדרים ב-librechat.yaml תחת endpoints.custom, מערך שבו כל ערך הוא ספק אחד. שלושת השדות שחשובים הם name (התווית בבורר ה-endpoint), apiKey (שמפרש משתני סביבה בצורה ${VARIABLE}, כך שהמפתח חי ב-.env ולעולם לא ב-YAML), ו-baseURL. עבור APIsRouter ה-baseURL הוא https://api.apisrouter.com/v1, עם ה-/v1 כלול, מכיוון ש-LibreChat מוסיף נתיבי route כמו /chat/completions לכל base שאתם נותנים לו. בלוק ה-models מחליט מה מופיע ב-dropdown של המודל. הגדירו את models.fetch ל-true ו-LibreChat שואל את רשימת ה-/v1/models של ה-endpoint בטעינה, כך שכל id בקטלוג הופך לבר-בחירה בלי לתחזק רשימה כתובה-ביד. models.default עדיין נדרש כמערך ומשמש כ-fallback שמוצג לפני או במקום fetch. זו הגדרה מתועדת upstream, לא טלאי: מבנה אובייקט ה-custom endpoint בתיעוד LibreChat מגדיר כל מפתח שמשמש כאן.
version: 1.2.1
endpoints:
custom:
- name: "APIsRouter"
apiKey: "${APISROUTER_API_KEY}"
baseURL: "https://api.apisrouter.com/v1"
models:
default: ["claude-sonnet-4-6"]
fetch: trueאיך LibreChat מנתב endpoints מותאמים אישית.
LibreChat (danny-avila ב-GitHub, בערך 41K כוכבים) הוא ממשק ה-ChatGPT-style העצמאי הכי נפוץ בפריסה: רב-משתמש, רב-מודל, עם חיפוש שיחות, agents, טיפול בקבצים, ומפתחות לכל משתמש. בניגוד לקליינטים שמקבעים רשימת ספקים, מערך ה-endpoints.custom שלו מקבל כל שירות תואם OpenAI, וכמה ספקים מוכרים בתיעוד מוגדרים דרך בדיוק המנגנון הזה. כשמשתמש בוחר מודל מ-endpoint מותאם אישית, LibreChat שולח בקשת /v1/chat/completions סטנדרטית ל-baseURL של ה-endpoint ההוא עם שדה ה-model כמחרוזת פשוטה. שום דבר בקליינט לא אכפת לו איזה ספק אימן את המודל; המחרוזת מועברת כמות שהיא. כש-endpoint מאחורי ה-baseURL משרת כמה ספקים, ערך librechat.yaml אחד שם ids של Claude, GPT, Gemini, DeepSeek, ו-GLM באותו dropdown, ומשתמש עובר בין ספקים באמצע-שיחה בדיוק כמו שהיה עובר בין שני וריאנטים של GPT. זה מקפל את הגדרת LibreChat רב-הספקים הרגילה. במקום ערך מותאם אישית אחד לכל ספק, כל אחד עם מפתח משלו ב-.env ומשטח חיוב משלו, ערך אחד עם מפתח אחד מכסה את הקטלוג, והמנהל רואה שימוש לכל מודל במקום אחד במקום להתאים כמה לוחות מחוונים.
הגדרה מלאה: YAML, .env, וה-mount של Docker.
צרו librechat.yaml בשורש הפרויקט ושימו את המפתח ב-.env. ההפניה ${APISROUTER_API_KEY} ב-YAML נפתרת מהסביבה בהפעלה, כך שקובץ ההגדרה נשאר בר-הצהרה ל-git. השלב שהגדרות ראשונות רבות מפספסות הוא ספציפי ל-Docker: הקונטיינר לא רואה את ה-librechat.yaml שלכם עד שתעשו לו mount. התיעוד גורם לכם ליצור docker-compose.override.yml עם bind mount מ-./librechat.yaml אל /app/librechat.yaml, ואז ליצור מחדש את הקונטיינרים. עריכת ה-YAML אחר כך גם דורשת restart, מכיוון שהקובץ נקרא בהפעלה, לא נצפה. כמה שדות אופציונליים שווים הגדרה על ערך gateway. titleConvo מפעיל כותרות שיחה אוטומטיות, ו-titleModel בוחר את המודל שכותב אותן; ברירת המחדל המתועדת של LibreChat עבור titleModel היא gpt-3.5-turbo, id ש-endpoint שאינו-OpenAI אולי לא משרת, אז הגדירו אותו במפורש ל-id מהיר מהקטלוג או לערך המיוחד current_model. modelDisplayLabel שולט בשם שמוצג על הודעות ה-assistant. ו-apiKey מקבל את הערך המיוחד user_provided אם אתם רוצים שכל משתמש ידביק את המפתח שלו במקום לשתף את מפתח השרת.
version: 1.2.1
endpoints:
custom:
- name: "APIsRouter"
apiKey: "${APISROUTER_API_KEY}"
baseURL: "https://api.apisrouter.com/v1"
models:
default: ["claude-sonnet-4-6", "gpt-5.5", "deepseek-v4-pro"]
fetch: true
titleConvo: true
titleModel: "claude-haiku-4-5-20251001"
modelDisplayLabel: "APIsRouter"בחירת מודלים למרחב עבודה משותף של צ'אט.
מכיוון שכל מודל מחויב דרך אותו מפתח, הלולאה המעשית עבור מנהל היא לצפות בשבוע של שימוש בקונסולה, לראות אילו מודלים משתמשים באמת בוחרים, ולקצץ את models.default כדי להתאים, תוך השארת fetch פעיל כך שמשתמשים מתקדמים עדיין יכולים להגיע לרשימה המלאה.
- צ'אט יומיומי רוצה generalist חזק. claude-sonnet-4-6 ו-gpt-5.5 נושאים שיחות ארוכות, דיון קבצים, והרצות agent בלי חרדת מודל להודעה.
- שאלות קצרות בתדירות גבוהה הן עבודת נפח. claude-haiku-4-5-20251001 ו-gemini-3.5-flash עונים מהר ושומרים על פריסה רבת-משתמשים מלרכז הוצאה על תורים חד-פעמיים.
- יצירת כותרות יורה בכל שיחה. כוונו את titleModel ל-id מהיר; תשלום בתעריפים מובילים כדי לכתוב כותרות של שש מילים הוא הבזבוז השקט הנפוץ ביותר בפריסת LibreChat.
- צוותים רב-לשוניים צריכים לבדוק את deepseek-v4-pro ו-glm-5.2 על תמהיל השפה האמיתי שלהם; dropdown רב-ספקים הופך את זה להשוואה בתוך-האפליקציה במקום הגדרה מחדש.
- models.fetch אומר שמודלים חדשים בקטלוג מופיעים בלי לגעת ב-YAML, כך שמודל שנוסף upstream בר-בחירה בפעם הבאה שהרשימה מתרעננת.
תשלום לפי שימוש · מתחת למחיר הרשמי
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| מודל | מחיר רשמי | המחיר שלנו |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| GPT-5.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| Gemini 3.5 Flash | $1.50 / $9.00 per M | $1.20 / $7.20 per M |
| DeepSeek V4 Pro | $0.43 / $0.87 per M | $0.40 / $0.90 per M |
מצבי כשל ספציפיים ל-LibreChat.
ההגדרה שלא נטענת בשקט היא הקלאסי, וזה כמעט תמיד ה-mount של Docker. בלי ה-bind mount של docker-compose.override.yml, הקונטיינר רץ בלי שום librechat.yaml, ה-endpoint המותאם אישית לעולם לא מופיע בבורר, וכלום לא נכשל בשגיאה. אשרו שהקובץ קיים בתוך הקונטיינר לפני שתדבגו כל דבר אחר. apiKey שמגיע מילולית כ-${APISROUTER_API_KEY} אומר שהמשתנה לא היה נוכח בסביבה שהשרת הופעל איתה; הפרשנות קורית בהפעלה מ-.env, אז מפתח שנוסף אחר כך צריך restart של הקונטיינר. הסימפטום הוא 401 מה-gateway עם bearer token חסר-משמעות. baseURL בלי /v1 מייצר 404s על כל בקשה, מכיוון ש-LibreChat מוסיף /chat/completions ל-base כפי שניתן. הטעות ההפוכה, הדבקת URL מלא של completions כ-baseURL, שייכת לאפשרות directEndpoint הנפרדת ולא צריכה להיות משולבת עם ערך רגיל. dropdown ריק של מודלים עם fetch כבוי אומר ש-models.default חסר או ריק; זה מערך נדרש. עם fetch פעיל, dropdown ריק בדרך כלל אומר שה-fetch עצמו נכשל, מה שחוזר למפתח או ל-baseURL. וכותרות שיחה שנכשלות ב-endpoint שאחרת עובד הן ברירת המחדל של titleModel שמכוונת ל-id שה-gateway לא משרת; הגדירו אותה במפורש.
מי מנתב את LibreChat דרך gateway.
- צוותים שמארחים בעצמם מרחב עבודה משותף לצ'אט ורוצים Claude, GPT, Gemini, ו-DeepSeek ב-dropdown אחד בלי לתחזק ערך endpoints.custom וחשבון ספק אחד לכל אחד.
- מנהלים שמריצים פריסות רב-משתמש שצריכות משטח שימוש אחד. יומני לפי-מפתח מראים אילו מודלים הצוות באמת משתמש בהם, מתומחר, בלי למזג לוחות מחוונים של ספקים.
- מפעילים שנותנים למחלקות מפתחות משלהן: אותו YAML, מפתח אחד לכל קבוצה, ויומן השימוש הופך לדוח עלות לכל-צוות.
- משקי בית וקבוצות קטנות שמחליפות כמה מנויי צ'אט ב-endpoint נמדד אחד, ומשלמים על טוקנים בשימוש במקום מושבים.
- מפתחים ללא גישה לחיוב של ספק נתון. גישה מבוססת-הטענה בלי דרישת כרטיס מסירה את התלות בהרשמה לכל ספק.
אמתו את ה-endpoint ובצעו דיבוג להודעה הראשונה.
הוכיחו את חצי ה-gateway לפני שתגעו ב-LibreChat: פרטו מודלים עם המפתח שלכם, ואשרו שה-ids ששמתם ב-models.default מופיעים. אם זה עובד, כל סימפטום שנשאר הוא בצד LibreChat של החוט. אז הפעילו את הסטאק ופתחו את בורר ה-endpoint. הופעת ערך APIsRouter בכלל מוכיחה שה-YAML נטען; אכלוס רשימת המודלים מוכיח את ה-fetch ואת המפתח; התגובה הראשונה מוכיחה את נתיב הצ'אט. עבדו על השלושה האלה לפי סדר במקום כולם ביחד, מכיוון שלכל אחד יש קבוצת כשלים נבדלת: ה-mount, משתנה הסביבה, וה-baseURL בהתאמה. ברגע שהודעות זורמות, קונסולת APIsRouter מציגה מודל לכל בקשה, ספירות טוקן, והוצאה. instance משותף של LibreChat הוא בדיוק סוג הפריסה שבה שימוש מתרכז בשקט על שניים-שלושה מודלים, ויומן השימוש הוא איך מגלים איזה אלה לפני שהחשבונית מגלה.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50שאלות נפוצות
איפה מגדירים endpoint מותאם אישית תואם OpenAI ב-LibreChat?
ב-librechat.yaml תחת endpoints.custom, מערך של ערכי ספק עם name, apiKey, baseURL, ובלוק models. בהתקנות Docker הקובץ חייב לעבור bind-mount לתוך הקונטיינר דרך docker-compose.override.yml אחרת הוא מתעלם ממנו בשקט.
האם ה-baseURL צריך לכלול /v1?
כן עבור APIsRouter: https://api.apisrouter.com/v1. LibreChat מוסיף נתיבי route כמו /chat/completions ל-base כפי שניתן, אז /v1 חסר מייצר 404s על כל בקשה.
האם endpoint אחד של LibreChat יכול לשרת מודלי Claude, GPT, ו-DeepSeek ביחד?
כן. LibreChat מעביר את id המודל שנבחר כמחרוזת פשוטה ל-baseURL של ה-endpoint. כש-endpoint משרת כמה ספקים, ערך endpoints.custom אחד שם את כל ה-ids שלהם באותו dropdown, ו-models.fetch שומר את הרשימה ההיא עדכנית אוטומטית.
למה ה-endpoint המותאם אישית שלי חסר מהבורר?
ה-YAML לא נטען. ב-Docker הסיבה הרגילה היא bind mount חסר עבור librechat.yaml; הקונטיינר רץ בלי הקובץ וכלום לא נכשל בשגיאה. אשרו שהקובץ קיים בתוך הקונטיינר, ואז הפעילו מחדש, מכיוון שההגדרה נקראת בהפעלה.
למה כותרות שיחה נכשלות כשהצ'אט עובד?
titleConvo משתמש ב-titleModel, שברירת המחדל המתועדת שלו היא gpt-3.5-turbo, id שה-endpoint שלכם אולי לא משרת. הגדירו את titleModel במפורש ל-id מהיר מהקטלוג כמו claude-haiku-4-5-20251001, או לערך המיוחד current_model.
האם כל משתמש יכול להביא מפתח משלו במקום לשתף את מפתח השרת?
כן. הגדירו apiKey לערך המיוחד user_provided ו-LibreChat מבקש מכל משתמש מפתח, נשמר לכל משתמש. זה מתאים היטב למפתחות gateway, מכיוון שמפתח אחד לכל משתמש הופך את יומן השימוש לתצוגת עלות לכל-אדם.