תיעוד 81
מדריך תאימות שער עבור Claude Code
שמירה על תאימות שער LLM עם Claude Code: נקודות הקצה שהוא מזמן, הכותרות ושדות הגוף שיש להעביר הלאה, ומה נשבר כאשר הם מופשטים.
דף זה מתעד את הבקשות ש-Claude Code שולח לשער, כולל נקודות הקצה שהוא מזמן, הכותרות ושדות הגוף שהשער חייב להעביר הלאה, ואילו תכונות מפסיקות לפעול כאשר הוא אינו עושה זאת. הוא נכתב עבור מפעילי מערכות המגדירים מוצר שער לפעולה עם Claude Code.
השער Claude apps gateway, שער באירוח עצמי של Anthropic, מגיש מפרט נקודות קצה משלו ב-GET /protocol, המכסה את נקודות הקצה של כניסה למערכת, הסקה (inference), הגדרות מנוהלות, גילוי מודלים וטלמטריה של אותו שער. זהו מסמך נפרד ממדריך זה.
הערה:
- כדי לפרוס שער קיים או שער של צד שלישי עבור הארגון שלך, ראה Roll out an LLM gateway.
- אם אתה מפתח יחיד המאמת את
Claude Codeמול שער באמצעות פרטי גישה שקיבלת, ראה Connect Claude Code to an LLM gateway.
דף זה מכסה:
- פורמטי API ונקודות הקצה שיש להגיש עבור כל אחד
- כותרות בקשה: אילו חייבות להגיע אל ה-upstream ואילו השער שלך יכול לצרוך
- בלוק שיוך של הנחיית מערכת וכיצד הוא מקיים אינטראקציה עם שמירת הנחיות במטמון (prompt caching)
- העברת תכונות הלאה (pass-through): מה נשבר כאשר כותרות או שדות גוף מופשטים
- גילוי מודלים
דף זה משתמש בשני מונחים עבור מה שהשער שלך עושה עם כל כותרת ושדה גוף:
- העברה ללא שינוי (Forward unchanged): העברתו אל ה-upstream בייט אחר בייט.
- צריכה (Consume): השער רשאי לקרוא אותו לצורך ניתוב, שיוך (attribution) או מעקב (tracing), ואינו חייב להעביר אותו הלאה.
כל מה שאינו מסומן כהעברה ללא שינוי עומד לרשותך לצריכה או להתעלמות.
#פורמטי API
שער חייב לחשוף לפחות אחד מפורמטי ה-API הבאים ללקוחות Claude Code. לקוח בוחר פורמט ומכוון את Claude Code לשער שלך באמצעות המשתנים בעמודה "נבחר על ידי" בטבלה שלהלן.
Google Cloud's Agent Platform היא נקודת הקצה של Claude ב-Google Cloud, שנקראה בעבר Vertex AI. שמות המשתנים שלה שומרים על האיות VERTEX.
| פורמט | נבחר על ידי | נקודות קצה | העברה ללא שינוי |
|---|---|---|---|
| Anthropic Messages | ANTHROPIC_BASE_URL | /v1/messages, /v1/messages/count_tokens (אופציונלי) | כותרות הבקשה anthropic-beta ו-anthropic-version |
| Amazon Bedrock InvokeModel | ANTHROPIC_BEDROCK_BASE_URL עם CLAUDE_CODE_USE_BEDROCK=1 | /model/{model}/invoke, /model/{model}/invoke-with-response-stream, /model/{model}/count-tokens (אופציונלי) | שדות גוף הבקשה anthropic_beta ו-anthropic_version |
| Google Cloud's Agent Platform rawPredict | ANTHROPIC_VERTEX_BASE_URL עם CLAUDE_CODE_USE_VERTEX=1 | :rawPredict, :streamRawPredict, count-tokens:rawPredict (אופציונלי) | כותרות הבקשה anthropic-beta ו-anthropic-version, ושדה גוף הבקשה anthropic_version |
#Foundry ו-Claude Platform on AWS
Microsoft Foundry ו-Claude Platform on AWS מממשים את הפורמט Anthropic Messages. Claude Code מנתב אליהם דרך משתנים משלהם, ANTHROPIC_FOUNDRY_BASE_URL ו-ANTHROPIC_AWS_BASE_URL, אך שער שנמצא לפני כל אחד מהם מממש את שורת Anthropic Messages שלעיל. שער שנמצא לפני Claude Platform on AWS חייב להעביר הלאה גם את הכותרת anthropic-workspace-id, אשר פלטפורמה זו דורשת בכל בקשה.
#נקודות קצה אופציונליות ותעבורת הפעלה
נקודות קצה לספירת אסימונים (tokens) הן היחידות שהן אופציונליות: כאשר הן אינן קיימות, Claude Code נסוג להערכה מבוססת תווים של השימוש בהקשר.
התאם לפי הנתיב, לא לפי ה-URL המלא:
- בקשות הסקה (inference) שולחות פוסט אל
/v1/messages?beta=true - סיומות המתודות של Google Cloud's Agent Platform מצורפות לנתיב מודל המפרסם (publisher model path), כמו למשל ב-
/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict
שער רואה גם תעבורת הפעלה במאמץ מיטבי (best-effort) שהוא יכול לדחות בלי לשבור דבר. שער בפורמט Anthropic Messages מקבל בדיקת גישוך לחימום חיבור של HEAD /api/hello, אשר Claude Code מדלג עליה כאשר מוגדר פרוקסי HTTP או תעודת לקוח. שער בפורמט Amazon Bedrock מקבל בקשת GET /inference-profiles?type=SYSTEM_DEFINED, וכאשר המודל המוגדר הוא פרופיל הסקה, בדיקות GET /inference-profiles/{profile}.
בדיקת הזמינות של מצב מהיר (fast mode) לעולם אינה מופיעה ביומני השער: היא פונה אל api.anthropic.com ישירות במקום לפעול לפי ANTHROPIC_BASE_URL, כך שברשת החוסמת יציאה ישירה אל api.anthropic.com, מצב מהיר עשוי לדווח על שגיאת קישוריות בזמן שהסקה דרך השער ממשיכה לעבוד. בדיקת בטיחות הדומיין של WebFetch פונה גם היא אל api.anthropic.com ישירות. הפרק Use fast mode behind proxies and LLM gateways מכסה את המשתנים שמחזירים יכולת זו.
#הזרמה (Streaming)
הזרם תגובות הסקה. Claude Code קורא את הזרם ככל שהוא מגיע, כך שאם השער שלך אוגר במאגר תגובות שלמות לפני שהוא ממסר אותן, Claude Code נתקע.
כאשר הלקוח מתקשר בפורמט Amazon Bedrock, מסור את גוף התגובה של InvokeModelWithResponseStream ואת הכותרת שלו Content-Type: application/vnd.amazon.eventstream ללא שינוי, ואל תמיר את הזרם ל-server-sent events. ראה Streaming errors behind a gateway or proxy.
העבר גם בדיקות שמירת חיים (keep-alive pings). בחיבורים דרך ANTHROPIC_BASE_URL או ANTHROPIC_AWS_BASE_URL, Claude Code סופר כל בייט שהשער שלך ממסר, כולל אירועי ping של SSE ושורות הערה, ומבטל זרם ששותק במשך 300 שניות כברירת מחדל. בדיקות ה-ping של ה-upstream הן התעבורה היחידה במהלך הפסקות חשיבה ארוכות, כך שאם השער שלך מפשיט אותן או אוגר אותן במאגר, Claude Code מבטל את הזרם במהלך הפסקות אלו; הפרק Automatic retries מכסה מה מדווח זרם שבוטל בהתבסס על המידה שבה התגובה התקדמה. שרת upstream שאינו שולח כלל pings, כמו זרם האירועים הבינארי של Amazon Bedrock, משאיר את הפסקות החשיבה הללו ללא שום דבר להעביר. בעת תרגום מ-upstream כזה, פלוט אירועי ping משלך במהלך מרווחי שתיקה. שערים שאליהם ניגשים דרך ANTHROPIC_BEDROCK_BASE_URL, ANTHROPIC_VERTEX_BASE_URL או ANTHROPIC_FOUNDRY_BASE_URL אינם עטופים במנגנון ניטור זה ברמת הבייט, גם כאשר הם ממסרים את פורמט Anthropic Messages; שם, מגבלת זמן חוסר פעילות של 5 דקות (5-minute idle timeout) מבטלת זרם שותק במקום זאת, ובחיבורי ANTHROPIC_BEDROCK_BASE_URL תוכל להוסיף את מנגנון הניטור ברמת הבייט באמצעות CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK.
#אי התאמת פורמט מול ה-upstream
הפורמט שבו הלקוח מתקשר קובע מה השער שלך מקבל. אופן הכשל הנפוץ הוא אי התאמה בין הפורמט שהלקוח שולח לשער שלך לבין הפורמט שספק ה-upstream שמאחוריו מקבל.
- כאשר הלקוח מתקשר בפורמט Amazon Bedrock או Google Cloud's Agent Platform,
Claude Codeשולח רק את תת הקבוצה של מערך היכולות המלא שלו שספקים אלה מקבלים. - כאשר הלקוח מתקשר בפורמט Anthropic Messages,
Claude Codeשולח את המערך המלא, גם אם השער שלך מעביר הלאה אל upstream של Amazon Bedrock או Google Cloud's Agent Platform.
גישור על פער זה הוא תפקידו של השער שלך. הסעיף העברת תכונות הלאה (pass-through) מתאר מה נשבר כאשר הוא אינו עושה זאת.
#כותרות בקשה
Claude Code כולל כותרות אלה בבקשות API. שמות כותרות אינם תלויי רישיות בעת שידורן. העבר את anthropic-version ואת anthropic-beta ללא שינוי, בנוסף ל-anthropic-workspace-id כאשר ה-upstream הוא Claude Platform on AWS; את השאר השער רשאי לצרוך לצורך ניתוב, שיוך ומעקב, ואינו חייב להעביר הלאה.
| כותרת | תיאור |
|---|---|
Authorization, x-api-key | פרטי הגישה של המפתח לשער, באחת מהכותרות או בשתיהן בהתאם למשתנה פרטי הגישה (credential variable) שהוגדר |
anthropic-version | גרסת ה-API, כרגע 2023-06-01. בקשות בפורמט Amazon Bedrock ו-Google Cloud's Agent Platform נושאות גם את שדה הגוף anthropic_version, שערכו הוא מחרוזת הדיאלקט של הספק, ולא הערך של כותרת זו |
anthropic-beta | ערכי יכולות מופרדים בפסיקים עבור הבקשה. העבר את הכותרת מילה במילה; אל תגדיר רשימת היתרים (allowlist) של ערכים בודדים, מכיוון שהקבוצה משתנה בין גרסאות Claude Code. כאשר המפתח מבצע אימות באמצעות התחברות ל-claude.ai, דבר שאפשרי כאשר ANTHROPIC_BASE_URL מוגדר ללא משתנה פרטי גישה לשער, כותרת זו נושאת גם יכולת OAuth שה-upstream דורש, והפשטתה מכשילה בקשות אלו עם שגיאת 401 |
x-claude-code-session-id | מזהה ייחודי עבור הפעלת Claude Code הנוכחית. השתמש בו כדי לקבץ את כל הבקשות מהפעלה אחת מבלי לנתח גופי בקשות |
x-claude-code-agent-id | מזהה תת הסוכן (subagent) שהנפיק את הבקשה, קיים רק בבקשות מסוכן ש-Claude Code יצר בתוך ההפעלה. השתמש בו יחד עם מזהה ההפעלה כדי לשייך עלויות לסוכנים מקבילים |
x-claude-code-parent-agent-id | מזהה הסוכן שיצר את הסוכן המבקש, קיים רק עבור סוכנים מקוננים |
מזהי תת סוכנים מיוצרים מחדש בכל פעם ש-Claude Code מייצר תת סוכן. סוכני צוות (Teammate agents), החברים בעלי השמות בצוות סוכנים (agent team), עושים שימוש חוזר במזהה יציב מבוסס שם לאורך התחברויות מחדש. בשני המקרים המזהה מזהה סוכן, לא אדם ולא מכשיר, ולכן אל תתייחס לכותרת מזהה הסוכן כמזהה משתמש.
אם המפתחים שלך מגדירים את ANTHROPIC_CUSTOM_HEADERS, כותרות אלה מופיעות גם כן בבקשות.
#העברה כרשימות פתוחות
התייחס לכותרות ולשדות הגוף כאל רשימות פתוחות, ולא סגורות. Claude Code רוכש יכולות לאורך גרסאות שונות, והן מגיעות כערכי anthropic-beta חדשים, שדות גוף בקשה חדשים, ולעיתים כותרות anthropic-* או x-claude-code-* חדשות.
בעת העברה הלאה אל upstream בפורמט Anthropic, העבר כותרות בקשה מסוג anthropic-* ושדות גוף בקשה ללא שינוי במקום להגדיר רשימת היתרים עבור אלה שאתה רואה כיום. שער המוצמד לרשימה שנצפתה יפשיט את הכותרת או השדה של היכולת הבאה וישבור אותה בגרסה שמציגה אותה.
החריג לכך הוא upstream שאינו של Anthropic, כגון Amazon Bedrock או Google Cloud's Agent Platform, שבהם גישור על פערי הסכמה הוא תפקידו של השער; ראה העברת תכונות הלאה (pass-through).
#בלוק שיוך של הנחיית מערכת
Claude Code מוסיף בתחילת הנחיית המערכת (system prompt) בלוק שיוך קצר המכיל את גרסת הלקוח וטביעת אצבע שנגזרת מהשיחה. נקודת הקצה api.anthropic.com מסירה את הבלוק לפני העיבוד כאשר הוא מגיע ללא שינוי כבלוק המערכת הראשון, כך שהוא אינו משפיע על שמירת הנחיות במטמון מצד ראשון (first-party prompt caching). כל upstream אחר מקבל אותו כחלק מההנחיה.
ההסרה מבוססת מיקום, ולכן היא פועלת רק כאשר השער מעביר את המערך system ללא שינוי. כדי להשאיר את הבלוק מחוץ להנחיה בלי לאבד תוכן מערכת אחר:
- העבר את המערך
systemבדיוק כפי שהתקבל, תוך שמירה על הבלוק ראשון: הוספת בלוק מערכת אחר בהתחלה, שינוי סדר המערך, או המרתו למחרוזת בודדת מבטלים את ההסרה, והבלוק יגיע אז אל המודל ואל מפתח המטמון של ההנחיה. - שמור את הבלוק ברשומת מערך משלו: נקודת הקצה מתייחסת לבלוק ממוזג שמתחיל בכותרת השיוך כשיוך בשלמותו ומשמיטה את כל מה שמוזג לתוכו, כולל שאר הנחיית המערכת.
- אם השער שלך חייב לעצב מחדש את תוכן המערכת, הגדר את
CLAUDE_CODE_ATTRIBUTION_HEADER=0כדי ש-Claude Codeישמיט את הבלוק. נקודות הקצה של Anthropic ושל ספקי הענן קוראות את הבלוק לצורך שיוך, לכן עדיף להשמיט אותו אצל הלקוח מאשר להפשיט או להזיז אותו בשער.
המשתנה קיים עבור תאימות של שמירה במטמון בשערים ובצדדים שלישיים, ולא כבקרת פרטיות: בחיבור ישיר הבקשה המלאה ממילא נשלחת אל ה-API של Anthropic בכל מקרה. כאשר שני התנאים הבאים מתקיימים, Claude Code שומר על הבלוק בבקשות המסווג (classifier) של מצב אוטומטי (auto mode) גם כאשר אתה מגדיר את המשתנה ל-0:
- הבקשות נשלחות אל
api.anthropic.com, כאשרANTHROPIC_BASE_URLאינו מוגדר או מציין מארח זה, ולא נבחר ספק צד שלישי. - פרטי הגישה הפעילים אינם פרטי גישה של פרופיל או פדרציה של Anthropic (Anthropic profile or federation credential).
בקשות מסווג מדלגות על שאר הנחיית המערכת של Claude Code, כך שבבקשות אלו הבלוק הוא הסימון היחיד בגוף הבקשה שמזהה אותן כתעבורת Claude Code. כאשר אחד מהתנאים אינו מתקיים, דרך שער LLM, אצל ספק צד שלישי, או כאשר פרטי גישה של פרופיל או פדרציה פעילים, הגדרת 0 מסירה את הבלוק גם מבקשות המסווג. לפני גרסה v2.1.229 חריג זה לא היה קיים: הגדרת 0 הסירה את הבלוק מאותן בקשות מסווג, וכאשר ה-API דחה את הבקשות הלא מזוהות, מצב אוטומטי נכשל בכל פעולה שנשלחה למסווג.
החל מ-Claude Code גרסה v2.1.181, הבלוק יציב לאורך חיי השיחה כאשר בקשות מנותבות דרך כתובת URL בסיסית מותאמת אישית, כך שמטמון הנחיות בצד השער המבוסס על מפתח של גוף הבקשה המלא פועל ללא צורך בהשבתתו, וכל ספק שהשער שלך מעביר אליו הלאה מקבל קידומת הנחיה יציבה. לפני גרסה v2.1.181 הבלוק כלל אסימון ייחודי לכל בקשה ששינה את תחילת הנחיית המערכת בכל בקשה. בגרסאות אלו, הגדר את CLAUDE_CODE_ATTRIBUTION_HEADER=0 כאשר השער שלך מבצע אחת מפעולות אלה:
- מממש מטמון הנחיות המבוסס על מפתח של גוף הבקשה.
- מעביר בקשות לספק צד שלישי כגון Amazon Bedrock, Microsoft Foundry או Google Cloud's Agent Platform, בפורמט Anthropic Messages או בפורמט של הספק עצמו, שבו הקידומת המשתנה מפחיתה שימוש חוזר במטמון ההנחיות באותו ספק.
#העברת תכונות הלאה (Feature pass-through)
Claude Code מתייחס לשער עם ANTHROPIC_BASE_URL כנקודת קצה בפורמט Anthropic ושולח אליו את כותרות הבטא ושדות גוף הבקשה שהוא שולח אל api.anthropic.com, למעט קבוצה קטנה של אבחונים וברירות מחדל השמורות לחיבורים ישירים, כגון ברירת המחדל של הזרמת כלים מדויקת (fine-grained tool streaming) המכוסה להלן. קבוצה זו משתנה בין גרסאות, לכן אל תסתמך על תוכנה.
יכולות המוסיפות שדות גוף מצמדות אותם עם כותרת בטא, והצמד נע יחד. שער שמפשיט את הכותרת תוך העברת הגוף, או מעביר גוף בפורמט Anthropic ל-upstream עם סכמה שונה, מייצר שגיאות 400 קשיחות; רק כאשר שני החלקים חסרים יחד התכונה נכבית בשקט. שער שמשכתב או מצנזר גופי בקשות לצורך בדיקת תוכן שובר את הצימוד באותו אופן שבו הפשטה שוברת אותו, לכן בצע בדיקה מבלי לשנות. הטבלה מציינת היכן תכונה סוטה מהצימוד.
הזרמת כלים מדויקת היא אחת מברירות המחדל של חיבור ישיר: היא כבויה כברירת מחדל בכל פעם שבקשות מנותבות דרך כתובת URL בסיסית מותאמת אישית, ושער מקבל אותה כאשר מפתחים מגדירים CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1.
| תכונה | צמד כותרת וגוף | תסמין כאשר נשבר | תיקון |
|---|---|---|---|
| הסקה אדפטיבית (Adaptive reasoning) | ללא כותרת בטא. Claude Code שולח thinking: {"type": "adaptive"} עבור Claude 4.6 ואילך, ומתייחס לשמות מודלים שאינו מזהה, כגון כינויי שער (gateway aliases), כמודלים נוכחיים שמקבלים את השדה | שגיאת 400 המציינת את השדה thinking או את התגית adaptive כאשר גרסת המודל ב-upstream אינה מקבלת זאת | שדרג את ה-upstream. ב-Opus 4.6 וב-Sonnet 4.6, מפתחים יכולים להגדיר במקום זאת CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 |
| ניהול הקשר (Context management) | כותרת הבטא של ניהול הקשר מצומדת עם שדה הגוף context_management | שגיאת 400 עם ההודעה Extra inputs are not permitted. נפוץ כאשר שער מקבל בקשות בפורמט Anthropic אך מעביר אותן אל Amazon Bedrock | העבר את שניהם, או הגדר CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| הקשר מורחב (Extended context) ו-חשיבה משולבת (interleaved thinking) | כותרות בטא בלבד, ללא שדה גוף | לא זמין באופן שקט כאשר הכותרת מופשטת; ה-upstream לעולם אינו רואה את בקשת היכולת | העבר את anthropic-beta מילה במילה |
| שדות כלים בגרסת בטא | כותרות בטא הקשורות לכלים מצומדות עם שדות סכמת כלים כגון strict ו-defer_loading | שגיאת 400 המציינת את שדה סכמת הכלים הבלתי מזוהה כאשר הגוף עובר ללא הכותרת שלו | העבר את שניהם, או הגדר CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| מאמץ (Effort) ו-פלטים מובנים (structured outputs) | שדה הגוף output_config נושא הגדרות מאמץ, פורמט פלט מובנה ותקציב משימה; כל אחד מהם מצומד עם כותרת בטא משלו | שגיאת 400 המציינת את output_config, לרוב Extra inputs are not permitted, בשרתי upstream של Amazon Bedrock ו-Google Cloud's Agent Platform | העבר את השדה ואת הכותרות שלו יחד |
| שמירת הנחיות במטמון (Prompt caching) | ללא צימוד בטא. Claude Code מצרף סמני cache_control לבלוקי system ולרשומות messages, כולל רשומות role: "system" שנוספו באמצע השיחה | ללא שגיאה: השיחה מחויבת כקלט ללא מטמון בכל תור, דבר הנראה כ-input_tokens גבוה עם פעילות מטמון מועטה או ללא פעילות מטמון כלל ב-usage | העבר את cache_control ללא שינוי בכל מקום שבו הוא מופיע, ואל תמיר תוכן system או תוכן הודעה במבנה בלוק למחרוזות פשוטות |
| ספירת אסימונים (Token counting) | ללא צימוד בטא; משתמש בנקודת הקצה count_tokens | ללא שגיאה: Claude Code נסוג להערכה מבוססת תווים, כך ש-/context מציג ספירות משוערכות | חשוף את נקודת הקצה עבור ספירת אסימונים מדויקת |
משתני הגדרות המודל מסוג ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES מצהירים על יכולות מודל רק בהגדרות הספק: CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX, CLAUDE_CODE_USE_FOUNDRY ו-CLAUDE_CODE_USE_MANTLE. אין להם כל השפעה מאחורי שער עם ANTHROPIC_BASE_URL.
#ניסיון חוזר אוטומטי והעברת שגיאות
מה ש-Claude Code עושה לאחר דחייה מצד ה-upstream תלוי במה שנדחה:
- כאשר ה-upstream דוחה את השדה
thinking, הודעת מערכת באמצע השיחה, או את סמןcache_controlבהודעה כזו,Claude Codeמנסה שוב את הבקשה ומשבית את היכולת שנדחתה להמשך השיחה. - כאשר ה-upstream דוחה חתימת חשיבה (thinking signature), כולל שגיאת
400שההודעה שלה אומרת שהבלוק הואbound to a different conversation,Claude Codeמסיר בלוקי חשיבה קודמים מהבקשה, מנסה שוב, ומשאיר אותם מחוץ לכל בקשה מאוחרת יותר. תגובות חדשות עדיין כוללות חשיבה. Claude Codeאינו מנסה שוב בעקבות דחיות של ניהול הקשר או שדות סכמת כלים, ולכן שגיאות400אלו מגיעות אל המפתח.
הדחייה bound to a different conversation מגיעה מבדיקת חשיבה שמורה (preserved thinking) של ה-API, אשר נכשלת כאשר תוכן system, תוכן tools או תוכן messages קודם שונה מזה שבבקשה שיצרה את החשיבה. שער שמשכתב חלק כלשהו מתוכן זה עלול לגרום לדחייה בעצמו; הפרק ספריות, שרתי פרוקסי ושערים (Libraries, proxies, and gateways) מכסה מה יש להעביר ללא שינוי.
לוגיקת הניסיון החוזר מתאימה לפי ניסוח השגיאה של ה-upstream, ולכן יש להעביר את גופי תגובות השגיאה ללא שינוי. שער העוטף שגיאות upstream במעטפת משלו שובר את נתיב ההתאוששות, גם כאשר הוא שומר על קוד המצב (status code), אלא אם כן הודעת המעטפת נושאת אסימון יציב מסוג capability_rejected:. השער Claude apps gateway מחליף אסימונים אלה בניסוח השגיאות של ספקי הענן, למשל capability_rejected: prompt_too_long.
#השבתת יכולות טרום השקה
המשתנה CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 עוצר את Claude Code משליחת יכולות טרום השקה ושדות הגוף שלהן בכל ספק, כולל ניהול הקשר ושדות הכלים בגרסת בטא. המשתנה אינו משפיע על הסקה אדפטיבית, אשר נבחרת לפי מודל ולא לפי בטא. הוא לעולם אינו מדכא את יכולת ה-OAuth שאימות מנוי דורש.
ב-Claude Code גרסה v2.1.227 ואילך, הארגון שלך יכול להשאיר את חיפוש כלי ה-MCP פעיל (MCP tool search) תחת משתנה זה באמצעות הגדרות מנוהלות (managed settings). מה ש-Claude Code שולח כאשר דריסה זו קיימת תלוי באופן שבו אתה מתחבר:
- בחיבור ישיר, או דרך שער המוגדר עם
ANTHROPIC_BASE_URL,Claude Codeממשיך לשלוח את כותרת הבטא של tool-search, את שדות הכליםdefer_loading, ואת בלוקיtool_reference, ומפשיט את השאר. - אצל ספק ענן, או כאשר מחוברים דרך Claude apps gateway, לדריסה אין כל השפעה.
מערך היכולות ש-Claude Code שולח גדל לאורך הגרסאות. עבור מחרוזות כותרות בטא נוכחיות, ראה את הפניה לכותרות בטא (beta headers reference); בדוק את השער שלך מול גרסאות חדשות של Claude Code במקום להצמד לרשימה שנצפתה.
#גילוי מודלים (Model discovery)
כאשר ANTHROPIC_BASE_URL מצביע על שער שחושף את הפורמט Anthropic Messages, Claude Code יכול לתשאל את נקודת הקצה /v1/models של השער בעת ההפעלה ולהוסיף את המודלים המוחזרים לבורר /model. אם אתה או מנהל המערכת שלך מגדירים את replaceBuiltInOptions במערך modelPicker, Claude Code מסתיר את המודלים שהתגלו מהבורר.
מפתחים מפעילים זאת על ידי הגדרת CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1, בסביבה שלהם או דרך הגדרות מנוהלות. הגילוי כבוי כברירת מחדל כדי ששערים המגובים במפתח API משותף לא יציגו לכל משתמש כל מודל שהמפתח יכול לגשת אליו.
#מתי הגילוי פועל
הגילוי חל רק על הפורמט Anthropic Messages. הוא אינו פועל כאשר:
- משתנה ספק כלשהו מסוג
CLAUDE_CODE_USE_*מוגדר, גם אםANTHROPIC_BASE_URLמוגדר גם כן. ANTHROPIC_BASE_URLאינו מוגדר או מצביע עלapi.anthropic.com.
הגילוי עדיין פועל כאשר תעבורה לא חיונית כבויה, מכיוון שהבקשה נשלחת רק לשער שלך. לפני גרסה v2.1.257, הגילוי לא פעל בזמן שתעבורה לא חיונית הייתה כבויה.
#בקשה ותגובה
הבקשה היא GET /v1/models?limit=1000 עם מגבלת זמן (timeout) של 3 שניות, וכל הפניה מחדש נחשבת לכישלון כדי שפרטי הגישה לא ידלפו ליעד ההפניה. שער שמגיב באיטיות או מפנה מחדש את /v1/models, אפילו מ-http ל-https, נכשל בגילוי באופן שקט; הגש את נקודת הקצה ישירות בכתובת ה-URL הבסיסית המוגדרת.
Claude Code שולח את בקשת הגילוי עם שתי כותרות פרטי הגישה שלהלן ומשמיט כותרת שערכה אינו נפתר. שליחת שתי הכותרות דורשת את Claude Code גרסה v2.1.248 ואילך. גרסאות קודמות שולחות רק את Authorization כאשר ANTHROPIC_AUTH_TOKEN מוגדר, ורק את x-api-key במקרים אחרים:
Authorization: הערך שלANTHROPIC_AUTH_TOKENכאסימון נושא (bearer token), אחרת ערך ה-apiKeyHelperכאסימון נושא. במקרה זהClaude Codeממתין שהמסייע יחזיר תשובה לפני שליחת הבקשה.x-api-key: מפתח ה-API ש-Claude Codeפתר, כגוןANTHROPIC_API_KEY. כאשר ערך מסייע הוא פרטי הגישה היחידים, כותרת זו נושאת אותו גם כן, כך שהערך מגיע בשתי הכותרות.
Claude Code שולח גם כותרות כלשהן מתוך ANTHROPIC_CUSTOM_HEADERS. כאשר לכותרת מותאמת אישית יש ערך שאינו ריק, Claude Code שולח אותה במקום כותרת מובנית בעלת אותו שם, תוך התאמת שמות ללא תלות ברישיות.
כאשר ערכה של אף אחת מכותרות פרטי הגישה אינו נפתר, Claude Code מדלג על הגילוי וכותב שורת [gatewayDiscovery] skipped ליומן הניפוי (debug log) של הפעלת claude --debug. אם תספק פרטי גישה רק דרך ANTHROPIC_CUSTOM_HEADERS, Claude Code עדיין מדלג על הגילוי.
Claude Code קורא את id, את display_name האופציונלי ואת description האופציונלי מכל רשומה במערך data של התגובה:
{
"data": [
{
"id": "claude-sonnet-4-6",
"display_name": "Claude Sonnet 4.6",
"description": "Default model for everyday coding tasks"
},
{ "id": "claude-opus-4-8" }
]
}Claude Code שומר רשומה כאשר ה-id שלה מכיל את claude או anthropic בכל מקום במחרוזת, בהתאמה שאינה תלויית רישיות, ומתעלם מהשאר. מזהים עם קידומת ספק כגון vertex_ai/claude-sonnet-4-6 או bedrock/anthropic.claude-sonnet-4-5 עוברים את המסנן; מזהה שאינו מכיל אף אחת מתת המחרוזות הללו אינו עובר. לפני גרסה v2.1.223, Claude Code שמר רשומה רק כאשר ה-id שלה החל ב-claude או ב-anthropic, מה שהסתיר מזהים עם קידומת ספק.
#רשומות בבורר ושמירה במטמון
הבורר (picker) הוא רשימת המודלים האינטראקטיבית שנפתחת כאשר מפתח מריץ את /model ב-Claude Code. כל רשומה שהתגלתה משתמשת ב-display_name כשמה כאשר השער שולח שם השונה מ-id. אחרת, הרשומה מציגה את שם המודל כאשר Claude Code מזהה את ה-id, ואת ה-id כאשר אינו מזהה אותו. לדוגמה, רשומה עם ה-id my-gateway-claude-sonnet-4-6 וללא display_name מופיעה כ-Sonnet 4.6.
הגילוי מוסיף רק מודלים שההגדרה המנוהלת availableModels מאפשרת.
כל רשומה מציגה גם את ה-description של המודל, מכווץ לשורה אחת. רשומה ללא description מציגה במקום זאת "From gateway". לפני גרסה v2.1.257, כל רשומה שהתגלתה הציגה "From gateway".
מזהה שהתגלה אינו מקבל שורה משלו כאשר הוא תואם לשורה שכבר קיימת בבורר:
- אותו מזהה: המזהה שהתגלה תואם במדויק למזהה של שורה קיימת, או ששני המזהים הם איותים שונים של אותה גרסת Fable.
- אותו מודל כמו כינוי מובנה: כאשר מזהה מפורש שהתגלה מציין את המודל שכינוי מובנה נפתר אליו כעת, הבורר מציג רק את שורת הכינוי. לדוגמה, בעוד ש-
sonnetנפתר אלclaude-sonnet-5, מזההclaude-sonnet-5שהתגלה מתקפל לתוך השורה שלsonnet, ומזההclaude-sonnet-4-6שהתגלה עדיין מקבל שורה משלו. לפני גרסה v2.1.197,Claude Codeלא קיפל מזהים אלה לתוך שורות מובנות, כך ש-claude-sonnet-5קיבל גם הוא שורת "From gateway" משלו.
התוצאות נשמרות במטמון ב-~/.claude/cache/gateway-models.json, או ב-%USERPROFILE%\.claude\cache\gateway-models.json ב-Windows, ומתרעננות בכל הפעלה. אם תגדיר את CLAUDE_CONFIG_DIR, המטמון יושב תחת ספרייה זו במקום זאת. אם הבקשה נכשלת או שהשער אינו מממש את /v1/models, הבורר נסוג לרשימה השמורה במטמון מההפעלה הקודמת או לרשימת המודלים המובנית. אם השער שלך מגיש מודלי Claude תחת כינויים שאינם תואמים את מסנן הגילוי, מפתחים יכולים להוסיף כינויים אלה ידנית באמצעות משתני הגדרות המודל.
#משאבים קשורים
עבור שאר מערך התיעוד של השער ומפרטי ה-API שבבסיסו:
- Gateway overview: מהו שער וכיצד לבחור בין Claude apps gateway למוצר אחר
- Other LLM gateways: כיצד לפרוס שער שהארגון שלך מפעיל וכיצד הוא מקיים אינטראקציה עם מנויי claude.ai
- Roll out an LLM gateway for your organization: רשימת התיוג למנהל מערכת המשתמשת במדריך זה
- Connect Claude Code to an LLM gateway: הגדרה ברמת המפתח וטבלת פתרון בעיות
- Beta headers reference: המערך הנוכחי של ערכי
anthropic-beta - Messages API: פורמט ה-API ששער בפורמט Anthropic מממש