היכולות של Firebase Genkit נועדו להרחבה באמצעות יישומי פלאגין. הפלאגינים של Genkit הם מודולים שניתן להגדיר אותם, והם יכולים לספק מודלים, שירותי אחזור, שירותי הוספה לאינדקס, מאגרי נתוני מעקב ועוד. כבר ראית יישומי פלאגין בפעולה Genkit:
import {
"github.com/firebase/genkit/go/ai"
"github.com/firebase/genkit/go/genkit"
"github.com/firebase/genkit/go/plugins/vertexai"
}
// Default to the value of GCLOUD_PROJECT for the project,
// and "us-central1" for the location.
// To specify these values directly, pass a vertexai.Config value to Init.
if err := vertexai.Init(ctx, g, nil); err != nil {
return err
}
הפלאגין של Vertex AI מקבל הגדרות (כמו מזהה הפרויקט של המשתמש ב-Google Cloud) ומרשם במרשם של Genkit מגוון מודלים, רכיבי הטמעה ועוד. המרשם משמש כשירות חיפוש עבור פעולות בעלות שם ב- של סביבת זמן ריצה, ומפעיל את ממשק המשתמש המקומי של Genkit להרצה ולבדיקה של מודלים, הנחיות ועוד.
יצירת פלאגין
ב-Go, פלאגין של Genkit הוא פשוט חבילת קוד שתואמת לקבוצה קטנה של מוסכמות. מודול אחד יכול להכיל כמה יישומי פלאגין.
מזהה ספק
לכל פלאגין חייב להיות מחרוזת מזהה ייחודית שמבדילה אותו יישומי פלאגין אחרים. Genkit משתמש במזהה הזה כמרחב שמות לכל משאב שהפלאגין מגדיר, כדי למנוע התנגשויות בין שמות עם יישומי פלאגין אחרים.
לדוגמה, אם למפצה יש מזהה yourplugin
והוא מספק מודל שנקרא text-generator
, מזהה המודל המלא יהיה yourplugin/text-generator
.
לא צריך לייצא את מזהה הספק, אבל צריך להגדיר אותו פעם אחת את הפלאגין ולהשתמש בו באופן עקבי כשיש צורך בפונקציית Genkit.
const providerID = "yourplugin"
ייצוא רגיל
כל פלאגין צריך להגדיר ולייצא את הסמלים הבאים:
פונקציה
Init()
עם הצהרה כמו:func Init(ctx context.Context, cfg *Config) (err error)
השמטת פרמטרים שאתם לא משתמשים בהם (לדוגמה, יכול להיות שאין לכם
cfg
פרמטר אם הפלאגין לא מספק תצורה ברמת הפלאגין האפשרויות הבאות).בפונקציה הזו, מבצעים את כל שלבי ההגדרה הנדרשים לפי הפלאגין. לדוגמה:
- צריך לוודא שצוינו את כל הערכים הנדרשים של ההגדרה ולהקצות אותם ערכי ברירת מחדל לכל הגדרה אופציונלית שלא פורטה.
- מוודאים שאפשרויות התצורה ניתנות לשימוש יחד.
- יוצרים את המשאבים המשותפים הנדרשים לשאר הפלאגין. עבור לדוגמה, ליצור לקוחות לכל השירותים שיש לפלאגין גישה אליהם.
במידת האפשר, המשאבים שסופקו על ידי הפלאגין לא צריכים להניח שהמשתמש ביצע פעולה כלשהי מלבד קריאה ל-
Init
.עליך להגדיר ולייצא את הפונקציה הזו, גם אם הפלאגין לא מחייב כל אתחול. במקרה כזה,
Init
יכולה פשוט להחזיר שגיאתnil
.סוג מבנה
Config
. הסוג הזה צריך להקיף את כל ההגדרות האישיות אפשרויות שאושרו על ידיInit
.לאפשרויות של הפלאגין שהן ערכים סודיים, כמו מפתחות API, צריך להציע גם אפשרות
Config
וגם משתנה סביבה שמוגדר כברירת מחדל כדי להגדיר אותה. כך הפלאגין יוכל לנצל את תכונות הניהול הסודיות שמציעות הרבה ספקי אירוח (כמו Cloud Secret Manager, שמאפשרת לשימוש ב-Cloud Run). לדוגמה:type Config struct { ExampleAPIKey string } func Init(cfg *Config) (err error) { apiKey := cfg.ExampleAPIKey if apiKey == "" { apiKey = os.Getenv("EXAMPLE_API_KEY") } if apiKey == "" { return fmt.Errorf(`the Example plug-in requires you to specify an API key for the Example service, either by passing it to example.Init() or by setting the EXAMPLE_API_KEY environment variable`) } return nil }
פיתוח תכונות של יישומי פלאגין
פלאגין אחד יכול להפעיל הרבה דברים חדשים ב-Genkit. לדוגמה, הפלאגין של Vertex AI מפעיל כמה מודלים חדשים וגם כלי הטמעה.
יישומי פלאגין של דגם
יישומי פלאגין של מודל Genkit מוסיפים ל-Genkit מודל אחד או יותר של בינה מלאכותית גנרטיבית מרשם. מודל מייצג כל מודל גנרטיבי שיכול לקבל הנחיה כקלט וליצור טקסט, מדיה או נתונים כפלט.
למידע נוסף, ראו כתיבת פלאגין של מודל Genkit.
פלאגינים של טלמטריה
הפלאגינים של טלמטריה של Genkit מגדירים את הכלי של Genkit ל-OpenTelemetry כך שייצא עקבות, מדדים ויומנים לכלי מעקב או כלי וויזואליזציה מסוימים.
למידע נוסף, ראו כתיבת פלאגין טלמטריה של Genkit.
פרסום פלאגין
אפשר לפרסם יישומי פלאגין של Genkit כחבילות Go רגילות. כדי להגדיל
יכולת גילוי, השם של החבילה צריך להיות genkit
במקום כלשהו
אפשר למצוא אותן בעזרת חיפוש פשוט
pkg.go.dev
. כל אחד מהקריטריונים הבאים
בחירות טובות:
github.com/yourorg/genkit-plugins/servicename
github.com/yourorg/your-repo/genkit/servicename