- Published on
פיתוח סוכנים של Anthropic - פשטות גוברת על מורכבות
הגדרת סוכנים
מושג הסוכנים המלאכותיים מגוון. יש הרואים בהם 'מנהלים אישיים' המסוגלים לחשוב באופן עצמאי, לקבל החלטות ולבצע משימות מורכבות. אחרים תופסים אותם כ'עובדים צייתנים' המבצעים תהליכים מתוכננים מראש. Anthropic מכנה את שניהם 'מערכות חכמות' ומבדילה בין זרימות עבודה לסוכנים:
- זרימת עבודה: מערכת המארגנת מודלים שפה גדולים (LLM) וכלים באמצעות נתיב קוד מוגדר.
- סוכן: מערכת שבה LLM מנחה באופן דינמי את התהליך ואת השימוש בכלים, ושולטת באופן עצמאי בביצוע המשימה.
מתי להשתמש בסוכנים
Anthropic ממליצה על עקרון 'פשוט ככל האפשר' בפיתוח יישומי AI. לא כל תרחיש דורש מערכת חכמה מורכבת. מערכות חכמות חזקות, אך עלולות להאט את התגובה ולהגדיל את העלויות. על המפתחים לאזן בין פונקציונליות ויעילות.
- זרימות עבודה: מתאימות למשימות ברורות הדורשות צפיות ועקביות.
- סוכנים: מתאימים יותר לתרחישים גדולים הדורשים גמישות וקבלת החלטות מונעת מודל.
במקרים רבים, שימוש בבקשות טובות בשילוב עם אחזור ודוגמאות הקשר, מספיק לשאול ישירות מודל גדול.
שימוש במסגרות
קיימות מסגרות רבות המסייעות למפתחים לבנות סוכני AI, לדוגמה:
- LangGraph של LangChain
- מסגרת סוכני AI של אמזון Bedrock
- כלי בניית זרימות עבודה של מודל גדול בשיטת גרירה ושחרור Rivet
- כלי GUI לבנייה ובדיקה של זרימות עבודה מורכבות Vellum
מסגרות אלו מפשטות את תהליך הפיתוח, אך גם מוסיפות שכבות הפשטה לקוד, מה שהופך את הלוגיקה הבסיסית לפחות שקופה, מגדיל את קשיי האיתור, ועלול לגרום לפתרונות מורכבים מדי בתרחישים פשוטים.
Anthropic ממליצה למפתחים להתחיל עם API ישיר של מודל גדול. ניתן ליישם דפוסים רבים עם מספר שורות קוד. אם בוחרים להשתמש במסגרת, יש להבין היטב את העקרונות הבסיסיים שלה. חוסר הבנה של המנגנונים הבסיסיים של המסגרת הוא גורם עיקרי לבעיות פיתוח.
ה-cookbook של Anthropic מספק דוגמאות קונקרטיות.
אבני בניין, זרימות עבודה וסוכנים
אבן בניין בסיסית: LLM משופר: אבן הבניין הבסיסית של מערכות חכמות היא LLM משופר, בעל יכולות אחזור וזיכרון. מודלים של Anthropic יכולים להשתמש ביכולות אלה באופן פעיל, לדוגמה, ליצור שאילתות חיפוש, לבחור כלים ולהחליט איזה מידע לשמור.
בעת הרחבת הפונקציונליות, יש להתמקד ב:
- התאמת פונקציות לתרחיש היישום הספציפי.
- הבטחת ממשק פשוט ומתועד היטב למודל.
פרוטוקול ההקשר של המודל שפורסם לאחרונה על ידי Anthropic, מפשט את השילוב של מודלי AI עם מערכות אקולוגיות של כלי צד שלישי.
זרימת עבודה: שרשרת בקשות שרשרת בקשות מפרקת משימה מורכבת למספר שלבים, כאשר כל שלב קורא למודל גדול פעם אחת, והשלבים הבאים מעובדים על סמך התוצאה של השלב הקודם. מפתחים יכולים להוסיף נקודות ביקורת בשלבים הביניים כדי להבטיח שהתהליך יתקדם כמתוכנן.
שרשרת הבקשות מתאימה לתרחישים בהם ניתן לפרק משימות מורכבות באופן ברור לסדרה של משימות משנה קבועות. כל מודל מתמקד בביצוע משימה פשוטה, ועל אף שזמן התגובה הכללי עשוי להיות מעט ארוך יותר, הדיוק משתפר באופן משמעותי.
דוגמאות יישום טיפוסיות:
- יצירת נוסח שיווקי, ואז תרגומו לשפות אחרות.
- כתיבת טיוטת מסמך וביצוע בדיקת תאימות, ולאחר מכן כתיבת מסמך מלא על סמך הטיוטה.
זרימת עבודה: ניתוב חכם טכנולוגיית הניתוב קובעת את סוג משימת הקלט ומקצה אותה למודול המתאים. עיצוב זה מאפשר לכל מודול להיות מותאם למשימה ספציפית, ומונע הפרעות בין סוגי משימות שונים. ניתוב חכם מתאים לתרחישים בהם למשימות יש מאפייני סיווג ברורים. מערכת AI יכולה לזהות במדויק את סוג המשימה ולבצע ניתוב באמצעות מודל שפה גדול או אלגוריתמים מסורתיים.
דוגמאות יישום טיפוסיות:
- במערכת שירות לקוחות, הכוונה של פניות כלליות, בקשות החזר כספי ותמיכה טכנית לתהליכים המתאימים.
- הקצאת שאלות פשוטות ונפוצות למודל קטן יותר, והקצאת שאלות קשות ונדירות למודל חזק יותר, על מנת לייעל את העלות והמהירות.
זרימת עבודה: מקבילית מודלים שפה גדולים יכולים לעבד משימות בו-זמנית ולאגד פלטים באופן תכנותי. המאפיינים של זרימת עבודה מקבילית:
- פילוח משימות: פירוק משימה למשימות משנה הניתנות להפעלה במקביל, ואיחוד התוצאות בסוף.
- מנגנון הצבעה: ביצוע אותה משימה מספר פעמים, ובחירת התוצאה הטובה ביותר או שילוב מספר תשובות.
שיטה מקבילית יעילה מאוד כאשר ניתן לבצע משימות משנה במקביל כדי להגביר את המהירות, או כאשר יש צורך לנסות זוויות שונות כדי להשיג תוצאות בטוחות יותר. עבור משימות מורכבות, עדיף להתרכז בכל קריאה בטיפול בהיבט מסוים, כדי להשיג תוצאות טובות יותר.
דוגמאות יישום טיפוסיות:
- פילוח משימות:
- הגנה על אבטחה: מודל אחד מטפל בבקשת משתמש, ומודל אחר מבצע ביקורת תוכן.
- הערכת ביצועים: מודלים שונים מעריכים מדדי ביצועי מערכת.
- מנגנון הצבעה:
- בדיקת אבטחת קוד: מודלים רבים לגילוי, מגלים יחד פרצות בקוד.
- ביקורת תוכן: מודלים רבים מעריכים את בטיחות התוכן מזוויות שונות.
זרימת עבודה: מנהיג-מבצע מודל שפה גדול מרכזי מפרק את המשימה באופן דינמי, מקצה אותה למודלי מבצע, ומסכם את התוצאות.
זרימת עבודה זו מתאימה למשימות מורכבות שקשה לקבוע את השלבים הספציפיים שלהן מראש. פירוק המשימה אינו קבוע, אלא נקבע באופן דינמי על ידי מערכת ה-AI בהתאם לנסיבות.
דוגמאות יישום טיפוסיות:
- יישומי תכנות הדורשים שינויים מורכבים במספר קבצים.
- משימות חיפוש הדורשות איסוף וניתוח מידע רלוונטי ממקורות רבים.
זרימת עבודה: הערכה-אופטימיזציה קריאה של LLM יוצרת תגובה, וקריאה אחרת מספקת הערכה ומשוב, ויוצרת לולאה.
זרימת עבודה זו יעילה במיוחד כאשר ישנם קריטריוני הערכה ברורים, וניתן להשיג ערך משמעותי באמצעות עידון איטרטיבי. LLM יכול לספק משוב, בדומה לתהליך העריכה החוזרת של סופר אנושי.
דוגמאות יישום טיפוסיות:
- תרגום ספרותי: מודל הערכה מגלה הבדלי שפה שהתרגום החמיץ ומספק הצעות לשינויים.
- חיפוש מורכב: מודל הערכה קובע אם יש צורך להמשיך לחפש לעומק.
סוכנים
סוכנים מופיעים עם התבגרות LLM ביכולות מפתח כמו הבנת קלט מורכב, תכנון היגיון, שימוש בכלים והתאוששות משגיאות.
עבודת הסוכן מתחילה בפקודה או דיון אינטראקטיבי של משתמש אנושי. לאחר שהמשימה ברורה, הסוכן מתכנן ופועל באופן עצמאי, ועשוי להזדקק למידע נוסף או לבקש מאדם לבצע החלטה.
בכל שלב בתהליך הביצוע, קבלת "מצב אמיתי" מהסביבה היא חיונית. הסוכן יכול להשהות בנקודות ביקורת או כאשר הוא נתקל בחסימה לקבלת משוב אנושי. המשימה מסתיימת בדרך כלל לאחר השלמתה, אך היא כוללת בדרך כלל גם תנאי עצירה.
סוכנים יכולים להתמודד עם משימות מורכבות, אך היישום שלהם פשוט בדרך כלל, ולרוב מדובר רק במודל שפה גדול המשתמש בכלים בהתאם למשוב מהסביבה בלולאה. לכן, עיצוב ערכת כלים והתיעוד שלה באופן ברור ומוקפד הוא חיוני.
סוכנים מתאימים לשאלות פתוחות, שבהן קשה לחזות את מספר הצעדים הנדרש ואי אפשר לקודד באופן קשיח נתיב קבוע. האוטונומיה של הסוכן הופכת אותו לבחירה אידיאלית להרחבת משימות בסביבה מהימנה. האוטונומיה של הסוכן פירושה עלות גבוהה יותר, ועלול להיות סיכון להצטברות שגיאות. מומלץ לבצע בדיקות נרחבות בסביבת ארגז חול ולהגדיר אמצעי הגנה מתאימים.
דוגמאות יישום של סוכנים:
- סוכן קוד לפתרון משימות SWE-bench הכוללות עריכת מספר קבצים על סמך תיאור משימה.
- הפונקציה "שימוש במחשב" של Anthropic, שבה קלוד משתמש במחשב כדי לבצע משימות.
שילוב והתאמה אישית
אבני הבניין הללו אינן מחייבות, ומפתחים יכולים לעצב ולשלב אותן בהתאם למקרה השימוש. המפתח להצלחה הוא למדוד ביצועים ולבצע שיפורים איטרטיביים. יש לשקול להוסיף מורכבות רק כאשר פתרונות פשוטים יותר אינם ניתנים להשגה. ההצלחה בתחום ה-LLM אינה טמונה בבניית המערכת המורכבת ביותר, אלא בבניית המערכת המתאימה לצרכים. התחילו עם בקשות פשוטות, בצעו אופטימיזציה שלהן באמצעות הערכה מקיפה, והוסיפו מערכת סוכנים מרובת שלבים רק כאשר פתרונות פשוטים יותר אינם ניתנים להשגה.
בעת פריסת סוכנים, יש להקפיד על העקרונות הבאים:
- שמירה על פשטות עיצוב הסוכן.
- מתן עדיפות לשקיפות הסוכן, והצגה ברורה של כל שלב מתוכנן.
- בנייה קפדנית של ממשק סוכן-מחשב (ACI) באמצעות תיעוד ובדיקות מקיפות של הכלים.