[{"data":1,"prerenderedAt":1854},["ShallowReactive",2],{"posts":3,"\u002Fai\u002Fopenai-decisions-api-classification":308},[4,23,34,46,59,70,86,97,109,120,131,142,150,159,167,176,184,193,201,209,217,225,233,241,249,258,269,280,289,299],{"path":5,"title":6,"description":7,"type":8,"level":9,"minutes":10,"date":11,"cover":12,"coverAlt":13,"featured":14,"tags":15,"topic":22},"\u002Fai\u002Fgithub-git-infrastructure-agent-scale","איך GitHub בונה מחדש את תשתית Git בשביל סוכני AI","סוכני קוד הגדילו את הפעילות ב־GitHub פי 2 עד פי 5 בשנה. חמשת צווארי הבקבוק בתשתית Git, ההפרדה בין אחסון לחישוב, ומה זה אומר לצוותים שעובדים עם סוכנים.","הסבר","רמת ביניים",9,"2026-10-07","\u002Fimages\u002Fposts\u002Fgithub-git-infrastructure-agent-scale.svg","סוכני קוד רבים שולחים ענפים עם commits לעדכון reference אחד, שנשמר באחסון נפרד, וממנו שלושה workers עם מטמון עונים לקריאות.",false,[16,17,18,19,20,21],"AI","Agents","Git","GitHub","DevOps","CI\u002FCD","ai",{"path":24,"title":25,"description":26,"type":8,"level":9,"minutes":27,"date":11,"cover":28,"coverAlt":29,"featured":14,"tags":30,"topic":22},"\u002Fai\u002Fmistral-large-4-open-weights-model","Mistral Large 4: מודל משקלים פתוחים עם טריליון פרמטרים","Mistral Large 4 הוא מודל MoE עם משקלים פתוחים, 49 מיליארד פרמטרים פעילים ומחיר נמוך ב־API. מה יש בו, מה המספרים אומרים, ומתי שווה לשקול אותו.",10,"\u002Fimages\u002Fposts\u002Fmistral-large-4-open-weights-model.svg","טוקן עובר דרך נתב שמפעיל רק שני מומחים מתוך רשת גדולה של מומחים, ומשם למשקלים פתוחים עם מנעול פתוח ולשרת משלכם.",[16,31,32,33,17],"Mistral","LLM","Open Weights",{"path":35,"title":36,"description":37,"type":38,"level":9,"minutes":39,"date":11,"cover":40,"coverAlt":41,"featured":14,"tags":42,"topic":22},"\u002Fai\u002Fopenai-decisions-api-classification","Decisions API של OpenAI: סיווג וניתוב עם תשובות מוקלדות","Decisions API מחזיר הסתברויות, בחירה מרשימה או ציון במקום טקסט חופשי, ומהיר פי 10 מ־Responses API. איך זה עובד, דוגמאות קוד ב־JavaScript וב־Python ואיך קובעים ספים.","מדריך",12,"\u002Fimages\u002Fposts\u002Fopenai-decisions-api-classification.svg","פנייה נכנסת לרכיב החלטה שמפצל אותה לארבע אפשרויות עם עמודות הסתברות, והאפשרות שעוברת את הסף הופכת לתשובה מסומנת.",[16,32,43,44,45],"OpenAI","JavaScript","Python",{"path":47,"title":48,"description":49,"type":8,"level":9,"minutes":50,"date":11,"cover":51,"coverAlt":52,"featured":14,"tags":53,"topic":58},"\u002Ffullstack\u002Fpolars-2-whats-new","Polars 2.0: מה חדש, ומה עלול להישבר כשמשדרגים","מנוע streaming כברירת מחדל, גלישה לדיסק כשהזיכרון נגמר, טיפוס Map וטיפוסים קשוחים יותר. מה חדש ב־Polars 2.0 ומה לבדוק בקוד לפני השדרוג.",11,"\u002Fimages\u002Fposts\u002Fpolars-2-whats-new.svg","טבלת נתונים גדולה עוברת בחלקים דרך מנוע streaming, הזיכרון מתמלא עד סף של 80% והעודף גולש לדיסק, ובסוף מתקבלת טבלת תוצאה עם סימן וי.",[54,45,55,56,57],"Polars","Data","DataFrame","SQL","fullstack",{"path":60,"title":61,"description":62,"type":8,"level":9,"minutes":50,"date":63,"cover":64,"coverAlt":65,"featured":14,"tags":66,"topic":58},"\u002Ffullstack\u002Fnuxt-4-6-whats-new","Nuxt 4.6: מה באמת משנה לכם, ומה לבדוק לפני שמשדרגים","קוד שרת שלא תלוי בגרסת h3, $fetch עם טיפוסים אמיתיים, סשנים מובנים ו־CLI חדש. מה חשוב, מה עדיין ניסיוני, ואיפה השדרוג עלול לשבור.","2026-10-06","\u002Fimages\u002Fposts\u002Fnuxt-4-6-whats-new.svg","טרמינל שבודק את גרסת Node ומשדרג, תג גרסה 4.6, ו־handler שרת אחד שמתחבר גם ל־Nitro 2 וגם ל־Nitro 3.",[67,68,69],"Nuxt","Vue","TypeScript",{"path":71,"title":72,"description":73,"type":38,"level":74,"minutes":75,"date":63,"cover":76,"coverAlt":77,"featured":14,"tags":78,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-guide","Home Assistant (הום אסיסטנט): המדריך המלא בעברית","מה זה Home Assistant (הום אסיסטנט), מה אפשר לעשות איתו ובאיזה סדר ללמוד: מפה של כל המדריכים בעברית, מהתקנה ואוטומציות ועד גיבוי ותחזוקה.","למתחילים",28,"\u002Fimages\u002Fposts\u002Fhome-assistant-guide.svg","חמש מדרגות של מסלול למידה ב-Home Assistant: התקנה, אוטומציה, התראה לטלפון, לוח בקרה וגיבוי, עם קו קפיצות מקווקו מהמדרגה הראשונה ועד המגן שבראש.",[79,80,81,82,83,84],"Home Assistant","בית חכם","אוטומציות","התקנה","לוח בקרה","גיבוי","smart-home",{"path":87,"title":88,"description":89,"type":38,"level":9,"minutes":90,"date":63,"cover":91,"coverAlt":92,"featured":14,"tags":93,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-shabbat-mode","מצב שבת ב-Home Assistant: אוטומציות לשבת וחג","מצב שבת ב-Home Assistant: מגדירים Helper, מחברים את Jewish Calendar ובונים אוטומציות לתאורה ולדוד שפועלות נכון גם בחג וברצף של שלושה ימים.",20,"\u002Fimages\u002Fposts\u002Fhome-assistant-shabbat-mode.svg","שקיעה ונרות דולקים עוברים דרך לוח השנה העברי למתג מצב שבת, שמפעיל תאורה לפי לוח זמנים, טיימר לדוד והשתקת התראות.",[79,81,80,94,95,96],"שבת וחג","תאורה","YAML",{"path":98,"title":99,"description":100,"type":8,"level":74,"minutes":101,"date":63,"cover":102,"coverAlt":103,"featured":14,"tags":104,"topic":85},"\u002Fsmart-home\u002Fzha-vs-zigbee2mqtt","ZHA או Zigbee2MQTT: מה לבחור ב־Home Assistant?","ZHA או Zigbee2MQTT? מה ההבדל בין שתי הדרכים לחבר Zigbee ל־Home Assistant, מתי כל אחת מתאימה, מה קורה בגיבוי ומה עולה לעבור ביניהן אחרי שהרשת גדלה.",14,"\u002Fimages\u002Fposts\u002Fzha-vs-zigbee2mqtt.svg","מכשירי Zigbee מתחברים לרכז, ומשם שתי דרכים מגיעות אל Home Assistant: דרך קצרה דרך ZHA, ודרך ארוכה דרך Zigbee2MQTT וברוקר MQTT",[79,105,106,107,108,80],"Zigbee","ZHA","Zigbee2MQTT","MQTT",{"path":110,"title":111,"description":112,"type":8,"level":9,"minutes":113,"date":114,"cover":115,"coverAlt":116,"featured":14,"tags":117,"topic":22},"\u002Fai\u002Fopus-5-5-long-running-tasks","Opus 5.5 ב־Claude Code: משימה אחת, ריצה ארוכה","מה משתנה כש־Opus 5.5 מחזיק משימה ארוכה לבד ב־Claude Code: סוף ברור, נקודות עצירה ב־CLAUDE.md, רשימת משימות בקובץ וסוכני משנה.",8,"2026-10-05","\u002Fimages\u002Fposts\u002Fopus-5-5-long-running-tasks.svg","כרטיס של משימה אחת יוצא לריצה ארוכה, עוצר בתמרור לאישור, מסמן משימות בקובץ, מתחלק לשלושה סוכני משנה ומגיע לדגל סיום עם וי.",[16,118,17,119],"Claude Code","Opus 5.5",{"path":121,"title":122,"description":123,"type":38,"level":9,"minutes":124,"date":114,"cover":125,"coverAlt":126,"featured":14,"tags":127,"topic":58},"\u002Ffullstack\u002Fshare-local-dev-server-ssh-tunnel","חלופה ל־ngrok: שרת פיתוח מקומי ב־HTTPS עם SSH ו־nginx","במקום ngrok: מנהרת SSH הפוכה לשרת שלכם, nginx שמנתב כל תת־דומיין לפורט אחר, תעודת wildcard וסיסמה. כל שלב מוסבר: למה, איך, ומה אמורים לראות.",30,"\u002Fimages\u002Fposts\u002Fshare-local-dev-server-ssh-tunnel.svg","מחשב עם שרת פיתוח מקומי מחובר במנהרת SSH לשרת, שמעביר את הבקשה לפורט הנכון, דרך מנעול HTTPS, עד לקישור שנפתח בטלפון.",[128,129,130,20],"SSH","nginx","HTTP",{"path":132,"title":133,"description":134,"type":38,"level":9,"minutes":135,"date":136,"cover":137,"coverAlt":138,"featured":14,"tags":139,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-cloudflare-tunnel","גישה ל-Home Assistant מחוץ לבית עם Cloudflare Tunnel","מחברים את Home Assistant לכתובת משלכם בלי לפתוח פורט בנתב. מדריך ל-Home Assistant OS ול-Docker, עם הרשאות גישה ובדיקות מהטלפון.",17,"2026-10-04","\u002Fimages\u002Fposts\u002Fhome-assistant-cloudflare-tunnel.svg","טלפון מחוץ לבית מתחבר דרך Cloudflare Tunnel ומחבר מקומי ל-Home Assistant בבית.",[79,140,141,80],"Cloudflare","Docker",{"path":143,"title":144,"description":145,"type":38,"level":74,"minutes":113,"date":146,"cover":147,"coverAlt":148,"featured":14,"tags":149,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-backup-update-recovery","גיבוי Home Assistant שאפשר לשחזר, ועדכון בטוח","גיבוי Home Assistant מחוץ לשרת, שמירת מפתח ההצפנה ובדיקת שחזור מבודדת, ורק אז עדכון של הבית הפעיל. תוכנית התאוששות קצרה שאפשר לבדוק.","2026-09-29","\u002Fimages\u002Fposts\u002Fhome-assistant-backup-update-recovery.svg","שרת מקומי, ארכיון גיבוי ועותק חיצוני מחוברים למסלול שחזור.",[79,141,84,80],{"path":151,"title":152,"description":153,"type":38,"level":74,"minutes":113,"date":154,"cover":155,"coverAlt":156,"featured":14,"tags":157,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-device-maintenance","חיישן נעלם? תחזוקת מכשירים וסוללות ב־Home Assistant","חיישן Zigbee שהפסיק לדווח? בונים ב־Home Assistant רשימת תחזוקה קצרה, מפרידים בין סוללה חלשה למכשיר לא זמין ומאתרים בעיות בלי לאפס את הרשת.","2026-09-24","\u002Fimages\u002Fposts\u002Fhome-assistant-device-maintenance.svg","סוללה חלשה, רשת מכשירים עם צומת לא זמין וכלי תחזוקה.",[79,158,105,80],"חיישנים",{"path":160,"title":161,"description":162,"type":38,"level":74,"minutes":113,"date":163,"cover":164,"coverAlt":165,"featured":14,"tags":166,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-washing-machine-finished","מכונת הכביסה סיימה: התראה ב־Home Assistant לפי צריכת חשמל","התראה ב־Home Assistant כשמכונת הכביסה סיימה, לפי צריכת החשמל: מודדים מחזור, קובעים ספי הספק מהנתונים ומטפלים בדיווח חסר.","2026-09-19","\u002Fimages\u002Fposts\u002Fhome-assistant-washing-machine-finished.svg","מכונת כביסה מחוברת לגרף צריכת הספק ולהודעת סיום בטלפון.",[79,81,96,158,80],{"path":168,"title":169,"description":170,"type":38,"level":74,"minutes":171,"date":172,"cover":173,"coverAlt":174,"featured":14,"tags":175,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-smart-button-actions","כפתור חכם ב־Home Assistant במקום עוד אפליקציה","מחברים כפתור Zigbee או כפתור פיזי אחר ל־Home Assistant: מזהים איך האינטגרציה מדווחת על לחיצות, מחברים פעולה אחת ובודקים שהיא אמינה.",7,"2026-09-14","\u002Fimages\u002Fposts\u002Fhome-assistant-smart-button-actions.svg","יד לוחצת על כפתור פיזי שמפעיל תאורה ותריס במסגרת סצנה.",[79,81,105,95,80],{"path":177,"title":178,"description":179,"type":38,"level":74,"minutes":171,"date":180,"cover":181,"coverAlt":182,"featured":14,"tags":183,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-helpers-house-modes","Helpers ב־Home Assistant: מצב אורחים וזיכרון לבית","Helper מסוג Toggle ב־Home Assistant: מצב אורחים שנשלט מלוח הבקרה, תנאי באוטומציה שמתחשב בו, ובדיקה של מה שנשאר אחרי אתחול.","2026-09-09","\u002Fimages\u002Fposts\u002Fhome-assistant-helpers-house-modes.svg","בורר מצבי בית מחובר למתגי עזר שמייצגים אורחים, יציאה והשהיה.",[79,81,96,80],{"path":185,"title":186,"description":187,"type":38,"level":74,"minutes":171,"date":188,"cover":189,"coverAlt":190,"featured":14,"tags":191,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-automation-debugging","אוטומציה ב־Home Assistant לא עובדת? כך מוצאים את הסיבה","אוטומציה ב־Home Assistant לא עבדה? בודקים טריגרים, תנאים ופעולות לפי הסדר, קוראים Trace ומבחינים בין תקלה בחיישן לבין כלל שלא התקיים.","2026-09-04","\u002Fimages\u002Fposts\u002Fhome-assistant-automation-debugging.svg","מסלול אוטומציה מתפצל לתנאי ולפעולה, וזכוכית מגדלת מדגישה את נקודת הבדיקה.",[79,81,96,192,80],"Debugging",{"path":194,"title":195,"description":196,"type":38,"level":74,"minutes":171,"date":197,"cover":198,"coverAlt":199,"featured":14,"tags":200,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-light-manual-control","האור נכבה כשאתם בחדר? שליטה ידנית באור ב-Home Assistant","האור נכבה בזמן שאתם קוראים? משפרים אוטומציית תאורה לפי תנועה ב-Home Assistant עם כיבוי נפרד ומתג שמשאיר את האור דולק, ובודקים ארבעה מצבים.","2026-08-30","\u002Fimages\u002Fposts\u002Fhome-assistant-light-manual-control.svg","חיישן תנועה, אדם בחדר ומנורה מופיעים לצד מתג שמאפשר להשהות כיבוי אוטומטי.",[79,80,81,95],{"path":202,"title":203,"description":204,"type":38,"level":74,"minutes":113,"date":205,"cover":206,"coverAlt":207,"featured":14,"tags":208,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-presence-detection","זיהוי נוכחות ב-Home Assistant בלי כיבויים מפתיעים","זיהוי נוכחות ב-Home Assistant עם הטלפון וישות Person: בודקים כניסה ויציאה ובונים התראת עזיבה שלא מתייחסת למידע חסר כאל בית ריק.","2026-08-25","\u002Fimages\u002Fposts\u002Fhome-assistant-presence-detection.svg","שני אנשים מחוץ לבית, אזור נוכחות סביב הבית ושעון להשהיית פעולות יציאה.",[79,80,81,158],{"path":210,"title":211,"description":212,"type":38,"level":74,"minutes":171,"date":213,"cover":214,"coverAlt":215,"featured":14,"tags":216,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-useful-notifications","התראות Home Assistant לטלפון, בלי להציף אותו","התראה לטלפון מ-Home Assistant כשהדלת נשארת פתוחה 5 דקות: הודעת ניסיון, אוטומציה פשוטה ומניעת הודעות חוזרות על כל פתיחה קצרה.","2026-08-20","\u002Fimages\u002Fposts\u002Fhome-assistant-useful-notifications.svg","דלת פתוחה מחוברת לשעון המתנה ולהתראה אחת בטלפון.",[79,80,81],{"path":218,"title":219,"description":220,"type":38,"level":74,"minutes":171,"date":221,"cover":222,"coverAlt":223,"featured":14,"tags":224,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-scenes-scripts","סצנות וסקריפטים ב-Home Assistant: לילה טוב בלחיצה","סצנה או סקריפט ב-Home Assistant? בונים סצנת ערב וסקריפט ״לילה טוב״ שמופעלים בלחיצה על כפתור אחד, ומבינים מתי מתאים כל אחד מהם.","2026-08-15","\u002Fimages\u002Fposts\u002Fhome-assistant-scenes-scripts.svg","כפתור אחד מפעיל רצף פעולות שמוביל לבית במצב לילה.",[79,80,81,95],{"path":226,"title":227,"description":228,"type":38,"level":74,"minutes":171,"date":229,"cover":230,"coverAlt":231,"featured":14,"tags":232,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-family-dashboard","לוח בקרה ב-Home Assistant שבני הבית באמת ישתמשו בו","לוח בקרה מובנה ב-Home Assistant עם חדרים, כפתורים ברורים ותצוגה נוחה בטלפון, בלי להתקין הרחבות. מסך יומיומי לכל בני הבית.","2026-08-10","\u002Fimages\u002Fposts\u002Fhome-assistant-family-dashboard.svg","לוח בקרה גדול עם כפתורי תאורה וטמפרטורה מופיע לצד גרסה מותאמת לטלפון.",[79,80,83],{"path":234,"title":235,"description":236,"type":38,"level":74,"minutes":171,"date":237,"cover":238,"coverAlt":239,"featured":14,"tags":240,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-organize-devices","חדרים, מכשירים וישויות: עושים סדר ב-Home Assistant","מסדרים את Home Assistant לפי חדרים, מבינים מה ההבדל בין מכשיר לישות (Entity) ובוחרים שמות שקל למצוא, בלי לשבור אוטומציות קיימות.","2026-08-05","\u002Fimages\u002Fposts\u002Fhome-assistant-organize-devices.svg","תוכנית חדרים מחוברת למכשיר אחד ולשלוש ישויות נפרדות.",[79,80,81],{"path":242,"title":243,"description":244,"type":38,"level":74,"minutes":113,"date":245,"cover":246,"coverAlt":247,"featured":14,"tags":248,"topic":85},"\u002Fsmart-home\u002Fhome-assistant-hallway-motion-light","חיישן תנועה שמדליק אור: אוטומציה ראשונה ב־Home Assistant","מדליקים תאורה כשחיישן תנועה מזהה תנועה ומכבים אחרי שתי דקות בלי תנועה: אוטומציה ראשונה ב־Home Assistant עם YAML מלא והסבר על טריגרים ובדיקות.","2026-07-31","\u002Fimages\u002Fposts\u002Fhome-assistant-hallway-motion-light.svg","מסדרון ביתי עם חיישן תנועה ותאורת תקרה שנדלקת כשאדם נכנס",[79,81,95,96,158,80],{"path":250,"title":251,"description":252,"type":38,"level":9,"minutes":113,"date":253,"cover":254,"coverAlt":255,"featured":14,"tags":256,"topic":58},"\u002Ffullstack\u002Ffetch-http-errors-and-timeouts","למה Fetch לא זורק שגיאה כשהשרת מחזיר 404?","למה fetch לא זורק שגיאה על 404 או 500, איך בודקים response.ok, מטפלים בגוף תשובה לא צפוי ומגבילים זמן עם AbortController. עם פונקציה שאפשר להריץ.","2026-07-26","\u002Fimages\u002Fposts\u002Ffetch-http-errors-and-timeouts.svg","בקשת Fetch מתפצלת לתשובת HTTP עם שגיאה ולכשל רשת או פסק זמן",[44,257,130,192],"Fetch",{"path":259,"title":260,"description":261,"type":8,"level":74,"minutes":113,"date":262,"cover":263,"coverAlt":264,"featured":14,"tags":265,"topic":22},"\u002Fai\u002Frag-answering-from-your-documents","RAG: איך נותנים למודל לענות מתוך המסמכים שלכם","מה זה RAG ואיך נותנים למודל שפה לענות מתוך המסמכים שלכם: חיפוש לפני כתיבה, חלוקה לקטעים, קישור למקור ובדיקה שהתשובה באמת נשענת עליו.","2026-07-21","\u002Fimages\u002Fposts\u002Frag-answering-from-your-documents.svg","מסמכי מקור נבדקים בזכוכית מגדלת, קטע מתאים נבחר ועובר לכרטיס תשובה",[16,266,267,268],"RAG","חיפוש","מסמכים",{"path":270,"title":271,"description":272,"type":8,"level":74,"minutes":113,"date":273,"cover":274,"coverAlt":275,"featured":14,"tags":276,"topic":85},"\u002Fsmart-home\u002Fmatter-thread-zigbee-explained","Matter, Thread ו־Zigbee: מה ההבדל ומה צריך בבית?","Matter, Thread ו־Zigbee אינם שלוש חלופות. מה כל שם מתאר, מה תפקיד הרכזת, ומה לבדוק לפני שמוסיפים מכשיר חדש לבית חכם קיים.","2026-07-16","\u002Fimages\u002Fposts\u002Fmatter-thread-zigbee-explained.svg","שתי קבוצות של מכשירי בית חכם, רשת Mesh ורכזת, עם שער שמקשר בין שכבות התקשורת",[277,278,105,279,79,80],"Matter","Thread","רשת ביתית",{"path":281,"title":282,"description":283,"type":38,"level":74,"minutes":10,"date":284,"cover":285,"coverAlt":286,"featured":14,"tags":287,"topic":58},"\u002Ffullstack\u002Fbrowser-to-server-save-form","טופס HTML ושרת Node.js: מה קורה בין הדפדפן לשרת","טופס HTML, בקשת POST עם fetch ושרת Node.js קטן בלי framework. דוגמה מלאה שמראה איך נתונים עוברים מהדפדפן לשרת ואיפה בודקים אותם.","2026-07-11","\u002Fimages\u002Fposts\u002Fbrowser-to-server-save-form.svg","טופס בדפדפן שולח מעטפת נתונים לשרת ומשם למסד הנתונים",[44,288,130,257],"Node.js",{"path":290,"title":291,"description":292,"type":8,"level":74,"minutes":50,"date":293,"cover":294,"coverAlt":295,"featured":296,"tags":297,"topic":22},"\u002Fai\u002Fai-agent-from-request-to-result","מה זה סוכן AI: מה קורה בין הבקשה לתוצאה","מה זה סוכן AI ואיך מודל שפה משתמש בכלים (Tool Calling), מה ההבדל בין סוכן לתהליך קבוע, ואיך מגדירים משימה שאפשר לבדוק את התוצאה שלה.","2026-07-06","\u002Fimages\u002Fposts\u002Fai-agent-from-request-to-result.svg","בקשה עוברת דרך מנגנון בחירה לכלי חיפוש, מסמכים וביצוע, עד לתוצאה שנבדקה",true,[16,17,298],"Tool Calling",{"path":300,"title":301,"description":302,"type":38,"level":74,"minutes":75,"date":303,"cover":304,"coverAlt":305,"featured":14,"tags":306,"topic":85},"\u002Fsmart-home\u002Fsmart-home-first-steps-home-assistant","בית חכם למתחילים: בחירת ציוד והתקנת Home Assistant","מה צריך לבית חכם ראשון, איך בוחרים בין Home Assistant OS ל-Container, ואיך מתקינים על Raspberry Pi, מחשב, מכונה וירטואלית או NAS.","2026-07-01","\u002Fimages\u002Fposts\u002Fsmart-home-first-steps-home-assistant.svg","בית עם חיישן ותאורה, המחובר לשרת Home Assistant ולשתי אפשרויות התקנה: מערכת הפעלה וקונטיינר",[79,80,82,141,307,81],"Raspberry Pi",{"id":309,"title":36,"body":310,"cover":40,"coverAlt":41,"date":11,"description":37,"draft":14,"extension":1845,"featured":14,"level":9,"meta":1846,"minutes":39,"navigation":296,"ogImage":1847,"path":35,"seo":1848,"sitemap":1849,"stem":1850,"tags":1851,"type":38,"updated":1852,"__hash__":1853},"posts\u002Fai\u002Fopenai-decisions-api-classification.md",{"type":311,"value":312,"toc":1832},"minimark",[313,317,328,333,336,339,343,351,397,406,410,489,501,505,508,869,872,1058,1061,1092,1096,1102,1505,1516,1523,1527,1532,1669,1676,1680,1683,1697,1700,1704,1707,1718,1721,1744,1748,1777,1781,1784,1807,1810,1813,1817,1828],[314,315,316],"p",{},"הרבה מהשימושים במודל שפה במוצר אמיתי הם בכלל לא כתיבה. רוצים לדעת לאיזו מחלקה לנתב פנייה, אם בתמונה יש מוצר פגום, או כמה חמורה תקלה שמשתמש דיווח. עד היום עשינו את זה עם מודל שמחזיר טקסט, ואז פירקנו את הטקסט וקיווינו שהוא בפורמט הנכון. ה־Decisions API של OpenAI בנוי בדיוק למקרה הזה: הוא לא כותב, הוא מחליט, ומחזיר תשובה מוקלדת עם מספרים.",[314,318,319,320,327],{},"הכתבה מבוססת על ",[321,322,326],"a",{"href":323,"rel":324},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fdecisions",[325],"nofollow","המדריך הרשמי של Decisions API",". ה־API נמצא בבטא ציבורית, ופרטים כמו המודל והמחיר עוד עשויים להשתנות.",[329,330,332],"h2",{"id":331},"מה-decisions-api-עושה","מה Decisions API עושה",[314,334,335],{},"Decisions API מקבל טקסט, תמונות או את שניהם, ומחזיר תשובות מוקלדות (typed): הסתברות, בחירה מתוך רשימה או ציון על סולם. לפי OpenAI, הוא עושה את זה בערך פי 10 מהר יותר מ־Responses API.",[314,337,338],{},"ההבדל מהותי. במקום לבקש מהמודל ״תחזיר JSON עם שם המחלקה״ ולבדוק שהוא באמת עשה את זה, אתם מקבלים תשובה שכבר במבנה הנכון, יחד עם מידת הביטחון של המודל בה. אין טקסט לפרק, ואין תשובה ״כמעט נכונה״.",[329,340,342],{"id":341},"שלושה-חלקים-בכל-בקשה","שלושה חלקים בכל בקשה",[314,344,345,346,350],{},"כל בקשה ל־",[347,348,349],"code",{},"POST \u002Fv1\u002Fdecisions"," בנויה משלושה חלקים:",[352,353,354,369,377],"ul",{},[355,356,357,364,365,368],"li",{},[358,359,360,363],"strong",{},[347,361,362],{},"model",":"," כרגע יש מודל אחד, ",[347,366,367],{},"gpt-6-luna",".",[355,370,371,376],{},[358,372,373,363],{},[347,374,375],{},"input"," הראיות שהמודל בודק. מחרוזת טקסט, או הודעות משתמש עם טקסט ותמונות.",[355,378,379,384,385,388,389,392,393,396],{},[358,380,381,363],{},[347,382,383],{},"questions"," מערך של שאלות. לכל שאלה יש ",[347,386,387],{},"type",", ",[347,390,391],{},"name"," ייחודי, ",[347,394,395],{},"instructions"," ושדות שתלויים בסוג השאלה.",[314,398,399,400,403,404,368],{},"התשובה היא מערך ",[347,401,402],{},"answers",", תשובה אחת לכל שאלה, עם אותו ",[347,405,391],{},[329,407,409],{"id":408},"שלושה-סוגי-שאלות","שלושה סוגי שאלות",[411,412,413,429],"table",{},[414,415,416],"thead",{},[417,418,419,423,426],"tr",{},[420,421,422],"th",{},"סוג",[420,424,425],{},"מתי משתמשים",[420,427,428],{},"מה חוזר",[430,431,432,449,470],"tbody",{},[417,433,434,440,443],{},[435,436,437],"td",{},[347,438,439],{},"predicate",[435,441,442],{},"האם תנאי מתקיים?",[435,444,445,448],{},[347,446,447],{},"probability"," בין 0 ל־1",[417,450,451,456,459],{},[435,452,453],{},[347,454,455],{},"choice",[435,457,458],{},"בחירה אחת מרשימה קבועה",[435,460,461,388,463,466,467],{},[347,462,455],{},[347,464,465],{},"probabilities"," לכל אפשרות ו־",[347,468,469],{},"confidence",[417,471,472,477,480],{},[435,473,474],{},[347,475,476],{},"score",[435,478,479],{},"דירוג על סולם מסודר",[435,481,482,388,484,486,487],{},[347,483,476],{},[347,485,465],{}," לכל רמה ו־",[347,488,469],{},[314,490,491,492,494,495,497,498,500],{},"לכל סוג יש מקום משלו. ",[347,493,439],{}," לשאלות של כן או לא, כמו ״האם יש נזק גלוי במוצר״. ",[347,496,455],{}," לניתוב, כמו ״לאיזו מחלקה הפנייה שייכת״. ",[347,499,476],{}," לחומרה או לאיכות, כשיש סדר בין הרמות.",[329,502,504],{"id":503},"דוגמה-ניתוב-פניות-לשירות-לקוחות","דוגמה: ניתוב פניות לשירות לקוחות",[314,506,507],{},"זו הדוגמה מהמדריך, ב־JavaScript. צריך את ה־SDK של OpenAI בגרסה 7.30.0 ומעלה:",[509,510,515],"pre",{"className":511,"code":512,"language":513,"meta":514,"style":514},"language-js shiki shiki-themes github-dark-contrast","import OpenAI from 'openai'\n\nconst client = new OpenAI()\nconst decision = await client.decisions.create({\n  model: 'gpt-6-luna',\n  input: 'I was charged twice for my order.',\n  questions: [\n    {\n      type: 'choice',\n      name: 'department',\n      instructions: 'Which department should handle this complaint?',\n      choices: [\n        { value: 'billing', description: 'Payments, invoices, and refunds.' },\n        { value: 'technical', description: 'Problems using the product.' },\n        { value: 'shipping', description: 'Delivery and tracking.' },\n        { value: 'other', description: 'Requests outside these categories.' },\n      ],\n    },\n  ],\n})\n\nconst answer = decision.answers[0]\nif (answer.type === 'refusal') {\n  console.log(`Refused: ${answer.name}`)\n} else if (answer.type === 'choice') {\n  console.log(`Department: ${answer.choice} (confidence: ${answer.confidence})`)\n}\n","js","",[347,516,517,537,543,566,588,600,611,616,621,631,641,651,656,674,688,703,718,723,729,735,740,745,764,782,810,831,863],{"__ignoreMap":514},[518,519,522,526,530,533],"span",{"class":520,"line":521},"line",1,[518,523,525],{"class":524},"snl16","import",[518,527,529],{"class":528},"s95oV"," OpenAI ",[518,531,532],{"class":524},"from",[518,534,536],{"class":535},"sU2Wk"," 'openai'\n",[518,538,540],{"class":520,"line":539},2,[518,541,542],{"emptyLinePlaceholder":296},"\n",[518,544,546,549,553,556,559,563],{"class":520,"line":545},3,[518,547,548],{"class":524},"const",[518,550,552],{"class":551},"sDLfK"," client",[518,554,555],{"class":524}," =",[518,557,558],{"class":524}," new",[518,560,562],{"class":561},"svObZ"," OpenAI",[518,564,565],{"class":528},"()\n",[518,567,569,571,574,576,579,582,585],{"class":520,"line":568},4,[518,570,548],{"class":524},[518,572,573],{"class":551}," decision",[518,575,555],{"class":524},[518,577,578],{"class":524}," await",[518,580,581],{"class":528}," client.decisions.",[518,583,584],{"class":561},"create",[518,586,587],{"class":528},"({\n",[518,589,591,594,597],{"class":520,"line":590},5,[518,592,593],{"class":528},"  model: ",[518,595,596],{"class":535},"'gpt-6-luna'",[518,598,599],{"class":528},",\n",[518,601,603,606,609],{"class":520,"line":602},6,[518,604,605],{"class":528},"  input: ",[518,607,608],{"class":535},"'I was charged twice for my order.'",[518,610,599],{"class":528},[518,612,613],{"class":520,"line":171},[518,614,615],{"class":528},"  questions: [\n",[518,617,618],{"class":520,"line":113},[518,619,620],{"class":528},"    {\n",[518,622,623,626,629],{"class":520,"line":10},[518,624,625],{"class":528},"      type: ",[518,627,628],{"class":535},"'choice'",[518,630,599],{"class":528},[518,632,633,636,639],{"class":520,"line":27},[518,634,635],{"class":528},"      name: ",[518,637,638],{"class":535},"'department'",[518,640,599],{"class":528},[518,642,643,646,649],{"class":520,"line":50},[518,644,645],{"class":528},"      instructions: ",[518,647,648],{"class":535},"'Which department should handle this complaint?'",[518,650,599],{"class":528},[518,652,653],{"class":520,"line":39},[518,654,655],{"class":528},"      choices: [\n",[518,657,659,662,665,668,671],{"class":520,"line":658},13,[518,660,661],{"class":528},"        { value: ",[518,663,664],{"class":535},"'billing'",[518,666,667],{"class":528},", description: ",[518,669,670],{"class":535},"'Payments, invoices, and refunds.'",[518,672,673],{"class":528}," },\n",[518,675,676,678,681,683,686],{"class":520,"line":101},[518,677,661],{"class":528},[518,679,680],{"class":535},"'technical'",[518,682,667],{"class":528},[518,684,685],{"class":535},"'Problems using the product.'",[518,687,673],{"class":528},[518,689,691,693,696,698,701],{"class":520,"line":690},15,[518,692,661],{"class":528},[518,694,695],{"class":535},"'shipping'",[518,697,667],{"class":528},[518,699,700],{"class":535},"'Delivery and tracking.'",[518,702,673],{"class":528},[518,704,706,708,711,713,716],{"class":520,"line":705},16,[518,707,661],{"class":528},[518,709,710],{"class":535},"'other'",[518,712,667],{"class":528},[518,714,715],{"class":535},"'Requests outside these categories.'",[518,717,673],{"class":528},[518,719,720],{"class":520,"line":135},[518,721,722],{"class":528},"      ],\n",[518,724,726],{"class":520,"line":725},18,[518,727,728],{"class":528},"    },\n",[518,730,732],{"class":520,"line":731},19,[518,733,734],{"class":528},"  ],\n",[518,736,737],{"class":520,"line":90},[518,738,739],{"class":528},"})\n",[518,741,743],{"class":520,"line":742},21,[518,744,542],{"emptyLinePlaceholder":296},[518,746,748,750,753,755,758,761],{"class":520,"line":747},22,[518,749,548],{"class":524},[518,751,752],{"class":551}," answer",[518,754,555],{"class":524},[518,756,757],{"class":528}," decision.answers[",[518,759,760],{"class":551},"0",[518,762,763],{"class":528},"]\n",[518,765,767,770,773,776,779],{"class":520,"line":766},23,[518,768,769],{"class":524},"if",[518,771,772],{"class":528}," (answer.type ",[518,774,775],{"class":524},"===",[518,777,778],{"class":535}," 'refusal'",[518,780,781],{"class":528},") {\n",[518,783,785,788,791,794,797,800,802,804,807],{"class":520,"line":784},24,[518,786,787],{"class":528},"  console.",[518,789,790],{"class":561},"log",[518,792,793],{"class":528},"(",[518,795,796],{"class":535},"`Refused: ${",[518,798,799],{"class":528},"answer",[518,801,368],{"class":535},[518,803,391],{"class":528},[518,805,806],{"class":535},"}`",[518,808,809],{"class":528},")\n",[518,811,813,816,819,822,824,826,829],{"class":520,"line":812},25,[518,814,815],{"class":528},"} ",[518,817,818],{"class":524},"else",[518,820,821],{"class":524}," if",[518,823,772],{"class":528},[518,825,775],{"class":524},[518,827,828],{"class":535}," 'choice'",[518,830,781],{"class":528},[518,832,834,836,838,840,843,845,847,849,852,854,856,858,861],{"class":520,"line":833},26,[518,835,787],{"class":528},[518,837,790],{"class":561},[518,839,793],{"class":528},[518,841,842],{"class":535},"`Department: ${",[518,844,799],{"class":528},[518,846,368],{"class":535},[518,848,455],{"class":528},[518,850,851],{"class":535},"} (confidence: ${",[518,853,799],{"class":528},[518,855,368],{"class":535},[518,857,469],{"class":528},[518,859,860],{"class":535},"})`",[518,862,809],{"class":528},[518,864,866],{"class":520,"line":865},27,[518,867,868],{"class":528},"}\n",[314,870,871],{},"והתשובה:",[509,873,877],{"className":874,"code":875,"language":876,"meta":514,"style":514},"language-json shiki shiki-themes github-dark-contrast","{\n  \"answers\": [\n    {\n      \"type\": \"choice\",\n      \"name\": \"department\",\n      \"choice\": \"billing\",\n      \"probabilities\": [\n        { \"value\": \"billing\", \"probability\": 0.95 },\n        { \"value\": \"technical\", \"probability\": 0.02 },\n        { \"value\": \"shipping\", \"probability\": 0.01 },\n        { \"value\": \"other\", \"probability\": 0.02 }\n      ],\n      \"confidence\": 0.93\n    }\n  ]\n}\n","json",[347,878,879,884,892,896,909,921,933,940,964,986,1008,1030,1034,1044,1049,1054],{"__ignoreMap":514},[518,880,881],{"class":520,"line":521},[518,882,883],{"class":528},"{\n",[518,885,886,889],{"class":520,"line":539},[518,887,888],{"class":551},"  \"answers\"",[518,890,891],{"class":528},": [\n",[518,893,894],{"class":520,"line":545},[518,895,620],{"class":528},[518,897,898,901,904,907],{"class":520,"line":568},[518,899,900],{"class":551},"      \"type\"",[518,902,903],{"class":528},": ",[518,905,906],{"class":535},"\"choice\"",[518,908,599],{"class":528},[518,910,911,914,916,919],{"class":520,"line":590},[518,912,913],{"class":551},"      \"name\"",[518,915,903],{"class":528},[518,917,918],{"class":535},"\"department\"",[518,920,599],{"class":528},[518,922,923,926,928,931],{"class":520,"line":602},[518,924,925],{"class":551},"      \"choice\"",[518,927,903],{"class":528},[518,929,930],{"class":535},"\"billing\"",[518,932,599],{"class":528},[518,934,935,938],{"class":520,"line":171},[518,936,937],{"class":551},"      \"probabilities\"",[518,939,891],{"class":528},[518,941,942,945,948,950,952,954,957,959,962],{"class":520,"line":113},[518,943,944],{"class":528},"        { ",[518,946,947],{"class":551},"\"value\"",[518,949,903],{"class":528},[518,951,930],{"class":535},[518,953,388],{"class":528},[518,955,956],{"class":551},"\"probability\"",[518,958,903],{"class":528},[518,960,961],{"class":551},"0.95",[518,963,673],{"class":528},[518,965,966,968,970,972,975,977,979,981,984],{"class":520,"line":10},[518,967,944],{"class":528},[518,969,947],{"class":551},[518,971,903],{"class":528},[518,973,974],{"class":535},"\"technical\"",[518,976,388],{"class":528},[518,978,956],{"class":551},[518,980,903],{"class":528},[518,982,983],{"class":551},"0.02",[518,985,673],{"class":528},[518,987,988,990,992,994,997,999,1001,1003,1006],{"class":520,"line":27},[518,989,944],{"class":528},[518,991,947],{"class":551},[518,993,903],{"class":528},[518,995,996],{"class":535},"\"shipping\"",[518,998,388],{"class":528},[518,1000,956],{"class":551},[518,1002,903],{"class":528},[518,1004,1005],{"class":551},"0.01",[518,1007,673],{"class":528},[518,1009,1010,1012,1014,1016,1019,1021,1023,1025,1027],{"class":520,"line":50},[518,1011,944],{"class":528},[518,1013,947],{"class":551},[518,1015,903],{"class":528},[518,1017,1018],{"class":535},"\"other\"",[518,1020,388],{"class":528},[518,1022,956],{"class":551},[518,1024,903],{"class":528},[518,1026,983],{"class":551},[518,1028,1029],{"class":528}," }\n",[518,1031,1032],{"class":520,"line":39},[518,1033,722],{"class":528},[518,1035,1036,1039,1041],{"class":520,"line":658},[518,1037,1038],{"class":551},"      \"confidence\"",[518,1040,903],{"class":528},[518,1042,1043],{"class":551},"0.93\n",[518,1045,1046],{"class":520,"line":101},[518,1047,1048],{"class":528},"    }\n",[518,1050,1051],{"class":520,"line":690},[518,1052,1053],{"class":528},"  ]\n",[518,1055,1056],{"class":520,"line":705},[518,1057,868],{"class":528},[314,1059,1060],{},"שימו לב לשני דברים בקוד:",[352,1062,1063,1082],{},[355,1064,1065,1071,1072,1074,1075,1078,1079,368],{},[358,1066,1067,1068,368],{},"בודקים קודם ",[347,1069,1070],{},"refusal"," המודל יכול לסרב לענות על שאלה, ואז התשובה היא מסוג ",[347,1073,1070],{}," ולא מהסוג ששאלתם. קוד שקורא ישר את ",[347,1076,1077],{},"answer.choice"," יקבל ",[347,1080,1081],{},"undefined",[355,1083,1084,1091],{},[358,1085,1086,1087,1090],{},"האפשרות ",[347,1088,1089],{},"other"," היא חלק מהעיצוב."," בלעדיה, פנייה שלא שייכת לאף מחלקה תיפול למחלקה הלא נכונה, ועוד עם ביטחון גבוה.",[329,1093,1095],{"id":1094},"דוגמה-זיהוי-נזק-בתמונה","דוגמה: זיהוי נזק בתמונה",[314,1097,1098,1099,1101],{},"בשאלת ",[347,1100,439],{}," המודל מחזיר הסתברות אחת. כאן הדוגמה ב־Python (SDK בגרסה 3.26.0 ומעלה):",[509,1103,1107],{"className":1104,"code":1105,"language":1106,"meta":514,"style":514},"language-python shiki shiki-themes github-dark-contrast","import base64\nfrom pathlib import Path\n\nfrom openai import OpenAI\n\nclient = OpenAI()\nimage_base64 = base64.b64encode(Path(\"product.png\").read_bytes()).decode(\"ascii\")\n\ndecision = client.decisions.create(\n    model=\"gpt-6-luna\",\n    input=[\n        {\n            \"role\": \"user\",\n            \"content\": [\n                {\"type\": \"input_text\", \"text\": \"Inspect the product in this photo.\"},\n                {\n                    \"type\": \"input_image\",\n                    \"image_url\": f\"data:image\u002Fpng;base64,{image_base64}\",\n                },\n            ],\n        }\n    ],\n    questions=[\n        {\n            \"type\": \"predicate\",\n            \"name\": \"visible_damage\",\n            \"instructions\": (\n                \"Does the product have visible damage, such as a crack, tear, or dent? \"\n                \"Ignore shadows and damage to the packaging.\"\n            ),\n        }\n    ],\n)\n\nanswer = decision.answers[0]\nif answer.type == \"refusal\":\n    print(f\"Refused: {answer.name}\")\nelif answer.type == \"predicate\":\n    print(f\"Visible damage probability: {answer.probability}\")\n","python",[347,1108,1109,1116,1128,1132,1144,1148,1159,1180,1184,1194,1207,1217,1222,1234,1241,1267,1272,1284,1311,1316,1321,1326,1331,1340,1344,1356,1368,1376,1381,1387,1392,1397,1402,1407,1412,1426,1443,1467,1482],{"__ignoreMap":514},[518,1110,1111,1113],{"class":520,"line":521},[518,1112,525],{"class":524},[518,1114,1115],{"class":528}," base64\n",[518,1117,1118,1120,1123,1125],{"class":520,"line":539},[518,1119,532],{"class":524},[518,1121,1122],{"class":528}," pathlib ",[518,1124,525],{"class":524},[518,1126,1127],{"class":528}," Path\n",[518,1129,1130],{"class":520,"line":545},[518,1131,542],{"emptyLinePlaceholder":296},[518,1133,1134,1136,1139,1141],{"class":520,"line":568},[518,1135,532],{"class":524},[518,1137,1138],{"class":528}," openai ",[518,1140,525],{"class":524},[518,1142,1143],{"class":528}," OpenAI\n",[518,1145,1146],{"class":520,"line":590},[518,1147,542],{"emptyLinePlaceholder":296},[518,1149,1150,1153,1156],{"class":520,"line":602},[518,1151,1152],{"class":528},"client ",[518,1154,1155],{"class":524},"=",[518,1157,1158],{"class":528}," OpenAI()\n",[518,1160,1161,1164,1166,1169,1172,1175,1178],{"class":520,"line":171},[518,1162,1163],{"class":528},"image_base64 ",[518,1165,1155],{"class":524},[518,1167,1168],{"class":528}," base64.b64encode(Path(",[518,1170,1171],{"class":535},"\"product.png\"",[518,1173,1174],{"class":528},").read_bytes()).decode(",[518,1176,1177],{"class":535},"\"ascii\"",[518,1179,809],{"class":528},[518,1181,1182],{"class":520,"line":113},[518,1183,542],{"emptyLinePlaceholder":296},[518,1185,1186,1189,1191],{"class":520,"line":10},[518,1187,1188],{"class":528},"decision ",[518,1190,1155],{"class":524},[518,1192,1193],{"class":528}," client.decisions.create(\n",[518,1195,1196,1200,1202,1205],{"class":520,"line":27},[518,1197,1199],{"class":1198},"s9osk","    model",[518,1201,1155],{"class":524},[518,1203,1204],{"class":535},"\"gpt-6-luna\"",[518,1206,599],{"class":528},[518,1208,1209,1212,1214],{"class":520,"line":50},[518,1210,1211],{"class":1198},"    input",[518,1213,1155],{"class":524},[518,1215,1216],{"class":528},"[\n",[518,1218,1219],{"class":520,"line":39},[518,1220,1221],{"class":528},"        {\n",[518,1223,1224,1227,1229,1232],{"class":520,"line":658},[518,1225,1226],{"class":535},"            \"role\"",[518,1228,903],{"class":528},[518,1230,1231],{"class":535},"\"user\"",[518,1233,599],{"class":528},[518,1235,1236,1239],{"class":520,"line":101},[518,1237,1238],{"class":535},"            \"content\"",[518,1240,891],{"class":528},[518,1242,1243,1246,1249,1251,1254,1256,1259,1261,1264],{"class":520,"line":690},[518,1244,1245],{"class":528},"                {",[518,1247,1248],{"class":535},"\"type\"",[518,1250,903],{"class":528},[518,1252,1253],{"class":535},"\"input_text\"",[518,1255,388],{"class":528},[518,1257,1258],{"class":535},"\"text\"",[518,1260,903],{"class":528},[518,1262,1263],{"class":535},"\"Inspect the product in this photo.\"",[518,1265,1266],{"class":528},"},\n",[518,1268,1269],{"class":520,"line":705},[518,1270,1271],{"class":528},"                {\n",[518,1273,1274,1277,1279,1282],{"class":520,"line":135},[518,1275,1276],{"class":535},"                    \"type\"",[518,1278,903],{"class":528},[518,1280,1281],{"class":535},"\"input_image\"",[518,1283,599],{"class":528},[518,1285,1286,1289,1291,1294,1297,1300,1303,1306,1309],{"class":520,"line":725},[518,1287,1288],{"class":535},"                    \"image_url\"",[518,1290,903],{"class":528},[518,1292,1293],{"class":524},"f",[518,1295,1296],{"class":535},"\"data:image\u002Fpng;base64,",[518,1298,1299],{"class":551},"{",[518,1301,1302],{"class":528},"image_base64",[518,1304,1305],{"class":551},"}",[518,1307,1308],{"class":535},"\"",[518,1310,599],{"class":528},[518,1312,1313],{"class":520,"line":731},[518,1314,1315],{"class":528},"                },\n",[518,1317,1318],{"class":520,"line":90},[518,1319,1320],{"class":528},"            ],\n",[518,1322,1323],{"class":520,"line":742},[518,1324,1325],{"class":528},"        }\n",[518,1327,1328],{"class":520,"line":747},[518,1329,1330],{"class":528},"    ],\n",[518,1332,1333,1336,1338],{"class":520,"line":766},[518,1334,1335],{"class":1198},"    questions",[518,1337,1155],{"class":524},[518,1339,1216],{"class":528},[518,1341,1342],{"class":520,"line":784},[518,1343,1221],{"class":528},[518,1345,1346,1349,1351,1354],{"class":520,"line":812},[518,1347,1348],{"class":535},"            \"type\"",[518,1350,903],{"class":528},[518,1352,1353],{"class":535},"\"predicate\"",[518,1355,599],{"class":528},[518,1357,1358,1361,1363,1366],{"class":520,"line":833},[518,1359,1360],{"class":535},"            \"name\"",[518,1362,903],{"class":528},[518,1364,1365],{"class":535},"\"visible_damage\"",[518,1367,599],{"class":528},[518,1369,1370,1373],{"class":520,"line":865},[518,1371,1372],{"class":535},"            \"instructions\"",[518,1374,1375],{"class":528},": (\n",[518,1377,1378],{"class":520,"line":75},[518,1379,1380],{"class":535},"                \"Does the product have visible damage, such as a crack, tear, or dent? \"\n",[518,1382,1384],{"class":520,"line":1383},29,[518,1385,1386],{"class":535},"                \"Ignore shadows and damage to the packaging.\"\n",[518,1388,1389],{"class":520,"line":124},[518,1390,1391],{"class":528},"            ),\n",[518,1393,1395],{"class":520,"line":1394},31,[518,1396,1325],{"class":528},[518,1398,1400],{"class":520,"line":1399},32,[518,1401,1330],{"class":528},[518,1403,1405],{"class":520,"line":1404},33,[518,1406,809],{"class":528},[518,1408,1410],{"class":520,"line":1409},34,[518,1411,542],{"emptyLinePlaceholder":296},[518,1413,1415,1418,1420,1422,1424],{"class":520,"line":1414},35,[518,1416,1417],{"class":528},"answer ",[518,1419,1155],{"class":524},[518,1421,757],{"class":528},[518,1423,760],{"class":551},[518,1425,763],{"class":528},[518,1427,1429,1431,1434,1437,1440],{"class":520,"line":1428},36,[518,1430,769],{"class":524},[518,1432,1433],{"class":528}," answer.type ",[518,1435,1436],{"class":524},"==",[518,1438,1439],{"class":535}," \"refusal\"",[518,1441,1442],{"class":528},":\n",[518,1444,1446,1449,1451,1453,1456,1458,1461,1463,1465],{"class":520,"line":1445},37,[518,1447,1448],{"class":551},"    print",[518,1450,793],{"class":528},[518,1452,1293],{"class":524},[518,1454,1455],{"class":535},"\"Refused: ",[518,1457,1299],{"class":551},[518,1459,1460],{"class":528},"answer.name",[518,1462,1305],{"class":551},[518,1464,1308],{"class":535},[518,1466,809],{"class":528},[518,1468,1470,1473,1475,1477,1480],{"class":520,"line":1469},38,[518,1471,1472],{"class":524},"elif",[518,1474,1433],{"class":528},[518,1476,1436],{"class":524},[518,1478,1479],{"class":535}," \"predicate\"",[518,1481,1442],{"class":528},[518,1483,1485,1487,1489,1491,1494,1496,1499,1501,1503],{"class":520,"line":1484},39,[518,1486,1448],{"class":551},[518,1488,793],{"class":528},[518,1490,1293],{"class":524},[518,1492,1493],{"class":535},"\"Visible damage probability: ",[518,1495,1299],{"class":551},[518,1497,1498],{"class":528},"answer.probability",[518,1500,1305],{"class":551},[518,1502,1308],{"class":535},[518,1504,809],{"class":528},[314,1506,1507,1508,1511,1512,1515],{},"התשובה תהיה למשל ",[347,1509,1510],{},"\"probability\": 0.92",". שימו לב גם להוראה ״התעלם מצללים ומנזק לאריזה״: הוראה שאומרת מה ",[358,1513,1514],{},"לא"," נחשב היא מה שמונע הרבה התראות שווא.",[1517,1518,1520],"note",{"title":1519},"תמונות רק כ־base64",[314,1521,1522],{},"את התמונה שולחים כ־data URL בתוך הבקשה. כתובת HTTP של תמונה או מזהה של קובץ שהועלה ל־OpenAI לא נתמכים כרגע.",[329,1524,1526],{"id":1525},"דוגמה-דירוג-חומרה-של-תקלה","דוגמה: דירוג חומרה של תקלה",[314,1528,1098,1529,1531],{},[347,1530,476],{}," מגדירים רמות לפי הסדר, והמודל מחזיר ממוצע משוקלל של מספרי הרמות:",[509,1533,1535],{"className":511,"code":1534,"language":513,"meta":514,"style":514},"const decision = await client.decisions.create({\n  model: 'gpt-6-luna',\n  input: 'Export fails in Safari but works in Chrome.',\n  questions: [\n    {\n      type: 'score',\n      name: 'severity',\n      instructions: 'How severe is this issue?',\n      levels: [\n        { label: 'Cosmetic', description: 'Appearance only; no lost functionality.' },\n        { label: 'Workaround available', description: 'A task fails, but another way works.' },\n        { label: 'Fully blocked', description: 'A task fails with no workaround.' },\n      ],\n    },\n  ],\n})\n",[347,1536,1537,1553,1561,1570,1574,1578,1587,1596,1605,1610,1625,1639,1653,1657,1661,1665],{"__ignoreMap":514},[518,1538,1539,1541,1543,1545,1547,1549,1551],{"class":520,"line":521},[518,1540,548],{"class":524},[518,1542,573],{"class":551},[518,1544,555],{"class":524},[518,1546,578],{"class":524},[518,1548,581],{"class":528},[518,1550,584],{"class":561},[518,1552,587],{"class":528},[518,1554,1555,1557,1559],{"class":520,"line":539},[518,1556,593],{"class":528},[518,1558,596],{"class":535},[518,1560,599],{"class":528},[518,1562,1563,1565,1568],{"class":520,"line":545},[518,1564,605],{"class":528},[518,1566,1567],{"class":535},"'Export fails in Safari but works in Chrome.'",[518,1569,599],{"class":528},[518,1571,1572],{"class":520,"line":568},[518,1573,615],{"class":528},[518,1575,1576],{"class":520,"line":590},[518,1577,620],{"class":528},[518,1579,1580,1582,1585],{"class":520,"line":602},[518,1581,625],{"class":528},[518,1583,1584],{"class":535},"'score'",[518,1586,599],{"class":528},[518,1588,1589,1591,1594],{"class":520,"line":171},[518,1590,635],{"class":528},[518,1592,1593],{"class":535},"'severity'",[518,1595,599],{"class":528},[518,1597,1598,1600,1603],{"class":520,"line":113},[518,1599,645],{"class":528},[518,1601,1602],{"class":535},"'How severe is this issue?'",[518,1604,599],{"class":528},[518,1606,1607],{"class":520,"line":10},[518,1608,1609],{"class":528},"      levels: [\n",[518,1611,1612,1615,1618,1620,1623],{"class":520,"line":27},[518,1613,1614],{"class":528},"        { label: ",[518,1616,1617],{"class":535},"'Cosmetic'",[518,1619,667],{"class":528},[518,1621,1622],{"class":535},"'Appearance only; no lost functionality.'",[518,1624,673],{"class":528},[518,1626,1627,1629,1632,1634,1637],{"class":520,"line":50},[518,1628,1614],{"class":528},[518,1630,1631],{"class":535},"'Workaround available'",[518,1633,667],{"class":528},[518,1635,1636],{"class":535},"'A task fails, but another way works.'",[518,1638,673],{"class":528},[518,1640,1641,1643,1646,1648,1651],{"class":520,"line":39},[518,1642,1614],{"class":528},[518,1644,1645],{"class":535},"'Fully blocked'",[518,1647,667],{"class":528},[518,1649,1650],{"class":535},"'A task fails with no workaround.'",[518,1652,673],{"class":528},[518,1654,1655],{"class":520,"line":658},[518,1656,722],{"class":528},[518,1658,1659],{"class":520,"line":101},[518,1660,728],{"class":528},[518,1662,1663],{"class":520,"line":690},[518,1664,734],{"class":528},[518,1666,1667],{"class":520,"line":705},[518,1668,739],{"class":528},[314,1670,1671,1672,1675],{},"התשובה במדריך היא ",[347,1673,1674],{},"score: 1.1",", עם הסתברות 0.1 לרמה 0, 0.7 לרמה 1 ו־0.2 לרמה 2, וביטחון של 0.55. הציון לא חייב להיות מספר שלם: 1.1 אומר ״יש דרך עוקפת, עם נטייה קלה לחסום״. הביטחון הנמוך יחסית הוא סימן לבדוק את המקרה ידנית.",[329,1677,1679],{"id":1678},"איך-קובעים-ספים","איך קובעים ספים",[314,1681,1682],{},"המודל מחזיר מספרים, אבל ההחלטה מה עושים איתם היא שלכם. האם 0.92 מספיק כדי לשלוח תמונה לבדיקה ידנית? זה תלוי במחיר של כל טעות:",[352,1684,1685,1691],{},[355,1686,1687,1690],{},[358,1688,1689],{},"התראת שווא"," (המודל אומר ״יש נזק״ וטעה) עולה זמן של בודק.",[355,1692,1693,1696],{},[358,1694,1695],{},"פספוס"," (המודל אומר ״אין נזק״ וטעה) עולה לקוח שקיבל מוצר שבור.",[314,1698,1699],{},"ההמלצה של OpenAI: קחו דוגמאות אמיתיות מהמערכת שלכם עם תשובה ידועה, הריצו אותן, ובחרו סף לפי האיזון בין שני סוגי הטעויות. סף שנבחר בלי נתונים הוא ניחוש.",[329,1701,1703],{"id":1702},"כמה-שאלות-בבקשה-אחת","כמה שאלות בבקשה אחת",[314,1705,1706],{},"אפשר לשלוח כמה שאלות על אותו קלט באותה בקשה. למשל, לשאול על אותה תמונה גם ״האם יש נזק״ וגם ״לאיזו קטגוריה המוצר שייך״. זה חוסך זמן ועלות.",[314,1708,1709,1710,1713,1714,1717],{},"הכלל: שאלות ",[358,1711,1712],{},"בלתי תלויות"," באותה בקשה, שאלות ",[358,1715,1716],{},"תלויות"," בבקשות נפרדות. אם השאלה השנייה רלוונטית רק כשהתשובה לראשונה היא ״כן״, שלחו קודם את הראשונה, ורק אחר כך, לפי התשובה, את השנייה. אל תנסו לכתוב את התנאי בתוך ההוראות.",[314,1719,1720],{},"עוד כמה כללים לניסוח:",[352,1722,1723,1729,1735],{},[355,1724,1725,1728],{},[358,1726,1727],{},"נסחו לפי מה שאפשר לראות."," ״יש סדק, קרע או שקע״ עדיף על ״המוצר פגום״.",[355,1730,1731,1734],{},[358,1732,1733],{},"הפרידו היטב בין האפשרויות."," שתי מחלקות עם תיאור דומה ייתנו הסתברויות קרובות וביטחון נמוך.",[355,1736,1737,1743],{},[358,1738,1739,1740,1742],{},"ברמות של ",[347,1741,476],{},","," ההבדל בין שתי רמות סמוכות צריך להיות ברור.",[329,1745,1747],{"id":1746},"מחיר-והגבלות","מחיר והגבלות",[352,1749,1750,1756,1765,1771],{},[355,1751,1752,1755],{},[358,1753,1754],{},"מחיר:"," 0.10 דולר למיליון טוקנים של קלט. אין חיוב על טוקני פלט, וגם לא על קריאה מהמטמון או כתיבה אליו.",[355,1757,1758,1761,1762,1764],{},[358,1759,1760],{},"מודל:"," רק ",[347,1763,367],{},", בבטא ציבורית.",[355,1766,1767,1770],{},[358,1768,1769],{},"גרסאות SDK:"," JavaScript 7.30.0, Python 3.26.0, Go 3.73.0, Java 4.78.0, Ruby 0.101.0 ומעלה.",[355,1772,1773,1776],{},[358,1774,1775],{},"פרטיות:"," תמיכה ב־Zero Data Retention וב־HIPAA ללקוחות מתאימים, ושמירת מידע בארה״ב או באירופה.",[329,1778,1780],{"id":1779},"מתי-לא-להשתמש-בdecisions","מתי לא להשתמש ב־Decisions",[314,1782,1783],{},"Decisions הוא כלי צר, וזה היתרון שלו. הוא לא מתאים כשצריך:",[352,1785,1786,1792,1798],{},[355,1787,1788,1791],{},[358,1789,1790],{},"יצירת טקסט:"," תשובה ללקוח, סיכום או הסבר. בשביל זה יש Responses API.",[355,1793,1794,1797],{},[358,1795,1796],{},"חילוץ ערכים:"," שם, תאריך או סכום מתוך מסמך. בשביל זה יש Structured Outputs.",[355,1799,1800,1803,1804,368],{},[358,1801,1802],{},"קריאה לכלים:"," כשהמודל צריך להפעיל פונקציה עם פרמטרים, משתמשים ב־",[321,1805,1806],{"href":290},"function calling",[314,1808,1809],{},"החלוקה פשוטה: אם התשובה היא אחת מכמה אפשרויות ידועות מראש, או מספר, Decisions מתאים. אם התשובה היא טקסט, הוא לא.",[329,1811,1812],{"id":1812},"בקצרה",[1814,1815],"process",{":steps":1816},"[{\"title\":\"שואלים, לא מבקשים טקסט\",\"text\":\"predicate לשאלות של כן או לא, choice לניתוב, score לדירוג.\"},{\"title\":\"בודקים refusal\",\"text\":\"לפני שקוראים את התשובה, מוודאים שהמודל לא סירב.\"},{\"title\":\"קובעים ספים מנתונים\",\"text\":\"דוגמאות אמיתיות, ואיזון בין התראת שווא לפספוס.\"},{\"title\":\"מאחדים רק שאלות בלתי תלויות\",\"text\":\"שאלה שתלויה בתשובה קודמת נשלחת בבקשה נפרדת.\"}]",[1517,1818,1820],{"title":1819},"מקור",[314,1821,1822,1823,1827],{},"הדוגמאות והנתונים לקוחים מ",[321,1824,1826],{"href":323,"rel":1825},[325],"המדריך של Decisions API"," בתיעוד של OpenAI. ההסברים וההמלצות הם שלי.",[1829,1830,1831],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}",{"title":514,"searchDepth":539,"depth":539,"links":1833},[1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844],{"id":331,"depth":539,"text":332},{"id":341,"depth":539,"text":342},{"id":408,"depth":539,"text":409},{"id":503,"depth":539,"text":504},{"id":1094,"depth":539,"text":1095},{"id":1525,"depth":539,"text":1526},{"id":1678,"depth":539,"text":1679},{"id":1702,"depth":539,"text":1703},{"id":1746,"depth":539,"text":1747},{"id":1779,"depth":539,"text":1780},{"id":1812,"depth":539,"text":1812},"md",{},"\u002Fimages\u002Fposts\u002Fopenai-decisions-api-classification.png",{"title":36,"description":37},{"loc":35},"ai\u002Fopenai-decisions-api-classification",[16,32,43,44,45],null,"TZiKC_HRzPc9Qh7hgy27X70_0NLlmK9qCRJiPdYhiIg",1791365289273]