AICODEAgentic Programming · 67723 · 2026-7

Week 4 · video 5 of 7 · transcript

Crafting an API Request

תרגום שנעשה בעזרת בינה מלאכותית.AI translation, not reviewed by a person.

0:01

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

0:21

לפני שנשלח משהו, מילה על המנגנון. בקשת HTTP היא הודעה מלקוח לשרת, שממוענת לכתובת URL. היא נושאת מתודה, כמו GET כדי להביא משהו או POST כדי לשלוח משהו, כמה headers שמתארים את ההודעה, ובדרך כלל גם גוף. הגוף הוא המקום שבו נמצא התוכן. כמעט בכל API ברשת הוא JSON, פורמט טקסט פשוט של שדות עם שמות בתוך סוגריים מסולסלים, שקל לתוכניות לכתוב ולקרוא.

0:51

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

1:04

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

1:34

curl שולח בקשות HTTP מהטרמינל ומדפיס את התשובה. הוא זמין ב-Linux, ב-macOS וב-Windows. כאן אנחנו משתמשים בו כדי לשלוח את התוכן של קובץ JSON ל-Ollama. הבקשה היא POST לנקודת הקצה של הצ'אט בשרת המקומי. הגוף שלה נוקב בשם המודל ומספק מערך הודעות, עם תפקיד ותוכן לכל הודעה. הבקשה הראשונה הזאת מכילה שאלה אחת של המשתמש. stream הוא false, ולכן התשובה חוזרת כאובייקט JSON אחד.

2:06

התשובה מכילה הודעת assistant שהתוכן שלה הוא Paris. היא כוללת גם את שם המודל ושדות שמתארים את סיום היצירה, שנחזור אליהם לקראת הסוף.

2:17

הבקשה הראשונה שלנו מבקשת את בירת צרפת במילה אחת. התשובה היא Paris, כצפוי. זכרו ששאלה ותשובה כאחת זמינות לתוכנה שביצעה את הקריאה הזאת.

2:30

בבקשה השנייה נשלח רק "And of Italy?". התשובה השמורה מדברת על יין איטלקי. השאלה הקודמת על בירות לא נמצאת בבקשה הזאת, ולכן המודל צריך לפרש את הטקסט החדש בלעדיה.

2:43

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

2:59

בואו נבנה את ההיסטוריה הזאת במפורש. במערך ההודעות הראשון יש איבר אחד: שאלת המשתמש. השרת מחזיר את תשובת ה-assistant, Paris.

3:09

הקריאה השנייה שולחת שלוש הודעות: השאלה המקורית, תשובת ה-assistant, והשאלה החדשה על איטליה. התשובה הקודמת היא עכשיו חלק מהקלט. עם ההקשר הזה, ההרצה הזאת עונה Rome.

3:23

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

3:40

אותו מבנה בסיסי מופיע גם ב-API בענן. משמאל נמצאת בקשת Ollama המקומית שלנו, עם שם מודל ורשימת הודעות שמכילות תפקידים ותוכן.

3:51

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

4:18

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

4:34

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

4:53

הזמינות, שמות השדות והברירות מחדל תלויים ב-API ובמודל. Ollama חושף את הבקרות האלה דרך ה-options שלו, בעוד שמודל בענן עשוי לתמוך רק בחלק מהן. גם עם seed, אל תניחו תוצאות זהות על חומרה שונה או על גרסאות הגשה שונות.

5:11

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

5:42

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

5:57

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

6:11

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

6:35

נתראה בסרטון הבא.

6:36 of video · 813 words · 22 slides← Back to the video