ClaudeLearn/Streaming
01 / 10
לבנות · מודול 32

Streaming -
תשובה תוך כדי כתיבה.

למה התשובה שמופיעה טוקן-אחר-טוקן מרגישה אחרת. ואיך לממש את זה בקוד שלכם.

10 שקופיות  ·  streaming  ·  ~8 דקות
תחושה

תשובה שמתגלגלת
מרגישה חיה.

בלי streaming: מחכים 8 שניות לתשובה ריקה ואז מקבלים פסקה גדולה. עם streaming: התשובה מתחילה להופיע אחרי 200ms.

המוח האנושי חסר סבלנות. המתנה של 5 שניות מול מסך ריק מרגישה יותר מ-15 שניות של תשובה שמתפתחת.

איך זה עובד

טוקן ראשון - מתחילים לשלוח.

במקום לחכות שכל הפלט ייווצר ולהחזיר אותו בבת אחת, ה-API שולח כל טוקן מיד שהוא נוצר. הלקוח מקבל זרם של אירועים, ומצרף אותם בזמן אמת על המסך.

איך מפעילים

שדה אחד ב-JSON.

{ "model": "claude-sonnet-4-5", "max_tokens": 1024, "stream": true, "messages": [...] }

הגדרה אחת - stream: true - וה-API מתחיל להחזיר Server-Sent Events במקום JSON אחיד.

איך לקבל

קוד JS לדוגמה.

const res = await fetch(API_URL, { method: "POST", headers: {...}, body: JSON.stringify({ ...payload, stream: true }) }); const reader = res.body.getReader(); const decoder = new TextDecoder(); while (true) { const { done, value } = await reader.read(); if (done) break; // parse SSE chunks, append to UI }
סוגי אירועים

חמישה אירועים בזרם.

  • message_start - תחילת ההודעה, עם metadata
  • content_block_start - תחילת בלוק תוכן (טקסט, או tool_use)
  • content_block_delta - חלק חדש של תוכן (זה הטוקן שמופיע)
  • content_block_stop - סיום הבלוק הנוכחי
  • message_stop - סיום ההודעה, עם usage stats
איפה זה משנה

שלושה מקרים מובהקים.

  • צ'אטבוט אינטראקטיבי. המשתמש רואה את התשובה מתפתחת - לא לוחץ refresh.
  • תשובה ארוכה. כתיבת סיכום של 1,500 מילים. עם streaming - 4-5 שניות לתחילת הקריאה. בלי - 30 שניות מסך ריק.
  • תהליך מבוסס סוכן. שבו כל קריאת כלי מציגה בזמן אמת מה הסוכן עושה - שקיפות חיונית.
מתי לא צריך

שתי סיטואציות שבהן streaming לא מועיל.

  • עיבוד באצווה (Batch). אם אתם מעבדים 10,000 פניות ברקע, אף אחד לא מסתכל. streaming רק מוסיף מורכבות.
  • תשובה קצרה מאוד. אם הפלט הוא 30 טוקנים - כל התשובה מגיעה תוך פחות משנייה. streaming לא ישנה כלום.
אנטי-פטרנים

טעויות נפוצות.

  • להציג טוקנים חצויים. במהלך הזרימה, טוקן יחיד יכול להיות חלק ממילה - אבל לרוב מילה שלמה. אל תגיבו על מילים לפני שהושלמו.
  • לפרסר JSON תוך כדי. אם המודל מחזיר JSON, אל תנסו לפרסר באמצע. חכו ל-message_stop, ורק אז פרסרו.
  • להתעלם משגיאות. אם החיבור נופל באמצע, צריך לנהל את זה. streaming = שיחה ארוכה יותר עם השרת.
המשכים טבעיים

streaming הוא רק חלק מבניית UX חיה.

ClaudeLearn · סוף מודול 32 · חזרה לקטלוג

← → מקשי חצים  ·  רווח להמשך