מניפולציית הנחיות היא הדרך העיקרית שבה אתם, כמפתחי אפליקציות, משפיעים עליכם הפלט של מודלים של בינה מלאכותית גנרטיבית. לדוגמה, כשמשתמשים במודלים גדולים של שפה (LLM), אפשר ליצור הנחיות שמשפיעות על הטון, הפורמט, האורך ומאפיינים אחרים של בין התשובות של המודלים.
Genkit מבוסס על ההנחה שהודעות הן קוד. אתם כותבים ומנהלים את ההנחיות בקובצי המקור, עוקבים אחרי השינויים בהן באמצעות אותה מערכת לבקרת גרסאות שבה אתם משתמשים לקוד, ופורסים אותן יחד עם הקוד שמפעיל את המודלים של ה-AI הגנרטיבי.
רוב המפתחים יגלו שספריית Dotprompt שכלולה באפליקציה עונה על הצרכים שלהם לעבודה עם הנחיות ב-Genkit. עם זאת, יש גם גישות חלופיות שאפשר להשתמש בהן על ידי עבודה ישירה עם ההנחיות.
הגדרת הנחיות
פונקציות העזרה ליצירה של Genkit מקבלות הנחיות מחרוזות, ואפשר להפעיל מודלים בדרך הזו בתרחישים פשוטים לדוגמה.
genkit.Generate(context.Background(), g,
ai.WithModel(model),
ai.WithTextPrompt("You are a helpful AI assistant named Walt."))
ברוב המקרים, תצטרכו לכלול בהנחיה כמה פרטים שהמשתמשים סיפקו. אפשר להגדיר פונקציה להצגה שלהם כך:
func helloPrompt(name string) *ai.Part {
prompt := fmt.Sprintf("You are a helpful AI assistant named Walt. Say hello to %s.", name)
return ai.NewTextPart(prompt)
}
response, err := genkit.GenerateText(context.Background(), g,
ai.WithModel(model),
ai.WithMessages(ai.NewUserMessage(helloPrompt("Fred"))))
עם זאת, אחד החסרונות של הגדרת הנחיות בקוד הוא שבדיקה מחייבת להריץ אותן כחלק מתהליך. כדי לאפשר לכם לבצע איטרציות מהר יותר, Genkit מספק כלי להגדרת ההנחיות ולהרצה שלהן בממשק המשתמש למפתחים.
משתמשים בפונקציה DefinePrompt
כדי לרשום את ההנחיות ב-Genkit.
type HelloPromptInput struct {
UserName string
}
helloPrompt := genkit.DefinePrompt(
g,
"prompts",
"helloPrompt",
nil, // Additional model config
jsonschema.Reflect(&HelloPromptInput{}),
func(ctx context.Context, input any) (*ai.ModelRequest, error) {
params, ok := input.(HelloPromptInput)
if !ok {
return nil, errors.New("input doesn't satisfy schema")
}
prompt := fmt.Sprintf(
"You are a helpful AI assistant named Walt. Say hello to %s.",
params.UserName)
return &ai.ModelRequest{Messages: []*ai.Message{
{Content: []*ai.Part{ai.NewTextPart(prompt)}},
}}, nil
},
)
פעולת הנחיה מגדירה פונקציה שמחזירה GenerateRequest
, שאפשר להשתמש בה עם כל מודל. אפשר גם להגדיר סכימת קלט
להנחיה, שהיא אנלוגית לסכימת הקלט של זרימה.
בהנחיות אפשר גם להגדיר כל אחת מאפשרויות ההגדרה הנפוצות של המודלים, כמו
הטמפרטורה או מספר אסימוני הפלט.
אפשר להציג את ההנחיה הזו לבקשת מודל באמצעות פונקציית העזרה שסופקה. מספקים את משתני הקלט שההנחיה מצפה לקבל ואת המודל להפעיל.
request, err := helloPrompt.Render(context.Background(), HelloPromptInput{UserName: "Fred"})
if err != nil {
return err
}
response, err := genkit.GenerateWithRequest(context.Background(), g, model, request, nil, nil, nil)
בממשק המשתמש של Genkit למפתחים, אפשר להריץ כל הנחיה שהגדרתם בדרך הזו. כך תוכלו להתנסות בהנחיות ספציפיות מחוץ למסגרת או בתהליכי השימוש בהם.
Dotprompt
Genkit כולל את ספריית Dotprompt שמוסיפה עוד פונקציונליות להנחיות.
- טעינת הנחיות מקובצי מקור מסוג
.prompt
- תבניות שמבוססות על כינויים
- תמיכה בתבניות של הנחיות לכמה סבבים ובתוכן מולטימדיה
- תמצית הגדרות של סכימת הקלט והפלט
- שימוש שוטף ב-
generate()