אופרטורים
אופרטור הוא צומת שמבצע פעולה דטרמיניסטית: ללא LLM, ללא אקראיות. לכל קלט נתון, הפלט הוא צפוי.
מדוע להשתמש בהם
כל לוגיקה שניתן לכתוב במפורש חייבת להיות כתובה כך. LLM שמחשב סכום או מעצב תאריך הוא anti-pattern: הוא איטי יותר, יקר יותר, ועלול לטעות.
כלל מעשי: אם אתם יודעים לכתוב את הפונקציה ב-5 שורות Python, זה אופרטור — לא agent.
סוגים זמינים
operator HTTP
מבצע קריאת HTTP (REST, GraphQL). תצורה:
- URL (עם placeholders מהקונטקסט)
- Method, headers, body
- אימות:
bearer,basic,api_key_header(header מותאם) אוoauth2(ראו להלן) - מיפוי התגובה לתוך slots
operator DB
מבצע שאילתה על בסיס נתונים הרשום ב-Administration ← בסיסי נתונים. תומך ב-Postgres, MySQL, MongoDB, ובבסיס הפנימי של betool עבור טבלאות user-defined.
file_transform
ממיר קובץ. Transformers מסופקים:
- קריאה (PDF עם OCR, DOCX, XLSX, CSV)
- חיתוך (לפי עמוד, לפי chunk של tokens)
- המרה (HTML ← טקסט, Markdown ↔ HTML)
- חילוץ מבנה (JSON מסכמה)
compute
חישובים ואגרגציות על slots מהקונטקסט:
- סינון / map / reduce על רשימות
- סטטיסטיקות עמודה-עמודה (count, total, pct)
- הקרנות סכמה
- תנאים לוגיים מורכבים
payload_mapper
הרכבת payload פלט מ-slots של הקונטקסט. שימושי להכנת ה-body של operator HTTP שבזרם.
code_step
כאשר לוגיקה דטרמיניסטית חורגת ממה ש-compute יכול לעשות, שלב קוד מבצע קוד מותאם ב-sandbox — נעול על-ידי סקירה אנושית. ראו שלבי קוד ממושלים.
אימות וסודות
אופרטורים שמתחברים למערכת חיצונית (HTTP, DB) מפנים לחשבון הרשום בארגון. ה-credentials אינם גלויים ב-pipeline עצמו — רק שם חשבון.
כתוצאה מכך: שינוי סיסמה אינו מצריך עריכה מחדש של כל pipeline.
OAuth2 יוצא (client_credentials)
עבור APIs שדורשים אסימון OAuth2 (ענן ארגוני, ERP, ספקים צד שלישי), operator HTTP תומך במצב oauth2. אתם רושמים credential OAuth2 בארגון — token_url, client_id, client_secret, scope — והצומת מפנה אליו רק עם מזהה שאינו סודי.
בזמן הקריאה, betool מקבל אסימון ומשתמש בו כל עוד הוא תקף; הוא מרענן אותו באופן עצלני עם פקיעתו, ללא משימת רקע. ה-client_secret אינו מוחזר בקריאה על-ידי API הניהול (רק אינדיקטור יש סוד נחשף), והאסימון שמתקבל מוצב ב-Authorization: Bearer … על הבקשה היוצאת.
שינוי הסוד לאחר rotation בצד הספק אינו מצריך עריכה מחדש של pipeline: הקריאה הבאה מרעננת אוטומטית.
אידמפוטנטיות
כל אופרטור שמייצר תופעת לוואי (POST HTTP, INSERT DB, שליחת אימייל) חייב להיות אידמפוטנטי בצד היעד. פרקטיקה מומלצת:
- לכלול
idempotency_keyב-payload (בדרך כללexchange_id). - לבדוק בצד היעד האם המפתח כבר טופל.
betool אינו מנסה מחדש אופרטור שנכשל: על ה-pipeline שלכם לתזמר את אסטרטגיית ה-retry (לולאה + תנאי).