אפשר לפרוס תהליכים של Genkit כשירותי אינטרנט באמצעות כל שירות שיכול לארח קובץ בינארי של Go. בדוגמה הזו, בדף הזה נסביר את התהליך הכללי לפריסה של תהליך לדוגמה שמוגדר כברירת מחדל, ונציין איפה צריך לבצע פעולות ספציפיות לספק.
יוצרים ספרייה לפרויקט לדוגמה של Genkit:
mkdir -p ~/tmp/genkit-cloud-project
cd ~/tmp/genkit-cloud-project
אם אתם מתכוונים להשתמש בסביבת פיתוח משולבת (IDE), פותחים אותה בספרייה הזו.
מפעילים מודול Go בספריית הפרויקט:
go mod init example/cloudrun
go get github.com/firebase/genkit/go
יצירת אפליקציה לדוגמה באמצעות Genkit:
package main import ( "context" "fmt" "log" "net/http" "os" "github.com/firebase/genkit/go/ai" "github.com/firebase/genkit/go/genkit" "github.com/firebase/genkit/go/plugins/googlegenai" "github.com/firebase/genkit/go/plugins/server" ) func main() { ctx := context.Background() // Initialize Genkit with the Google AI plugin and Gemini 2.0 Flash. // Alternatively, use &googlegenai.VertexAI{} and "vertexai/gemini-2.0-flash" // to use Vertex AI as the provider instead. g, err := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}), genkit.WithDefaultModel("googleai/gemini-2.0-flash"), ) if err != nil { log.Fatalf("failed to initialize Genkit: %w", err) } flow := genkit.DefineFlow(g, "jokesFlow", func(ctx context.Context, topic string) (string, error) { resp, err := genkit.Generate(ctx, g, ai.WithPrompt(`Tell a short joke about %s. Be creative!`, topic), ) if err != nil { return "", fmt.Errorf("failed to generate joke: %w", err) } return resp.Text(), nil }) mux := http.NewServeMux() mux.HandleFunc("POST /jokesFlow", genkit.Handler(flow)) log.Fatal(server.Start(ctx, "127.0.0.1:"+os.Getenv("PORT"), mux)) }
כדאי להטמיע אימות והרשאה כדי לפקח על הגישה לתהליכים שאתם מתכננים לפרוס.
מאחר שרוב שירותי ה-AI הגנרטיביים מדודים, סביר להניח שלא תרצו לאפשר גישה פתוחה לכל נקודות הקצה שמפעילות אותם. חלק משירותי האירוח מספקים שכבת אימות כחזית לאפליקציות שנפרסות בהם, שאפשר להשתמש בה למטרה הזו.
איך מאפשרים לפונקציה הפרוסה לגשת לפרטי הכניסה ל-API. מבצעים אחת מהפעולות הבאות, בהתאם לספק המודל שבחרתם:
Gemini (AI מבית Google)
מוודאים ש-Google AI זמין באזור שלכם.
יוצרים מפתח API ל-Gemini API באמצעות Google AI Studio.
מאפשרים את הגישה למפתח ה-API בסביבה הפרוסה.
רוב מארחי האפליקציות מספקים מערכת כלשהי לטיפול מאובטח בסודות, כמו מפתחות API. לרוב, הסודות האלה זמינים לאפליקציה שלכם בתור משתני סביבה. אם אתם יכולים להקצות את מפתח ה-API למשתנה
GEMINI_API_KEY
, Genkit ישתמש בו באופן אוטומטי. אחרת, צריך לשנות את המבנה של הפלאגיןgooglegenai.GoogleAI
כדי להגדיר את המפתח באופן מפורש. (אבל אל תטמיעו את המפתח ישירות בקוד! משתמשים במתקני ניהול הסודות שספק האירוח מספק).Gemini (Vertex AI)
במסוף Cloud, מפעילים את Vertex AI API בפרויקט.
בדף IAM, יוצרים חשבון שירות כדי לגשת ל-Vertex AI API, אם עדיין אין לכם חשבון כזה.
מקצים לחשבון את התפקיד Vertex AI User.
מגדירים את Application Default Credentials בסביבת האירוח.
מגדירים את הפלאגין עם מזהה הפרויקט ב-Google Cloud והמיקום של Vertex AI API שבו רוצים להשתמש. אפשר לעשות זאת על ידי הגדרת משתני הסביבה
GOOGLE_CLOUD_PROJECT
ו-GOOGLE_CLOUD_LOCATION
בסביבת האירוח, או ב-constructor שלgooglegenai.VertexAI{}
.הסוד היחיד שצריך להגדיר במדריך הזה הוא של ספק המודל, אבל באופן כללי צריך לעשות משהו דומה לכל שירות שבו נעשה שימוש בתהליך.
אופציונלי: אפשר לנסות את התהליך בממשק המשתמש למפתחים:
מגדירים את הסביבה המקומית של ספק המודל שבחרתם:
Gemini (AI מבית Google)
export GEMINI_API_KEY=<your API key>
Gemini (Vertex AI)
export GOOGLE_CLOUD_PROJECT=<your project ID>
export GOOGLE_CLOUD_LOCATION=us-central1
gcloud auth application-default login
מפעילים את ממשק המשתמש:
genkit start -- go run .
בממשק המשתמש של המפתחים (http://localhost:4000/), מריצים את התהליך:
לוחצים על jokesFlow.
בכרטיסייה Input JSON, נותנים נושא למודל:
"bananas"
לוחצים על Run.
אם עד עכשיו הכול פועל כצפוי, תוכלו ליצור ולפרוס את התהליך באמצעות הכלים של הספק.