תת-פייפליינים
מעבר לנקודה מסוימת, העתקת אותו רצף צמתים לעשרה pipelines הופכת לחוב. תת-פייפליינים מאפשרים ל-pipeline לקרוא לאחר כמו לפונקציה: מגדירים לוגיקה פעם אחת, משתמשים בה בכל מקום — כולל בין ארגונים.
שתי לבנות סימטריות:
pipeline_callable(receiver, מוצהר על צומת Start) חושף pipeline מאחורי URL, עם חוזה קלטים ופלטים עם טיפוסים מוגדרים.pipeline_call(צומת) קורא ל-pipeline זה: הוא ממפה קלטיו מהקונטקסט הנוכחי, ומאחסן את התוצאה במפתח פלט.
חשיפת pipeline (pipeline_callable)
על ה-pipeline "השירות", אתם מוסיפים receiver pipeline_callable שמצהיר:
- קלטים — רשימת הפרמטרים הצפויים (שם, סוג, נדרש או לא).
- פלטים — המפתחות של התוצאה שמוחזרת.
- מפתח תגובה — איזה ערך מהקונטקסט מהווה את התגובה.
- תקציב זמן — השהיית ביצוע מקסימלית (30 שניות כברירת מחדל, 300 שניות מקסימום).
ה-pipeline מקבל אז URL ציבורי (עם אסימון), להעברה ל-pipeline הקורא. האסימון ניתן לרוטציה בכל עת לביטול גישה.
קריאה ל-pipeline (pipeline_call)
על ה-pipeline "הצרכן", הצומת pipeline_call מוגדר עם:
- הURL של ה-pipeline היעד.
- מיפוי קלטים — לכל פרמטר צפוי, הסלקטור מהקונטקסט שממלא אותו.
- מפתח הפלט — היכן לאחסן את התוצאה.
במקרה של כישלון (timeout, שגיאה, תגובה פגומה), ה-pipeline ממשיך: מפתח הפלט מקבל null ומפתח ._error מתאר מה קרה. עליכם לתזמר את ההמשך (ענף נסיגה, התראה).
קריאות בין ארגונים: opt-in ומבוקר
תת-pipeline יכול להיקרא על-ידי ארגון אחר — זו הבסיס לשיתוף יכולות בין גופים. המודל נשאר קפדני:
- נדחה כברירת מחדל. קריאה בין-ארגונית אפשרית רק אם מנהל ה-pipeline החושף מאשר זאת במפורש (
allow_cross_org). - חתימת HMAC מומלצת. ברגע שפותחים קריאה בין-ארגונית, מפעילים סוד משותף: כל בקשה חתומה, ה-receiver דוחה חתימה חסרה או לא תקינה.
- הכל מתועד. כל הפעלה כותבת שורת ביקורת (ארגון קורא, צומת, עומק, זמן תגובה, סטטוס) — לפני הביצוע, כדי שעקבות יישמר גם במקרה של תקרית. שני הצדדים מעיינים ביומנים שלהם (בצד הקורא כמו בצד הנקרא), בהתאם לזכות הגישה של GDPR.
חיוב: הארגון הנקרא משלם על המשאבים (LLM, קול...) שנוצלו במהלך הביצוע. לוגיקת האורח: אתם משתמשים במשאבי המארח שלכם.
הגנה מפני לולאות אינסוף
pipeline שיקרא לעצמו, ישירות או דרך שרשרת, יצרוך קרדיטים ללא הגבלה. שתי הגנות:
- זיהוי סטטי ברישום (בתוך ארגון): העורך מסרב לפרסם מחזור ישיר (
A → A) או עקיף (A → B → C → A), תוך ציון השרשרת הבעייתית. - מנגנון הגנה בזמן ריצה (בין ארגונים, שבהם ראות סטטית אינה אפשרית): כל קריאה מפיצה את עומקה; מעבר לתקרה, הקריאה נחתכת.
מצבי ביצוע
- סינכרוני — הצומת ממתין לתגובה המלאה. מתאים לעיבוד קצר.
- Streaming — עבור תת-pipeline ארוך (הסקה LLM, עיבוד אצווה), ההתקדמות נוזלת בזמן אמת, ללא timeout קבוע. ה-pipeline הקורא יכול לחשוף התקדמות זו בממשק.
מתי להשתמש
- פקטורינג של רצף שנוצל על-ידי כמה pipelines (סיכום שרשור, כישור lead, אימות מסמך).
- שיתוף יכולת בין ארגונים — גוף אחד חושף "אימות חשבונית מול ERP", אחר צורך אותה, עם ביקורת משני הצדדים.
- מקבוליות על מניפה של עיבודי-משנה עצמאיים מתוך לולאה.