mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 08:26:21 +02:00
591 lines
32 KiB
Markdown
591 lines
32 KiB
Markdown
|
|
---
|
|||
|
|
layout: default
|
|||
|
|
title: "מפרט טכני של פרמטרים הניתנים להגדרה עבור תבניות זרימה"
|
|||
|
|
parent: "Hebrew (Beta)"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# מפרט טכני של פרמטרים הניתנים להגדרה עבור תבניות זרימה
|
|||
|
|
|
|||
|
|
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
|
|||
|
|
|
|||
|
|
## סקירה כללית
|
|||
|
|
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
מפרט זה מתאר את יישום הפרמטרים הניתנים להגדרה עבור תבניות זרימה ב-TrustGraph. פרמטרים מאפשרים למשתמשים להתאים אישית את פרמטרי המעבד בזמן הפעלת הזרימה על ידי מתן ערכים המחליפים את מקומות הפרמטרים בהגדרת תבנית הזרימה.
|
|||
|
|
=======
|
|||
|
|
מפרט זה מתאר את יישום הפרמטרים הניתנים להגדרה עבור תבניות זרימה ב-TrustGraph. פרמטרים מאפשרים למשתמשים להתאים אישית את פרמטרי המעבד בזמן הפעלת הזרימה על ידי מתן ערכים שמחליפים את מקומות הפרמטרים בהגדרת תבנית הזרימה.
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
פרמטרים פועלים באמצעות החלפת משתנים בתבניות בפרמטרי המעבד, בדומה לאופן שבו משתנים `{id}` ו-`{class}` פועלים, אך עם ערכים שמסופקים על ידי המשתמש.
|
|||
|
|
|
|||
|
|
האינטגרציה תומכת בארבעה תרחישי שימוש עיקריים:
|
|||
|
|
|
|||
|
|
1. **בחירת מודל**: לאפשר למשתמשים לבחור מודלים שונים של LLM (לדוגמה, `gemma3:8b`, `gpt-4`, `claude-3`) עבור מעבדים.
|
|||
|
|
2. **תצורת משאבים**: התאמת פרמטרי מעבד כגון גודל חבילות, גודל אצווה ומגבלות מקביליות.
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
3. **כוונון התנהגות**: שינוי התנהגות המעבד באמצעות פרמטרים כגון טמפרטורה, מקסימום טוקנים או ספי תאחזור.
|
|||
|
|
=======
|
|||
|
|
3. **כוונון התנהגות**: שינוי התנהגות המעבד באמצעות פרמטרים כגון טמפרטורה, מקסימום טוקנים או ספי הצעת מחיר.
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
4. **פרמטרים ספציפיים לסביבה**: הגדרת נקודות קצה, מפתחות API או כתובות URL ספציפיות לאזור עבור כל פריסה.
|
|||
|
|
|
|||
|
|
## מטרות
|
|||
|
|
|
|||
|
|
**תצורת מעבד דינמית**: לאפשר תצורת זמן ריצה של פרמטרי מעבד באמצעות החלפת פרמטרים.
|
|||
|
|
**אימות פרמטרים**: לספק בדיקת סוג ואימות עבור פרמטרים בזמן הפעלת הזרימה.
|
|||
|
|
**ערכי ברירת מחדל**: לתמוך בערכי ברירת מחדל הגיוניים תוך מתן אפשרות לשנות אותם עבור משתמשים מתקדמים.
|
|||
|
|
**החלפת תבניות**: להחליף בצורה חלקה את מקומות הפרמטרים בפרמטרי המעבד.
|
|||
|
|
**אינטגרציה עם ממשק משתמש**: לאפשר הזנת פרמטרים באמצעות ממשקי API וממשקי משתמש.
|
|||
|
|
**בטיחות סוגים**: להבטיח שטיפוסי הפרמטרים תואמים לטיפוסי פרמטרי המעבד הצפויים.
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
**תיעוד**: סכימות פרמטרים המתועדות באופן עצמי בתוך הגדרות תבניות הזרימה.
|
|||
|
|
=======
|
|||
|
|
**תיעוד**: סכימות פרמטרים המתועדות באופן עצמי בתוך הגדרות תבניות זרימה.
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
**תאימות לאחור**: לשמור על תאימות לתבניות זרימה קיימות שאינן משתמשות בפרמטרים.
|
|||
|
|
|
|||
|
|
## רקע
|
|||
|
|
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
תבניות זרימה ב-TrustGraph תומכות כעת בפרמטרי מעבד שניתן להכיל ערכים קבועים או מקומות שמירת פרמטרים. זה יוצר הזדמנות להתאמה אישית בזמן ריצה.
|
|||
|
|
|
|||
|
|
פרמטרי מעבד קיימים תומכים ב:
|
|||
|
|
ערכים קבועים: `"model": "gemma3:12b"`
|
|||
|
|
מקומות שמירת פרמטרים: `"model": "gemma3:{model-size}"`
|
|||
|
|
=======
|
|||
|
|
תבניות זרימה ב-TrustGraph תומכות כעת בפרמטרי מעבד שניתן להכיל ערכים קבועים או מקומות פרמטרים. זה יוצר הזדמנות להתאמה אישית בזמן ריצה.
|
|||
|
|
|
|||
|
|
פרמטרי מעבד קיימים תומכים ב:
|
|||
|
|
ערכים קבועים: `"model": "gemma3:12b"`
|
|||
|
|
מקומות פרמטרים: `"model": "gemma3:{model-size}"`
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
מפרט זה מגדיר כיצד פרמטרים:
|
|||
|
|
מוצהרים בהגדרות תבניות זרימה
|
|||
|
|
מאומתים כאשר זרימות מופעלות
|
|||
|
|
מוכנסים לפרמטרי מעבד
|
|||
|
|
נחשפים באמצעות ממשקי API וממשקי משתמש
|
|||
|
|
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
על ידי שימוש בפרמטרי מעבד מוגדרים, TrustGraph יכולה:
|
|||
|
|
=======
|
|||
|
|
על ידי שימוש בפרמטרי מעבד מותאמים אישית, TrustGraph יכולה:
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
להפחית שכפול של תבניות זרימה על ידי שימוש בפרמטרים עבור וריאציות
|
|||
|
|
לאפשר למשתמשים לכוונן את התנהגות המעבד מבלי לשנות הגדרות
|
|||
|
|
לתמוך בתצורות ספציפיות לסביבה באמצעות ערכי פרמטרים
|
|||
|
|
לשמור על בטיחות סוגים באמצעות אימות סכימת פרמטרים
|
|||
|
|
|
|||
|
|
## עיצוב טכני
|
|||
|
|
|
|||
|
|
### ארכיטקטורה
|
|||
|
|
|
|||
|
|
מערכת הפרמטרים הניתנים להגדרה דורשת את הרכיבים הטכניים הבאים:
|
|||
|
|
|
|||
|
|
1. **הגדרת סכימת פרמטרים**
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
הגדרות פרמטרים מבוססות סכימת JSON בתוך מטא-נתונים של תבניות זרימה
|
|||
|
|
הגדרות סוגים כולל מחרוזות, מספרים, בוליאנים, enum ואובייקטים
|
|||
|
|
כללי אימות כולל ערכים מינימליים/מקסימליים, תבניות ושדות חובה
|
|||
|
|
=======
|
|||
|
|
הגדרות פרמטרים המבוססות על סכימת JSON בתוך מטא-נתונים של תבניות זרימה
|
|||
|
|
הגדרות סוגים כולל מחרוזות, מספרים, בוליאנים, enum ואובייקטים
|
|||
|
|
כללי אימות כולל ערכים מינימליים/מקסימליים, תבניות ושדות נדרשים
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
מודול: trustgraph-flow/trustgraph/flow/definition.py
|
|||
|
|
|
|||
|
|
2. **מנוע פתרון פרמטרים**
|
|||
|
|
אימות פרמטרים בזמן ריצה מול סכימה
|
|||
|
|
יישום ערכי ברירת מחדל עבור פרמטרים לא מוגדרים
|
|||
|
|
הכנסת פרמטרים להקשר ביצוע הזרימה
|
|||
|
|
המרה והסבה של סוגים לפי הצורך
|
|||
|
|
|
|||
|
|
מודול: trustgraph-flow/trustgraph/flow/parameter_resolver.py
|
|||
|
|
|
|||
|
|
3. **אינטגרציה עם מאגר פרמטרים**
|
|||
|
|
אחזור הגדרות פרמטרים ממערכת סכימות/תצורה
|
|||
|
|
שמירת פרמטרי הגדרה בשימוש תכוף
|
|||
|
|
אימות מול סכימות המאוחסנות באופן מרכזי
|
|||
|
|
|
|||
|
|
מודול: trustgraph-flow/trustgraph/flow/parameter_store.py
|
|||
|
|
|
|||
|
|
4. **הרחבות משגר זרימה**
|
|||
|
|
הרחבות API לקבלת ערכי פרמטרים במהלך הפעלת זרימה
|
|||
|
|
רזולוציית מיפוי פרמטרים (שמות זרימה לשמות הגדרה)
|
|||
|
|
טיפול בשגיאות עבור שילובים לא חוקיים של פרמטרים
|
|||
|
|
|
|||
|
|
מודול: trustgraph-flow/trustgraph/flow/launcher.py
|
|||
|
|
|
|||
|
|
5. **טפסי פרמטרים של ממשק משתמש**
|
|||
|
|
יצירת טפסים דינמיים ממטא-נתוני פרמטרים של זרימה
|
|||
|
|
תצוגה מסודרת של פרמטרים באמצעות שדה `order`
|
|||
|
|
תגיות תיאוריות של פרמטרים באמצעות שדה `description`
|
|||
|
|
אימות קלט מול הגדרות סוג פרמטרים
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
ערכות מקדימות ותבניות פרמטרים
|
|||
|
|
=======
|
|||
|
|
ערכות חכמות ותבניות פרמטרים
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
מודול: trustgraph-ui/components/flow-parameters/
|
|||
|
|
|
|||
|
|
### מודלים של נתונים
|
|||
|
|
|
|||
|
|
#### הגדרות פרמטרים (מאוחסנות בסכימה/תצורה)
|
|||
|
|
|
|||
|
|
הגדרות פרמטרים מאוחסנות באופן מרכזי במערכת הסכימות והתצורה עם סוג "parameter-type":
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
פלט חוזה (יש לעקוב בדיוק אחר הפורמט הבא).
|
|||
|
|
=======
|
|||
|
|
פלט חוזה (יש לעקוב אחר הפורמט המדויק).
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"llm-model": {
|
|||
|
|
"type": "string",
|
|||
|
|
"description": "LLM model to use",
|
|||
|
|
"default": "gpt-4",
|
|||
|
|
"enum": [
|
|||
|
|
{
|
|||
|
|
"id": "gpt-4",
|
|||
|
|
"description": "OpenAI GPT-4 (Most Capable)"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "gpt-3.5-turbo",
|
|||
|
|
"description": "OpenAI GPT-3.5 Turbo (Fast & Efficient)"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "claude-3",
|
|||
|
|
"description": "Anthropic Claude 3 (Thoughtful & Safe)"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "gemma3:8b",
|
|||
|
|
"description": "Google Gemma 3 8B (Open Source)"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"required": false
|
|||
|
|
},
|
|||
|
|
"model-size": {
|
|||
|
|
"type": "string",
|
|||
|
|
"description": "Model size variant",
|
|||
|
|
"default": "8b",
|
|||
|
|
"enum": ["2b", "8b", "12b", "70b"],
|
|||
|
|
"required": false
|
|||
|
|
},
|
|||
|
|
"temperature": {
|
|||
|
|
"type": "number",
|
|||
|
|
"description": "Model temperature for generation",
|
|||
|
|
"default": 0.7,
|
|||
|
|
"minimum": 0.0,
|
|||
|
|
"maximum": 2.0,
|
|||
|
|
"required": false
|
|||
|
|
},
|
|||
|
|
"chunk-size": {
|
|||
|
|
"type": "integer",
|
|||
|
|
"description": "Document chunk size",
|
|||
|
|
"default": 512,
|
|||
|
|
"minimum": 128,
|
|||
|
|
"maximum": 2048,
|
|||
|
|
"required": false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### תרשים זרימה עם הפניות לפרמטרים
|
|||
|
|
|
|||
|
|
תרשימי זרימה מגדירים מטא-נתונים של פרמטרים עם הפניות לסוג, תיאורים וסדר:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"flow_class": "document-analysis",
|
|||
|
|
"parameters": {
|
|||
|
|
"llm-model": {
|
|||
|
|
"type": "llm-model",
|
|||
|
|
"description": "Primary LLM model for text completion",
|
|||
|
|
"order": 1
|
|||
|
|
},
|
|||
|
|
"llm-rag-model": {
|
|||
|
|
"type": "llm-model",
|
|||
|
|
"description": "LLM model for RAG operations",
|
|||
|
|
"order": 2,
|
|||
|
|
"advanced": true,
|
|||
|
|
"controlled-by": "llm-model"
|
|||
|
|
},
|
|||
|
|
"llm-temperature": {
|
|||
|
|
"type": "temperature",
|
|||
|
|
"description": "Generation temperature for creativity control",
|
|||
|
|
"order": 3,
|
|||
|
|
"advanced": true
|
|||
|
|
},
|
|||
|
|
"chunk-size": {
|
|||
|
|
"type": "chunk-size",
|
|||
|
|
"description": "Document chunk size for processing",
|
|||
|
|
"order": 4,
|
|||
|
|
"advanced": true
|
|||
|
|
},
|
|||
|
|
"chunk-overlap": {
|
|||
|
|
"type": "integer",
|
|||
|
|
"description": "Overlap between document chunks",
|
|||
|
|
"order": 5,
|
|||
|
|
"advanced": true,
|
|||
|
|
"controlled-by": "chunk-size"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"class": {
|
|||
|
|
"text-completion:{class}": {
|
|||
|
|
"request": "non-persistent://tg/request/text-completion:{class}",
|
|||
|
|
"response": "non-persistent://tg/response/text-completion:{class}",
|
|||
|
|
"parameters": {
|
|||
|
|
"model": "{llm-model}",
|
|||
|
|
"temperature": "{llm-temperature}"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"rag-completion:{class}": {
|
|||
|
|
"request": "non-persistent://tg/request/rag-completion:{class}",
|
|||
|
|
"response": "non-persistent://tg/response/rag-completion:{class}",
|
|||
|
|
"parameters": {
|
|||
|
|
"model": "{llm-rag-model}",
|
|||
|
|
"temperature": "{llm-temperature}"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"flow": {
|
|||
|
|
"chunker:{id}": {
|
|||
|
|
"input": "persistent://tg/flow/chunk:{id}",
|
|||
|
|
"output": "persistent://tg/flow/chunk-load:{id}",
|
|||
|
|
"parameters": {
|
|||
|
|
"chunk_size": "{chunk-size}",
|
|||
|
|
"chunk_overlap": "{chunk-overlap}"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
הסעיף `parameters` ממפה שמות פרמטרים ספציפיים לזרימה (מפתחות) לאובייקטי מטא-נתונים של פרמטרים המכילים:
|
|||
|
|
`type`: הפניה להגדרה מרכזית של פרמטר (לדוגמה, "llm-model")
|
|||
|
|
`description`: תיאור קריא לבני אדם לצורך הצגה בממשק המשתמש
|
|||
|
|
`order`: סדר הצגה של טפסי פרמטרים (מספרים נמוכים יותר מופיעים ראשונים)
|
|||
|
|
`advanced` (אופציונלי): דגל בוליאני המציין אם זהו פרמטר מתקדם (ברירת מחדל: false). כאשר מוגדר כ-true, הממשק המשתמש עשוי להסתיר את הפרמטר הזה כברירת מחדל או למקם אותו בסעיף "מתקדם"
|
|||
|
|
`controlled-by` (אופציונלי): שם של פרמטר אחר השולט בערך של הפרמטר הזה במצב פשוט. כאשר מצוין, פרמטר זה יורש את הערך שלו מהפרמטר השולט, אלא אם כן הוא מוגדר במפורש אחרת
|
|||
|
|
|
|||
|
|
גישה זו מאפשרת:
|
|||
|
|
הגדרות סוג פרמטרים שניתן לעשות בהן שימוש חוזר במספר תבניות זרימה
|
|||
|
|
ניהול ובדיקת תוקף מרכזיים של סוגי פרמטרים
|
|||
|
|
תיאורים וסדר הצגה ספציפיים לזרימה של פרמטרים
|
|||
|
|
חוויית ממשק משתמש משופרת עם טפסי פרמטרים תיאוריים
|
|||
|
|
בדיקת תוקף עקבית של פרמטרים בכל הזרימות
|
|||
|
|
הוספה קלה של סוגי פרמטרים סטנדרטיים חדשים
|
|||
|
|
ממשק משתמש מפושט עם הפרדה בין מצב בסיסי/מתקדם
|
|||
|
|
ירושת ערכי פרמטרים עבור הגדרות קשורות
|
|||
|
|
|
|||
|
|
#### בקשת הפעלת זרימה
|
|||
|
|
|
|||
|
|
ממשק ה-API להפעלת זרימה מקבל פרמטרים באמצעות שמות הפרמטרים של הזרימה:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"flow_class": "document-analysis",
|
|||
|
|
"flow_id": "customer-A-flow",
|
|||
|
|
"parameters": {
|
|||
|
|
"llm-model": "claude-3",
|
|||
|
|
"llm-temperature": 0.5,
|
|||
|
|
"chunk-size": 1024
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
הערה: בדוגמה זו, `llm-rag-model` אינו מסופק באופן מפורש, אך הוא יירש את הערך "claude-3" מ-`llm-model` בשל הקשר `controlled-by` שלו. באופן דומה, `chunk-overlap` יכול לרשת ערך מחושב המבוסס על `chunk-size`.
|
|||
|
|
=======
|
|||
|
|
הערה: בדוגמה זו, `llm-rag-model` אינו מסופק באופן מפורש, אך הוא יירש את הערך "claude-3" מ-`llm-model` עקב הקשר `controlled-by` שלו. באופן דומה, `chunk-overlap` יכול לרשת ערך מחושב המבוסס על `chunk-size`.
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
המערכת תבצע את הפעולות הבאות:
|
|||
|
|
1. חילוץ מטא-נתונים של פרמטרים מהגדרת תבנית זרימה
|
|||
|
|
2. מיפוי שמות פרמטרים של זרימה להגדרות הסוג שלהם (לדוגמה, `llm-model` → סוג `llm-model`)
|
|||
|
|
3. פתרון קשרים "שולט ב" (controlled-by) (לדוגמה, `llm-rag-model` יורש מ-`llm-model`)
|
|||
|
|
4. אימות ערכים שסופקו על ידי המשתמש וערכים שירשו בהתאם להגדרות הסוג של הפרמטרים
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
5. החלפת ערכים שפתורים לתוך פרמטרים של מעבדים במהלך יצירת זרימה
|
|||
|
|
=======
|
|||
|
|
5. החלפת ערכים פתורים לפרמטרים של מעבדים במהלך יצירת זרימה
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
### פרטי יישום
|
|||
|
|
|
|||
|
|
#### תהליך פתרון פרמטרים
|
|||
|
|
|
|||
|
|
כאשר זרימה מתחילה, המערכת מבצעת את שלבי פתרון הפרמטרים הבאים:
|
|||
|
|
|
|||
|
|
1. **טעינת תבנית זרימה**: טעינת הגדרת תבנית זרימה וחילוץ מטא-נתונים של פרמטרים
|
|||
|
|
2. **חילוץ מטא-נתונים**: חילוץ `type`, `description`, `order`, `advanced` ו-`controlled-by` עבור כל פרמטר המוגדר בתבנית הזרימה בסעיף `parameters`
|
|||
|
|
3. **חיפוש הגדרת סוג**: עבור כל פרמטר בתבנית הזרימה:
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
אחזור הגדרת הסוג של הפרמטר ממחסן הסכימה/התצורה באמצעות השדה `type`
|
|||
|
|
הגדרות הסוג מאוחסנות עם הסוג "parameter-type" במערכת התצורה
|
|||
|
|
=======
|
|||
|
|
אחזור הגדרת הסוג של הפרמטר ממחסן הסכימה/הגדרות באמצעות השדה `type`
|
|||
|
|
הגדרות הסוג מאוחסנות עם הסוג "parameter-type" במערכת ההגדרות
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
כל הגדרת סוג מכילה את הסכימה של הפרמטר, ערך ברירת מחדל וכללי אימות
|
|||
|
|
4. **פתרון ערך ברירת מחדל**:
|
|||
|
|
עבור כל פרמטר המוגדר בתבנית הזרימה:
|
|||
|
|
בדיקה האם המשתמש סיפק ערך עבור פרמטר זה
|
|||
|
|
אם לא סופק ערך על ידי המשתמש, השתמש בערך `default` מהגדרת סוג הפרמטר
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
יצירת מפת פרמטרים שלמה המכילה הן ערכים שסופקו על ידי המשתמש והן ערכי ברירת מחדל
|
|||
|
|
5. **פתרון ירושה של פרמטרים** (קשרים "שולט ב"):
|
|||
|
|
עבור פרמטרים עם שדה `controlled-by`, בדוק האם סופק ערך באופן מפורש
|
|||
|
|
אם לא סופק ערך מפורש, יורשים את הערך מהפרמטר השולט
|
|||
|
|
אם גם לפרמטר השולט אין ערך, משתמשים בברירת המחדל מהגדרת הסוג
|
|||
|
|
אימות שאין תלות מעגלית בקשרי `controlled-by`
|
|||
|
|
6. **אימות**: אימות קבוצת הפרמטרים השלמה (ערכים שסופקו על ידי המשתמש, ברירות מחדל וערכים שירשו) בהתאם להגדרות הסוג
|
|||
|
|
7. **אחסון**: אחסון קבוצת הפרמטרים השלמה שפתורה עם מופע הזרימה לצורך ביקורת
|
|||
|
|
8. **החלפת תבניות**: החלפת מקומות שמורות של פרמטרים בפרמטרים של מעבדים עם ערכים שפתורים
|
|||
|
|
=======
|
|||
|
|
יצירת מפת פרמטרים שלמה המכילה גם ערכים שסופקו על ידי המשתמש וגם ערכי ברירת מחדל
|
|||
|
|
5. **פתרון ירושה של פרמטרים** (קשרים "שולט ב"):
|
|||
|
|
עבור פרמטרים עם שדה `controlled-by`, בדוק האם סופק ערך באופן מפורש
|
|||
|
|
אם לא סופק ערך מפורש, ירוש את הערך מהפרמטר השולט
|
|||
|
|
אם גם לפרמטר השולט אין ערך, השתמש בברירת המחדל מהגדרת הסוג
|
|||
|
|
ודא שאין תלות מעגלית בקשרי `controlled-by`
|
|||
|
|
6. **אימות**: אימות קבוצת הפרמטרים השלמה (ערכים שסופקו על ידי המשתמש, ברירות מחדל וערכים שירשו) בהתאם להגדרות הסוג
|
|||
|
|
7. **אחסון**: אחסון קבוצת הפרמטרים הפתורים השלמה עם מופע הזרימה לצורך ביקורת
|
|||
|
|
8. **החלפת תבניות**: החלפת מקומות שמורות של פרמטרים בפרמטרים של מעבדים עם ערכים פתורים
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
9. **יצירת מעבדים**: יצירת מעבדים עם פרמטרים שהוחלפו
|
|||
|
|
|
|||
|
|
**הערות חשובות ליישום:**
|
|||
|
|
שירות הזרימה חייב למזג פרמטרים שסופקו על ידי המשתמש עם ברירות מחדל מהגדרות סוג הפרמטרים
|
|||
|
|
קבוצת הפרמטרים השלמה (כולל ברירות המחדל המיושמות) חייבת להיות מאוחסנת עם הזרימה לצורך מעקב
|
|||
|
|
פתרון פרמטרים מתרחש בזמן התחלת הזרימה, ולא בזמן יצירת המעבד
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
פרמטרים חסרים שנדרשים ללא ברירות מחדל חייבים לגרום לכישלון התחלת הזרימה עם הודעת שגיאה ברורה
|
|||
|
|
=======
|
|||
|
|
פרמטרים חסרים הדורשים ברירות מחדל חייבים לגרום לכישלון התחלת הזרימה עם הודעת שגיאה ברורה
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
#### ירושת פרמטרים עם "שולט ב"
|
|||
|
|
|
|||
|
|
השדה `controlled-by` מאפשר ירושת ערכי פרמטרים, שימושי במיוחד לפשט ממשקי משתמש תוך שמירה על גמישות:
|
|||
|
|
|
|||
|
|
**תרחיש לדוגמה**:
|
|||
|
|
פרמטר `llm-model` שולט במודל LLM הראשי
|
|||
|
|
פרמטר `llm-rag-model` מכיל `"controlled-by": "llm-model"`
|
|||
|
|
במצב פשוט, הגדרת `llm-model` ל-"gpt-4" מגדירה אוטומטית גם את `llm-rag-model` ל-"gpt-4"
|
|||
|
|
במצב מתקדם, משתמשים יכולים לדרוס את `llm-rag-model` עם ערך שונה
|
|||
|
|
|
|||
|
|
**כללי פתרון**:
|
|||
|
|
1. אם לפרמטר יש ערך שסופק באופן מפורש, השתמש בערך זה
|
|||
|
|
2. אם אין ערך מפורש ו-`controlled-by` מוגדר, השתמש בערך של הפרמטר השולט
|
|||
|
|
3. אם לפרמטר השולט אין ערך, חזור לברירת המחדל מהגדרת הסוג
|
|||
|
|
4. תלות מעגלית בקשרי `controlled-by` גורמת לשגיאת אימות
|
|||
|
|
|
|||
|
|
**התנהגות ממשק משתמש**:
|
|||
|
|
במצב בסיסי/פשוט: פרמטרים עם `controlled-by` עשויים להיות מוסתרים או מוצגים כקריאה בלבד עם ערך שירש
|
|||
|
|
במצב מתקדם: מוצגים כל הפרמטרים וניתן להגדיר אותם באופן אינדיבידואלי
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
כאשר פרמטר שולט משתנה, פרמטרים תלויים מתעדכנים אוטומטית אלא אם כן הם נדחפים באופן מפורש
|
|||
|
|
=======
|
|||
|
|
כאשר פרמטר שולט משתנה, פרמטרים תלויים מתעדכנים אוטומטית אלא אם כן הם דורסים באופן מפורש
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
#### אינטגרציה עם Pulsar
|
|||
|
|
|
|||
|
|
1. **פעולת התחלת זרימה**
|
|||
|
|
פעולת התחלת הזרימה של Pulsar צריכה לקבל שדה `parameters` המכיל מפה של ערכי פרמטרים
|
|||
|
|
הסכימה של בקשת התחלת הזרימה של Pulsar חייבת להיות מעודכנת כדי לכלול את השדה האופציונלי `parameters`
|
|||
|
|
דוגמת בקשה:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"flow_class": "document-analysis",
|
|||
|
|
"flow_id": "customer-A-flow",
|
|||
|
|
"parameters": {
|
|||
|
|
"model": "claude-3",
|
|||
|
|
"size": "12b",
|
|||
|
|
"temp": 0.5,
|
|||
|
|
"chunk": 1024
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **פעולת Get-Flow**
|
|||
|
|
הסכימה של Pulsar עבור תגובת ה-get-flow חייבת להיות מעודכנת כדי לכלול את השדה `parameters`
|
|||
|
|
זה מאפשר ללקוחות לשלוף את ערכי הפרמטרים ששימשו כאשר ה-flow הופעל
|
|||
|
|
דוגמה לתגובה:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"flow_id": "customer-A-flow",
|
|||
|
|
"flow_class": "document-analysis",
|
|||
|
|
"status": "running",
|
|||
|
|
"parameters": {
|
|||
|
|
"model": "claude-3",
|
|||
|
|
"size": "12b",
|
|||
|
|
"temp": 0.5,
|
|||
|
|
"chunk": 1024
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### יישום שירות זרימה
|
|||
|
|
|
|||
|
|
שירות תצורת הזרימה (`trustgraph-flow/trustgraph/config/service/flow.py`) דורש את השיפורים הבאים:
|
|||
|
|
|
|||
|
|
1. **פונקציית פתרון פרמטרים**
|
|||
|
|
```python
|
|||
|
|
async def resolve_parameters(self, flow_class, user_params):
|
|||
|
|
"""
|
|||
|
|
Resolve parameters by merging user-provided values with defaults.
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
flow_class: The flow blueprint definition dict
|
|||
|
|
user_params: User-provided parameters dict
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
Complete parameter dict with user values and defaults merged
|
|||
|
|
"""
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
פונקציה זו צריכה:
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
לחלץ מטא-נתונים של פרמטרים מתוך סעיף `parameters` של תוכנית העבודה (blueprint).
|
|||
|
|
עבור כל פרמטר, לשלוף את הגדרת הסוג שלו ממאגר התצורה.
|
|||
|
|
להחיל ערכי ברירת מחדל עבור כל פרמטרים שאינם מסופקים על ידי המשתמש.
|
|||
|
|
=======
|
|||
|
|
לחלץ מטא-נתונים של פרמטרים מסעיף `parameters` של תוכנית העבודה (blueprint).
|
|||
|
|
עבור כל פרמטר, לשלוף את הגדרת הסוג שלו ממאגר התצורה.
|
|||
|
|
להחיל ערכי ברירת מחדל עבור כל פרמטרים שלא סופקו על ידי המשתמש.
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
לטפל ביחסי ירושה `controlled-by`.
|
|||
|
|
להחזיר את קבוצת הפרמטרים השלמה.
|
|||
|
|
|
|||
|
|
2. **שיטה `handle_start_flow` שעברה שינוי**
|
|||
|
|
לקרוא ל-`resolve_parameters` לאחר טעינת תוכנית העבודה.
|
|||
|
|
להשתמש בקבוצת הפרמטרים המפורטת והפתורה עבור החלפת תבניות.
|
|||
|
|
לשמור את קבוצת הפרמטרים השלמה (ולא רק את אלה שסופקו על ידי המשתמש) יחד עם תוכנית העבודה.
|
|||
|
|
לוודא שכל הפרמטרים הנדרשים מכילים ערכים.
|
|||
|
|
|
|||
|
|
3. **שליפת סוגי פרמטרים**
|
|||
|
|
הגדרות סוגי פרמטרים מאוחסנות בתצורה עם הסוג "parameter-type".
|
|||
|
|
כל הגדרת סוג מכילה סכימה, ערך ברירת מחדל וכללי אימות.
|
|||
|
|
לשמור סוגי פרמטרים בשימוש נפוץ במטמון כדי להפחית את מספר הפניות לתצורה.
|
|||
|
|
|
|||
|
|
#### שילוב עם מערכת התצורה
|
|||
|
|
|
|||
|
|
3. **אחסון אובייקטי זרימה**
|
|||
|
|
כאשר אובייקט זרימה מתווסף למערכת התצורה על ידי רכיב הזרימה בניהול התצורה, אובייקט הזרימה חייב לכלול את ערכי הפרמטרים הפתורים.
|
|||
|
|
מנהל התצורה צריך לאחסן גם את הפרמטרים שסופקו על ידי המשתמש וגם את הערכים הפתורים (עם יישום ברירת המחדל).
|
|||
|
|
אובייקטי זרימה במערכת התצורה צריכים לכלול:
|
|||
|
|
`parameters`: ערכי הפרמטרים הפתורים הסופיים המשמשים עבור הזרימה.
|
|||
|
|
|
|||
|
|
#### שילוב עם ממשק שורת הפקודה (CLI)
|
|||
|
|
|
|||
|
|
4. **פקודות CLI של הספריה**
|
|||
|
|
פקודות CLI המתחילות זרימות צריכות לתמוך בפרמטרים:
|
|||
|
|
לקבל ערכי פרמטרים באמצעות דגלי שורת הפקודה או קבצי תצורה.
|
|||
|
|
לאמת פרמטרים מול הגדרות תוכנית העבודה לפני שליחה.
|
|||
|
|
לתמוך בקלט של קובץ פרמטרים (JSON/YAML) עבור קבוצות פרמטרים מורכבות.
|
|||
|
|
|
|||
|
|
פקודות CLI המציגות זרימות צריכות להציג מידע על פרמטרים:
|
|||
|
|
להציג את ערכי הפרמטרים ששימשו בעת התחלת הזרימה.
|
|||
|
|
להציג את הפרמטרים הזמינים עבור תוכנית עבודה של זרימה.
|
|||
|
|
להציג סכימות אימות של פרמטרים וערכי ברירת מחדל.
|
|||
|
|
|
|||
|
|
#### שילוב עם מחלקת בסיס של מעבד (Processor)
|
|||
|
|
|
|||
|
|
5. **תמיכה ב-ParameterSpec**
|
|||
|
|
מחלקות בסיס של מעבדים צריכות לתמוך בהחלפת פרמטרים באמצעות מנגנון ה-ParametersSpec הקיים.
|
|||
|
|
המחלקה ParametersSpec (הנמצאת באותו מודול כמו ConsumerSpec ו-ProducerSpec) צריכה להיות משופרת במידת הצורך כדי לתמוך בהחלפת תבניות של פרמטרים.
|
|||
|
|
מעבדים צריכים להיות מסוגלים להשתמש ב-ParametersSpec כדי להגדיר את הפרמטרים שלהם עם ערכי פרמטרים שפתורים בזמן הפעלת הזרימה.
|
|||
|
|
יישום ה-ParametersSpec צריך:
|
|||
|
|
לקבל תצורות פרמטרים המכילות מקומות שמורות של פרמטרים (לדוגמה, `{model}`, `{temperature}`).
|
|||
|
|
לתמוך בהחלפת פרמטרים בזמן ריצה בעת יצירת המעבד.
|
|||
|
|
לוודא שערכים שהוחלפו תואמים לסוגים ולמגבלות הצפויים.
|
|||
|
|
לספק טיפול בשגיאות עבור הפניות חסרות או לא חוקיות של פרמטרים.
|
|||
|
|
|
|||
|
|
#### כללי החלפה
|
|||
|
|
|
|||
|
|
פרמטרים משתמשים בפורמט `{parameter-name}` בפרמטרים של מעבד.
|
|||
|
|
שמות הפרמטרים בפרמטרים תואמים למפתחות בסעיף `parameters` של תוכנית העבודה.
|
|||
|
|
החלפה מתרחשת יחד עם החלפת `{id}` ו-`{class}`.
|
|||
|
|
הפניות לא חוקיות של פרמטרים גורמות לשגיאות בזמן ההפעלה.
|
|||
|
|
אימות סוג מתרחש בהתבסס על הגדרת הפרמטר המאוחסנת במרכז.
|
|||
|
|
**חשוב**: כל ערכי הפרמטרים מאוחסנים ומועברים כרצף תווים.
|
|||
|
|
מספרים מומרים לרצף תווים (לדוגמה, `0.7` הופך ל-`"0.7"`).
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
ערכים בוליאניים מומרים לרצף תווים קטן (לדוגמה, `true` הופך ל-`"true"`).
|
|||
|
|
=======
|
|||
|
|
בוליאנים מומרים לרצף תווים קטן (לדוגמה, `true` הופך ל-`"true"`).
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
זה נדרש על ידי הסכימה של Pulsar, אשר מגדירה `parameters = Map(String())`.
|
|||
|
|
|
|||
|
|
דוגמה לפענוח:
|
|||
|
|
```
|
|||
|
|
Flow parameter mapping: "model": "llm-model"
|
|||
|
|
Processor parameter: "model": "{model}"
|
|||
|
|
User provides: "model": "gemma3:8b"
|
|||
|
|
Final parameter: "model": "gemma3:8b"
|
|||
|
|
|
|||
|
|
Example with type conversion:
|
|||
|
|
Parameter type default: 0.7 (number)
|
|||
|
|
Stored in flow: "0.7" (string)
|
|||
|
|
Substituted in processor: "0.7" (string)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## אסטרטגיית בדיקות
|
|||
|
|
|
|||
|
|
בדיקות יחידה לאימות סכימת הפרמטרים
|
|||
|
|
בדיקות אינטגרציה להחלפת פרמטרים בפרמטרים של המעבד
|
|||
|
|
בדיקות מקצה לקצה להפעלת זרימות עם ערכי פרמטרים שונים
|
|||
|
|
בדיקות ממשק משתמש ליצירה ואימות של טופס פרמטרים
|
|||
|
|
בדיקות ביצועים עבור זרימות עם פרמטרים רבים
|
|||
|
|
מקרים קצה: פרמטרים חסרים, סוגים לא חוקיים, הפניות לפרמטרים לא מוגדרים
|
|||
|
|
|
|||
|
|
## תוכנית מעבר
|
|||
|
|
|
|||
|
|
1. המערכת צריכה להמשיך לתמוך בתבניות זרימה ללא פרמטרים
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
מוצהרים.
|
|||
|
|
=======
|
|||
|
|
מוגדרים.
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
2. המערכת צריכה להמשיך לתמוך בזרימות ללא פרמטרים מוגדרים:
|
|||
|
|
זה עובד עבור זרימות ללא פרמטרים, וזרימות עם פרמטרים
|
|||
|
|
(שיש להם ערכי ברירת מחדל).
|
|||
|
|
|
|||
|
|
## שאלות פתוחות
|
|||
|
|
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
ש: האם הפרמטרים צריכים לתמוך באובייקטים מקוננים מורכבים או להישאר בסוגים פשוטים?
|
|||
|
|
=======
|
|||
|
|
ש: האם פרמטרים צריכים לתמוך באובייקטים מקוננים מורכבים או להישאר בסוגים פשוטים?
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
ת: ערכי הפרמטרים יועברו כרצף תווים, סביר להניח שנרצה
|
|||
|
|
להישאר ברצפים תווים.
|
|||
|
|
|
|||
|
|
ש: האם מותר להשתמש במחזיקי פרמטרים בשמות תורים או רק ב
|
|||
|
|
פרמטרים?
|
|||
|
|
ת: רק בפרמטרים כדי למנוע הזרקות ותופעות לוואי.
|
|||
|
|
|
|||
|
|
ש: כיצד לטפל בקונפליקטים בין שמות פרמטרים למשתנים של המערכת כמו
|
|||
|
|
<<<<<<< HEAD
|
|||
|
|
`id` ו- `class`?
|
|||
|
|
ת: לא חוקי לציין id ו-class בעת הפעלת זרימה.
|
|||
|
|
|
|||
|
|
ש: האם אנו תומכים בפרמטרים מחושבים (נגזרים מפרמטרים אחרים)?
|
|||
|
|
ת: רק החלפת רצפי תווים כדי למנוע הזרקות ותופעות לוואי.
|
|||
|
|
=======
|
|||
|
|
`id` ו-`class`?
|
|||
|
|
ת: לא חוקי לציין id ו-class בעת הפעלת זרימה.
|
|||
|
|
|
|||
|
|
ש: האם אנו תומכים בפרמטרים מחושבים (נגזרים מפרמטרים אחרים)?
|
|||
|
|
ת: רק החלפת רצפים תווים כדי למנוע הזרקות ותופעות לוואי.
|
|||
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|||
|
|
|
|||
|
|
## הפניות
|
|||
|
|
|
|||
|
|
מפרט JSON Schema: https://json-schema.org/
|
|||
|
|
מפרט הגדרת תבנית זרימה: docs/tech-specs/flow-class-definition.md
|