המעבר שמפיל קוד, למה Opus 4.7 שונה מכל upgrade שעשית עד היום
רוב שדרוגי מודל הם פשוטים: מחליפים מחרוזת אחת, הכל עובד. Opus 4.7 שונה. שלושה שינויים שוברי-תאימות ב-Messages API אומרים שקוד עובד ב-4.6 יחזיר שגיאה 400 ב-4.7, בלי אזהרה, בלי deprecation warning. בתוך יומיים מהשקה, דוחות פגמים ממפתחים ב-Reddit ו-Hacker News הציפו את אותה תבנית: prompts שעבדו מצוין על 4.6 מניבים תוצאות קצרות, שגויות, או לא עולות בכלל. שיעור זה מפרק כל שינוי, מסביר למה Anthropic עשתה אותו, ונותן migration checklist עם קוד מוכן.
שינוי 1, Extended Thinking הוסר לחלוטין
זו השבירה הגדולה ביותר. בגרסאות 4.6 ומטה היה אפשר להגדיר תקציב טוקנים ל-thinking:
# Opus 4.6, עובד
thinking={"type": "enabled", "budget_tokens": 32000}
ב-4.7 הקריאה הזו מחזירה 400 Bad Request. ה-API מקבל רק מצב אחד כשחשיבה דלוקה:
# Opus 4.7, חובה
client.messages.create(
model="claude-opus-4-7",
max_tokens=64000,
thinking={"type": "adaptive"},
output_config={"effort": "high"}, # low | medium | high | xhigh | max
messages=[{"role": "user", "content": "..."}]
)
למה השינוי? Anthropic פרסמה שב-evals פנימיים, adaptive thinking עקף את manual budget בעקביות. הסיבה: מודל שיכול להחליט בעצמו כמה לחשוב מתאים טוב יותר לסוג המשימה מאשר developer שקובע תקציב שרירותי של 10,000 טוקנים.
Adaptive thinking כבויה כברירת מחדל ב-4.7. בקשה ללא שדה thinking תרוץ בלי חשיבה כלל, בדיוק כמו התנהגות 4.6 ללא thinking. צריך להפעיל אותה במפורש.
שינוי 2, ה-effort Level "xhigh" החדש
ב-Opus 4.7 יש 5 רמות effort: lowmediumhighxhigh (חדש!), max. ה-xhigh מיועד לקוד ולעבודת agents, זה ברירת המחדל של Claude Code בכל תוכניות המנוי. ההבדל המעשי:
| Effort | מתי להשתמש | עלות יחסית |
|---|---|---|
| low / medium | סיכומים פשוטים, סיווג טקסט | נמוכה |
| high | ניתוח עסקי, כתיבה מורכבת | בינונית |
| xhigh | קוד, אגנטים, debugging | גבוהה |
| max | בעיות מתמטיות קשות, מחקר | גבוהה מאד + נטייה ל-overthinking |
Anthropic ממליצה להתחיל עם xhigh לכל use-case של קוד ו-agents, ו-high כמינימום לכל שאר המשימות הקריטיות. אם תוצאות max גרועות מ-xhigh, אל תתפלא, זה documented: max לפעמים גורם ל-overthinking.
שינוי 3, Thinking Display: ברירת מחדל שקטה שמקפיאה אפליקציות
זה השינוי הכי מסוכן כי הוא לא זורק שגיאה. ב-4.6 thinking blocks חזרו עם תוכן. ב-4.7 ברירת המחדל היא display: "omitted", הבלוק קיים בתגובה, אבל שדה thinking ריק לגמרי.
תוצאה: אפליקציות שמסטרמות חשיבה למשתמש ("Claude חושב...") הופיעו קפואות לשניות ארוכות, בלי שום הסבר. דוחות פגמים הציפו את הקהילה ביום הראשון לשחרור.
התיקון: שורה אחת:
thinking={
"type": "adaptive",
"display": "summarized" # מחזיר תוכן חשיבה
# default: "omitted"
}
כאשר display="summarized", latency קצת גבוהה יותר, Claude מכין תמצית של reasoning שלו. אם אין לך צורך בתוכן החשיבה, השאר omitted וקבל latency טוב יותר.
שינוי 4, Temperature, top_p, top_k הוסרו לחלוטין
רבים שאלו: "מה קורה אם אני שולח temperature=0 לדטרמיניזם?". התשובה של Anthropic: זה לא עבד גם ב-4.6, temperature=0 מעולם לא הבטיח פלט זהה. ב-4.7 שלושת הפרמטרים האלה פשוט זורקים 400.
המעבר: הסר אותם מהקריאה. אם צריך לכוון התנהגות, עשה זאת דרך prompt. לדוגמה, במקום temperature=0.7 לקריאטיביות: הוסף לsystem prompt "ענה בשלוש גרסאות שונות עם גוון שונה לכל אחת".
Multi-turn עם Thinking Blocks, הכשל השקט ב-Agent Loops
ב-multi-turn עם tools יש כלל אחד קריטי: אל תסנן thinking blocks מה-messages history. ה-signature בתוך כל thinking block הוא reasoning מוצפן שהמודל צריך לשחזר הקשר. סינון שלו לא יזרוק שגיאה, הוא יגרום לתשובות עתידיות להיות פחות טובות, ובחלק מהמקרים לאבד חוט של ריצה.
# ❌ שגוי, מסנן thinking blocks
prev = [b for b in response.content if b.type != "thinking"]
messages.append({"role": "assistant", "content": prev})
# ✅ נכון, שומר הכל כפי שהוא
messages.append({"role": "assistant", "content": response.content})
Task Budgets, תקציב לאגנט שלם (Beta)
פיצ'ר חדש ב-4.7 לסטארטאפים בת"א שבונים agent loops: task budget נותן למודל הערכה של כמה טוקנים יש לו על פני ריצה שלמה, כולל חשיבה, קריאות כלים, תוצאות, ופלט סופי. הוא רואה ספירה לאחור ומעדיף משימות.
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=128000,
output_config={
"effort": "high",
"task_budget": {"type": "tokens", "total": 128000}
},
messages=[{"role": "user", "content": "סרוק את הcodebase והצע refactor."}],
betas=["task-budgets-2026-03-13"]
)
task_budget לעומת max_tokens: max_tokens הוא תקרה קשה לכל בקשה בודדת, המודל לא יודע עליו. task_budget הוא ייעוץ לריצה שלמה, המודל רואה אותו ומכווין עצמו. מינימום: 20k טוקנים. לעבודות שאיכות חשובה בהן יותר ממהירות, אל תגדיר task budget.
Checklist: Migration מ-4.6 ל-4.7
- החלף
model="claude-opus-4-6"ב-model="claude-opus-4-7" - החלף
thinking={"type":"enabled","budget_tokens":N}ב-thinking={"type":"adaptive"}+output_config={"effort":"high"} - הסר
temperaturetop_ptop_kמכל קריאה - אם מסטרמים חשיבה למשתמש: הוסף
"display":"summarized" - בditor לOPS שמשתמשים ב-multi-turn: בדוק שלא מסננים thinking blocks
- עדכן
max_tokensעם headroom, הtokenizer החדש צורך עד 35% יותר - טיפ: הפעל
/claude-api migrateב-Claude Code לאוטומציה של השלבים
סיכום, מה חייב לזכור
- budget_tokens = 400 error, רק adaptive thinking ב-4.7
- temperature/top_p/top_k = 400 error, הסר מכל קריאה
- display:omitted כברירת מחדל, אם מסטרמים חשיבה: הוסף display:summarized
- xhigh, effort level חדש, מומלץ לקוד ו-agents
- multi-turn, אל תסנן thinking blocks מה-history
- task_budget, ייעוץ לריצה שלמה, לא תקרה קשה. מינימום 20k
- כלי אוטומציה:
/claude-api migrateב-Claude Code
