Skip to content

Latest commit

 

History

History
168 lines (94 loc) · 12.8 KB

File metadata and controls

168 lines (94 loc) · 12.8 KB

Open Source Models

مقدمة

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

השיעור יכסה את התחומים הבאים:

  • הבנה מהו סוכן בינה מלאכותית - מה בדיוק זה סוכן בינה מלאכותית?
  • חקירת ארבע מסגרות סוכן שונות - מה מייחד אותן?
  • יישום סוכני בינה מלאכותית שונים במקרים שונים - מתי צריך להשתמש בסוכני בינה מלאכותית?

מטרות הלמידה

לאחר שלקחת את השיעור הזה, תוכל/י:

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

מה הם סוכני בינה מלאכותית?

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

סוכני בינה מלאכותית מאפשרים למודלים שפתיים גדולים (LLMs) לבצע משימות על ידי מתן גישה למצב ולכלים.

Agent Model

בוא נגדיר את המונחים:

מודלים שפתיים גדולים - אלו המודלים שמוזכרים לאורך הקורס כגון GPT-3.5, GPT-4, Llama-2 ועוד.

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

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

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

סוכני LangChain

סוכני LangChain הם מימוש של ההגדרות שנתנו לעיל.

כדי לנהל את המצב, משתמשים בפונקציה מובנית בשם AgentExecutor. פונקציה זו מקבלת את ה-agent המוגדר ואת ה-tools הזמינים לו.

Agent Executor גם מאחסן את היסטוריית השיחה כדי לספק את ההקשר של השיחה.

Langchain Agents

LangChain מציע קטלוג של כלים שניתן לייבא ליישום שלך ואליהם ה-LLM יכול לקבל גישה. כלים אלו נוצרים על ידי הקהילה ועל ידי צוות LangChain.

אתה יכול להגדיר את הכלים האלו ולהעביר אותם ל-Agent Executor.

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

AutoGen

מסגרת סוכן הבינה המלאכותית הבאה נדבר עליה היא AutoGen. המוקד העיקרי של AutoGen הוא בשיחות. הסוכנים הם גם שיחניים וגם ניתנים להתאמה אישית.

שיחניים - LLMs יכולים להתחיל ולהמשיך שיחה עם LLM אחר כדי להשלים משימה. זה נעשה על ידי יצירת AssistantAgents ומתן הודעת מערכת ספציפית להם.

autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, )

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

user_proxy = UserProxyAgent(name="user_proxy")

מצב וכלים

כדי לשנות ולנהל את המצב, סוכן עוזר (assistant) מייצר קוד Python כדי להשלים את המשימה.

הנה דוגמה לתהליך:

AutoGen

LLM מוגדר עם הודעת מערכת

system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done."

הודעת המערכת הזו מכוונת את ה-LLM הספציפי אילו פונקציות רלוונטיות למשימה שלו. זכור, עם AutoGen ניתן להגדיר מספר AssistantAgents עם הודעות מערכת שונות.

השיחה מתחילה על ידי המשתמש

user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", )

הודעה זו מ-user_proxy (אדם) היא מה שתתחיל את תהליך הסוכן לחקור את הפונקציות שעליו לבצע.

הפונקציה מבוצעת

chatbot (to user_proxy):

***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** --------------------------------------------------------------------------------

>>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR ****************************************************************

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

ניתן למצוא רשימת דוגמאות קוד AutoGen לחקירה נוספת כיצד להתחיל בבנייה.

Taskweaver

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

מצב וכלים

כדי לנהל את מצב השיחה, TaskWeaver משתמשת במושג Planner. ה-Planner הוא LLM שלוקח את הבקשה מהמשתמשים וממפה את המשימות שיש להשלים למימוש הבקשה.

כדי להשלים את המשימות, ה-Planner נחשף לאוסף כלים הנקראים Plugins. אלה יכולים להיות מחלקות פייתון או מפענח קוד כללי. הפלאגינים נשמרים כסמלים (embeddings) כדי שה-LLM יוכל לחפש טוב יותר את הפלאגין המתאים.

Taskweaver

זו דוגמה לפלאגין שיטפל בגילוי חריגות:

class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str):

הקוד נבדק לפני ביצוע. תכונה נוספת לניהול ההקשר ב-Taskweaver היא 'חווייה' (experience). חווייה מאפשרת לאחסן את הקשר השיחה לטווח ארוך בקובץ YAML. ניתן להגדיר זאת כך שה-LLM ישפר עם הזמן במשימות מסוימות כשנחשף לשיחות קודמות.

JARVIS

מסגרת הסוכן האחרונה שנחקור היא JARVIS. מה שמייחד את JARVIS הוא שהוא משתמש ב-LLM כדי לנהל את הstate של השיחה וtools הם דגמי AI אחרים. כל אחד מהדגמים המקצועיים מבצע משימות ספציפיות כמו זיהוי עצמים, תמלול או כיתוב תמונות.

JARVIS

ה-LLM, שמודל למטרות כלליות, מקבל את הבקשה מהמשתמש ומזהה את המשימה הספציפית ואת כל הטיעונים/נתונים הדרושים להשלמת המשימה.

[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}]

ה-LLM מעצב אז את הבקשה בצורה שהמודל המיוחד של ה-AI יכול לפרש, כגון JSON. לאחר שהמודל החזיר את הניבוי שלו על בסיס המשימה, ה-LLM מקבל את התגובה.

אם יש צורך בדגמים מרובים להשלמת המשימה, הוא גם יפרש את התגובה מדגמים אלה לפני שיאחד אותם ליצירת תגובה למשתמש.

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

מטלה

כדי להמשיך את לימודיך על סוכני בינה מלאכותית אתה יכול לבנות עם AutoGen:

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

הלמידה לא מסתיימת כאן, המשך את המסע

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


הצהרת פרסום: מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור הרשמי. עבור מידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. אנו לא אחראים על אי-הבנות או פרשנויות שגויות הנובעות משימוש בתרגום זה.