כדי ליצור ולהשתמש בעוזר דרך ה-API , התהליך כולל שלבים אלו:
יצירת עוזר (Assistant): יצירת עוזר חדש דרך ה-API, כאשר מגדירים שם, הוראות ומודל. (אפשר גם ישירות בממשק)
יצירת נושא (Thread): יצירת נושא חדש, שישמש כבסיס לשיחה עם העוזר.
הוספת הודעה לנושא: שליחת הודעה לנושא, כדי להתחיל את השיחה או לבקש מידע מהעוזר.
יצירת ריצה (Run): יצירת ריצה כדי לקבל תגובה מהעוזר. זה מציין לעוזר לקרוא את ההודעות בנושא ולפעול.
בדיקת ססטוס: בדיקת סטטוס ריצה , בכדי לדעת האם לגשת לתגובות מהעוזר.
קבלת תגובות מהעוזר: בדיקת התגובות שהעוזר הוסיף לנושא לאחר הריצה.
בעת יצירת עוזר (ניתן גם לעדכן אחר כך) ב-API , אפשר להוסיף כלים כגון:
Code Interpreter: מאפשר לעוזר להריץ קוד ולהחזיר תוצאות.
Retrieval: מאפשר לעוזר לחפש ולהחזיר מידע ממקורות חיצוניים.
Functions: מאפשר להגדיר פונקציות מותאמות אישית שהעוזר יכול להשתמש בהן.
בנוסף, ניתן לשייך קבצים (Files) לעוזר, שיהיו זמינים לו לשימוש במהלך השיחה.
כאשר מבצעים קריאה לפונקציות אלו, ייתכן צורך בביצוע קריאה נוספת ל-API כדי להפעיל את הפונקציה ולקבל תוצאות.
וכמובן שיש עוד הרבה אפשריות ופרמטרים שניתן להוסיף...
ובצורה מפורטת יותר:
יצירת עוזר דרך ה-API של OpenAI, אתה יוצר עוזר וירטואלי שמותאם לצרכים ולפונקציונליות שאתה רוצה:
יצירת העוזר:
- מודל (Model): זהו היסוד הבסיסי של העוזר. אתה בוחר מודל מהרשימה הזמינה (כגון GPT-4), שישמש כבסיס ליכולות של העוזר.
- שם (Name): זהו שם העוזר, שיכול להיות כל טקסט שתבחר, עד 256 תווים.
- תיאור (Description): תיאור מפורט של העוזר, מה הוא עושה, ואיך הוא יכול לעזור.
- הוראות (Instructions): זהו טקסט המנחה את העוזר איך לפעול, לדוגמה, "השב בקצרה" או "השתמש בנתונים מסוימים".
- כלים (Tools): כאן אתה יכול להוסיף כלים שונים, כמו מתרגם קוד, כלי לחיפוש מידע, או פונקציות מותאמות אישית. כל כלי מביא יכולת נוספת לעוזר.
- קבצים (File IDs): אם יש לך קבצים שתרצה שהעוזר יוכל להשתמש בהם, אתה יכול לצרף אותם כאן.
- מטא-דאטה (Metadata): זהו מקום לאחסון מידע נוסף בפורמט מפתח-ערך. לדוגמה, יכול להיות מידע על התחום שבו העוזר מתמקצע.
יצירת נושא והרצה:
יצירת נושא והרצתו מאפשר למשתמש לשלוח פקודה לעוזר וירטואלי שיבצע משימה במסגרת דיאלוג. בפקודה זו, המשתמש מגדיר את זהות העוזר, הודעות התחלתיות לנושא, ומידע נוסף אם נדרש. כל פרמטר בקריאה משמש להגדיר ולהורות לעוזר כיצד לבצע את המשימה.
יצירת נושא (Thread) והרצתו (Run) בבקשה אחת ב-OpenAI. המידע מתאר את גוף הבקשה עם הפרמטרים הבאים:
- assistant_id: מזהה חובה של העוזר שיבצע את הריצה.
- thread: מכיל הודעות ליצירת דיאלוג, כאשר כל הודעה כוללת:
- role: תפקיד השולח (למשל 'user').
- content: תוכן ההודעה.
- file_ids: מזהים של קבצים קשורים לנושא.
- metadata: מידע נוסף בפורמט מפתח-ערך שניתן לצרף לאובייקט.
- model: מזהה של מודל ספציפי לעיבוד הבקשה, אם מסופק משנה את המודול המוגדר.
- instructions: הוראות לעוזר, שיכולות לשנות את התנהגותו.
- tools: כלים ספציפיים שהעוזר יכול להשתמש בהם במהלך הריצה.
תגובת הapi:
- id: מזהה ייחודי של הריצה.
- object: סוג האובייקט, במקרה זה "thread.run".
- created_at: חותמת זמן של יצירת הריצה.
- assistant_id: מזהה העוזר המשתתף בריצה.
- thread_id: מזהה הנושא של הדיאלוג.
- status: מצב הריצה, למשל "queued" (בתור).
- started_at: זמן התחלת הריצה, אם החלה.
- expires_at: זמן פקיעת הריצה.
- cancelled_at: זמן ביטול הריצה, אם בוטלה.
- failed_at: זמן כישלון הריצה, אם נכשלה.
- completed_at: זמן סיום הריצה, אם הושלמה.
- last_error: מידע על השגיאה האחרונה, אם קיימת.
- model: המודל שנמצא בשימוש.
- instructions: הוראות לעוזר.
- tools: רשימת כלים שנמצאים בשימוש, כל אחד עם פרטים נוספים.
- file_ids: מזהי קבצים קשורים לריצה.
- metadata: מידע נוסף בפורמט מפתח-ערך.
בדיקת סטטוס ריצה:
להשיג מידע על הריצה שנעשתה על ידי עוזר. היא מציינת את זהות הנושא (thread) ואת זהות הריצה (run), ומצפה לקבל פרטים על מה שקרה במהלך אותה ריצה.
- thread_id (חובה): המזהה של הנושא (thread) שאתה רוצה לאחזר ממנו הודעות.
- run_id (חובה): המזהה של הריצה.
מספקת תכונה שמאפשרת לך לעקוב אחרי סטטוס הריצה של עוזר דיגיטלי. סטטוס הריצה מספק מידע חשוב על מצב הבקשה בזמן אמת, כולל אם היא נמצאת בביצוע, הושלמה, בוטלה, נכשלה או פג תוקפה. כאשר ריצה מחכה לפעולה ("requires_action"), זה אומר שיש צורך בקלט נוסף מהמשתמש, כמו לשלוח תוצאות מכלי מסוים שנקראו במהלך השיחה. זה חיוני להבין כי התהליך מחכה לפעולת משתמש כדי להמשיך את הביצועים, ולא ימשיך באופן אוטומטי ללא זה.
- In Progress, Cancelled, Failed, Completed, Expired: מצבים שונים של הריצה, מהתהליך עד לסיומו.
- Requires Action ו-Submit Tool Outputs: התהליך דורש פעולה כגון שליחת תוצאות מכלים.
המאפיין "status" באובייקט "run step" מייצג את מצב הביצוע של השלב הנתון בתהליך הריצה. הוא יכול לקבל אחד מהערכים הבאים:
in_progress: השלב נמצא בתהליך ביצוע. זה אומר שהפעולה שמבוצעת בשלב זה עדיין לא הושלמה.
cancelled: השלב בוטל. זה יכול להיות בעקבות החלטה מכוונת לבטל את הביצוע או כאשר משתמש ביטל את הפעולה.
failed: השלב נכשל. זה אומר שהייתה בעיה בביצוע השלב והוא לא הצליח להשלים את משימתו כראוי.
completed: השלב הושלם בהצלחה. זה אומר שכל הפעולות הנדרשות בשלב זה בוצעו כמתוכנן והשלב נגמר בהצלחה.
expired: השלב הסתיים עקב פקיעת הזמן. זה יכול לקרות אם יש הגבלת זמן לביצוע השלב והזמן עבר לפני שהשלב הושלם.
כאשר תהליך (run) נמצא במצב "requires_action" והפעולה הנדרשת ("required_action.type") היא "submit_tool_outputs", פירוש הדבר שהתהליך מחכה לקלט מצד המשתמש או המערכת לפני שהוא יכול להמשיך. במקרה זה, הפעולה הנדרשת היא לשלוח את התוצאות של קריאות הכלים (tool calls) שבוצעו.
מצב "Requires Action": התהליך מחכה לפעולה מסוימת לפני שיוכל להמשיך. זה יכול לקרות כאשר יש צורך בקלט אנושי, או בתהליך שצריך להיות מושלם ידנית.
פעולה נדרשת - "Submit Tool Outputs": הפעולה המסוימת שנדרשת במצב זה היא לשלוח את התוצאות שנוצרו מהכלים (כגון תוצאות חישוב, תמונות, טקסטים וכו') שהתהליך קרא להם.
שליחה בבקשה אחת: חשוב לשלוח את כל התוצאות בבקשה אחת. זה אומר שאתה צריך לאגור את כל התוצאות מכל קריאות הכלים שבוצעו ולשלוח אותם יחד בתגובה אחת למערכת.
בפרקטיקה, זה אומר שאם יש לך תהליך שביצע מספר קריאות לכלים שונים, וכעת הוא מחכה לפעולה נוספת, עליך לאסוף את כל התוצאות מאותן קריאות ולשלוח אותן חזרה למערכת בבקשה אחת כדי שהתהליך יוכל להמשיך.
בדיקת תגובה של העוזר:
מחזירה רשימת ההודעות שנשלחו בתוך נושא ספציפי. היא מאפשרת למשתמש לקבל את כל התקשורת שהתרחשה בתוך נושא נתון, וניתן להתאים את הבקשה לפי מספר פרמטרים:
- thread_id (חובה): המזהה של הנושא (thread) שאתה רוצה לאחזר ממנו הודעות.
- limit (אופציונלי): מגביל את מספר ההודעות שיחזרו, וניתן לבקש בין 1 ל-100 הודעות.
- order (אופציונלי): מגדיר את סדר ההודעות לפי זמן יצירתן (asc לסדר עולה, desc לסדר יורד)
תגובת ה-API מכיל רשימת הודעות שנשלחו במהלך דיאלוג בין משתמש לעוזר דיגיטלי. כל אלמנט ברשימה מייצג הודעה בודדת עם הפרמטרים הבאים:
- id: מזהה ייחודי של ההודעה.
- object: סוג האובייקט, במקרה זה הודעה בנושא.
- created_at: חותמת זמן של יצירת ההודעה.
- thread_id: מזהה של הנושא שאליו שייכת ההודעה.
- role: תפקיד השולח (למשל, משתמש או עוזר).
- content: מערך שמכיל את תוכן ההודעה, כולל טקסט ואנוטציות.
- file_ids: מערך של מזהי קבצים קשורים להודעה.
- assistant_id ו-run_id: מזהים קשורים לעוזר ולריצה של ההודעה, אם קיימים.
- metadata: מידע נוסף בפורמט מפתח-ערך.
הפעלת פונקציות במהלך שיחה:
כאשר ריצה מחכה לפעולה ("requires_action"), זה אומר שיש צורך בקלט נוסף מהמשתמש, כמו לשלוח תוצאות מכלי מסוים שנקראו במהלך השיחה. זה חיוני להבין כי התהליך מחכה לפעולת משתמש כדי להמשיך את הביצועים, ולא ימשיך באופן אוטומטי ללא זה.
מטרתה להגיש פלטים מכלים שנקראו במהלך ריצה של עוזר דיגיטלי שנתקל בסטטוס "requires_action". כאשר עוזר דיגיטלי דורש פעולה נוספת כדי להמשיך, אתה צריך לשלוח את הפלטים שיצרו הכלים שהוא השתמש בהם. כאן פירוט הפרמטרים:
- thread_id: המזהה של הנושא (thread) שאליו שייכת הריצה.
- run_id: המזהה של הריצה שדורשת הגשת פלטי כלים.
- tool_outputs: מערך המכיל את הכלים והפלטים שלהם שיש להגיש.
- tool_call_id: מזהה של קריאה ספציפית לכלי במהלך הריצה.
- output: הפלט של הכלי שיש להגיש כדי להמשיך את הריצה.
ומכאן יש להמשיך לבדיקת ססטוס ריצה וכנ"ל.
כמובן שיש עוד הרבה אפשרויות, אבל זה על קצה המזלג.
בהצלחה.
כעת נעבור על כל קריאה ונבין את משמעותם:
1. **יצירת עוזר (Assistant)**:
curl -X POST 'https://api.openai.com/v1/assistants?' -H 'user-agent: Make/production' -H 'openai-beta: assistants=v1' -H 'authorization: ***' -H 'openai-organization: org-***' -H 'content-type: application/json' -d '{"name":"MultiFunctionalBot","model":"gpt-4-1106-preview","tools":[{"type":"code_interpreter"},{"type":"retrieval"},{"type":"function","function":{"name":"getCurrentWeather","parameters":{"type":"object","required":["location"],"properties":{"unit":{"enum":["c","f"],"type":"string"},"location":{"type":"string","description":"The city and state e.g. San Francisco, CA"}}},"description":"Get the weather in location"}}],"file_ids":["file-koI7jkSgOE2LHHjvtbQrMTcj"],"metadata":{"1":"1","2":"2"},"description":"A bot capable of performing multiple tasks including weather information, data retrieval, and more.","instructions":"You can perform various tasks such as providing weather information, retrieving data, and executing specific functions as requested."}'
הפקודה הזו משתמשת ליצירת עוזר חדש עם שם `MultiFunctionalBot`. היא מציינת את המודל (`gpt-4-1106-preview`), מגדירה כלים שונים (כגון מתרגם קוד, כלי חיפוש, ופונקציה שמספקת מידע על מזג האוויר), מצרפת קבצים, ומספקת תיאור והוראות לשימוש בעוזר.
2. **הוספת הודעה והרצת השיחה(Thread Run)**:
curl -X POST 'https://api.openai.com/v1/threads/runs?' -H 'user-agent: Make/production' -H 'openai-beta: assistants=v1' -H 'authorization: ***' -H 'openai-organization: org-***' -H 'content-type: application/json' -d '{"thread":{"messages":[{"role":"user","content":"מה המזג האוויר היום בירושלים?"}]},"metadata":{},"assistant_id":"asst_RnX7za3C7l9wOoTLV6Vl2bvx"}'
בפקודה זו משתמשים לשליחת בקשה לעוזר עם פרטי ההודעה (`"מה המזג האוויר היום בירושלים?"`). זו פונה לעוזר שנוצר בשלב הראשון.
3. **בדיקת סטטוס ריצה**:
curl -X GET 'https://api.openai.com/v1/threads/thread_1xEPeFqLz3RL0YZigbP5sBgO/runs/run_I9GsvIAZO7fe11wfZBg9XxwV?' -H 'user-agent: Make/production' -H 'openai-beta: assistants=v1' -H 'authorization: ***' -H 'openai-organization: org-***'
פקודה זו מבקשת מידע על סטטוס מסוים של ריצה, כדי לבדוק את מצבה והתקדמותה.
4. **אישור פונקציה**:
curl -X POST 'https://api.openai.com/v1/threads/thread_1xEPeFqLz3RL0YZigbP5sBgO/runs/run_I9GsvIAZO7fe11wfZBg9XxwV/submit_tool_outputs?' -H 'user-agent: Make/production' -H 'openai-beta: assistants=v1' -H 'authorization: ***' -H 'openai-organization: org-***' -H 'content-type: application/json' -d '{"tool_outputs":[{"output":"true","tool_call_id":"call_gOxPE25qt23QoOriSmsFcyTY"}]}'
הפקודה הזו משתמשת ב-API לשליחת תוצאות פונקציות שנקראו במהלך ריצה. זה חלק מתהליך יצירת תגובה דינמית מהעוזר.
5. **איחזור הודעות משיחה**:
curl -X GET 'https://api.openai.com/v1/threads/thread_1xEPeFqLz3RL0YZigbP5sBgO/messages?order=desc' -H 'user-agent: Make/production' -H 'openai-beta: assistants=v1' -H 'authorization: ***' -H 'openai-organization: org-***'
פקודה זו מבקשת לאחזר את כל ההודעות שנשלחו במסגרת השיחה זה מאפשר לך לראות את כל הדיאלוג שהתרחש בין המשתמש לעוזר.
הפקודות הללו מדגימות את השימוש ב-API ליצירת והפעלת עוזרים דיגיטליים. הן כוללות כל היבטים מיצירת העוזר, דרך שליחת בקשות ועד לקבלת תגובות ובדיקת מצב הריצה.
קובץ הסבר עוזר אישי.
קובץ הסבר.
דוגמאות קוד.
- מצורף סינריו להורדה, הדגמה בסיסית לשימוש.
ניתן להתקין מכאן את האפליקצייה שפיתחתי למייק:
Make.com, היא פלטפורמה לאוטומציה שמאפשרת למשתמשים ליצור זרימות עבודה אוטומטיות על ידי חיבור בין שירותים ואפליקציות שונות באינטרנט. הפלטפורמה מאפשרת למשתמשים לאוטמט את פעולותיהם בלי צורך בידע בכתיבת קוד. זה כולל, למשל, חיבור בין גיליונות אלקטרוניים, שירותי ענן, כלי ניהול משימות, מערכות CRM, ועוד.
בעזרת Make, ניתן להקים זרימות עבודה מורכבות שמקלות על תהליכים עסקיים ומאפשרות למקסם את היעילות. זה יכול לכלול העברת נתונים בין אפליקציות, עדכונים אוטומטיים, פעולות מבוססות תנאים, ועוד. המערכת מאפשרת גם חיבור ואינטגרציה עם מגוון רחב של שירותים מקוונים ואפליקציות.
ניתן להירשם למערכת ב- קישור זה(אפיליאייט).