ספריות Firebase Genkit ל-Go זמינות עכשיו בתצוגה מקדימה! ספריות Go נמצאות כרגע בגרסת אלפא, ולכן יכול להיות שתראו שינויים ב-API ושינויים פונקציונליים עם התקדמות הפיתוח. מומלץ להשתמש בה רק לצורך פיתוח אב טיפוס ולצורך בדיקה.
אם נתקלתם בבעיות בספריות או במסמכי התיעוד, תוכלו לדווח עליהן במאגר שלנו ב-GitHub.
כדי להתחיל להשתמש ב-Genkit, צריך להתקין את ה-CLI של Genkit ולהריץ את genkit init
בפרויקט Go. בהמשך הדף נסביר איך עושים את זה.
דרישות
Go מגרסה 1.22 ואילך. תוכלו להיעזר במאמר הורדה והתקנה במסמכי התיעוד הרשמיים של Go.
Node.js 20 ואילך (ל-CLI ולממשק המשתמש של Genkit). בקטע הבא מופיע מדריך קצר להתקנת Node.
התקנת Genkit
אם עדיין לא התקנתם את Node 20 ואילך במערכת, כדאי לעשות זאת עכשיו.
המלצה: הכלים
nvm
ו-nvm-windows
הם דרך נוחה להתקין גרסאות ספציפיות של Node, אם הוא עדיין לא מותקן במערכת. הכלים האלה מתקינים את Node לכל משתמש בנפרד, כך שאין צורך לבצע שינויים ברמת המערכת.כדי להתקין את
nvm
:Linux, macOS וכו'
מריצים את הפקודה הבאה:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Windows
מורידים ומריצים את מנהל ההתקנה כפי שמתואר במסמכי nvm-windows.
לאחר מכן, כדי להתקין את Node ו-
npm
, פותחים מעטפת חדשה ומריצים את הפקודה הבאה:nvm install 20
כדי להתקין את ה-CLI של Genkit, מריצים את הפקודה הבאה:
npm i -g genkit
הפקודה הזו מתקינה את ה-CLI של Genkit בספריית ההתקנה של Node, כדי שאפשר יהיה להשתמש בו מחוץ לפרויקט Node.
יוצרים פרויקט לדוגמה וחוקרים אותו
יוצרים ספריית פרויקט חדשה:
mkdir genkit-intro && cd genkit-intro
מפעילים פרויקט Genkit:
genkit init
בוחרים את
Go
כסביבת זמן הריצה.בוחרים את הדגם:
Gemini (AI מבית Google)
הדרך הפשוטה ביותר להתחיל היא באמצעות Google AI Gemini API. מוודאים שהיא זמינה באזור שלכם.
יוצרים מפתח API ל-Gemini API באמצעות Google AI Studio. לאחר מכן, מגדירים את משתנה הסביבה
GOOGLE_GENAI_API_KEY
למפתח:export GOOGLE_GENAI_API_KEY=<your API key>
Gemini (Vertex AI)
אם ה-Google AI Gemini API לא זמין באזור שלכם, כדאי להשתמש ב-Vertex AI API, שמציע גם את Gemini ומודלים אחרים. תצטרכו פרויקט Google Cloud עם חיוב מופעל, להפעיל את AI Platform API ולהגדיר כמה משתני סביבה נוספים:
gcloud services enable aiplatform.googleapis.com
export GCLOUD_PROJECT=<your project ID>
export GCLOUD_LOCATION=us-central1
נותנים שם למודול. לדוגמה:
example/genkit-intro
בוחרים תשובות ברירת מחדל לשאר השאלות, והתיקייה של הפרויקט תיושם עם קוד לדוגמה.
הפקודה
genkit init
יוצרת מודול Go לדוגמה ומתקינה את יחסי התלות הנדרשים. הקובץmain.go
מכיל תהליך יחיד,menuSuggestionFlow
, שמנחה LLM להציע פריט למסעדה עם עיצוב נתון.הקובץ הזה נראה בערך כך (שלבי ההגדרה של הפלאגין עשויים להיראות אחרת אם בחרתם ב-Vertex AI):
package main import ( "context" "errors" "fmt" "log" // Import Genkit and the Google AI plugin "github.com/firebase/genkit/go/ai" "github.com/firebase/genkit/go/genkit" "github.com/firebase/genkit/go/plugins/googleai" ) func main() { ctx := context.Background() // Initialize the Google AI plugin. When you pass nil for the // Config parameter, the Google AI plugin will get the API key from the // GOOGLE_GENAI_API_KEY environment variable, which is the recommended // practice. if err := googleai.Init(ctx, nil); err != nil { log.Fatal(err) } // Define a simple flow that prompts an LLM to generate menu suggestions. genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) { // The Google AI API provides access to several generative models. Here, // we specify gemini-1.5-flash. m := googleai.Model("gemini-1.5-flash") if m == nil { return "", errors.New("menuSuggestionFlow: failed to find model") } // Construct a request and send it to the model API (Google AI). resp, err := ai.Generate(ctx, m, ai.WithConfig(&ai.GenerationCommonConfig{Temperature: 1}), ai.WithTextPrompt(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))) if err != nil { return "", err } // Handle the response from the model API. In this sample, we just // convert it to a string. but more complicated flows might coerce the // response into structured output or chain the response into another // LLM call. text := resp.Text() return text, nil }) // Initialize Genkit and start a flow server. This call must come last, // after all of your plug-in configuration and flow definitions. When you // pass a nil configuration to Init, Genkit starts a local flow server, // which you can interact with using the developer UI. if err := genkit.Init(ctx, nil); err != nil { log.Fatal(err) } }
כשתתחילו לפתח את תכונות ה-AI של האפליקציה באמצעות Genkit, סביר להניח שתיצרו תהליכים עם כמה שלבים, כמו עיבוד מקדים של קלט, בניית הנחיות מתוחכמות יותר, שילוב של מקורות מידע חיצוניים ליצירה עם שיפור על סמך אחזור (RAG) ועוד.
עכשיו אפשר להריץ את התכונות של Genkit ואת הפרויקט לדוגמה באופן מקומי במחשב. מורידים ומפעילים את ממשק המשתמש למפתחים של Genkit:
genkit start
ממשק המשתמש של Genkit למפתחים פועל עכשיו במחשב. כשמריצים מודלים או תהליכים בשלב הבא, המכונה מבצעת את משימות התזמור הנדרשות כדי שהשלבים בתהליך יפעלו יחד. הקריאות לשירותים חיצוניים, כמו Gemini API, ימשיכו להתבצע לשרתים פעילים.
בנוסף, מכיוון שאתם נמצאים בסביבת פיתוח, Genkit ישמור את הטרייסים ואת מצב התהליך בקבצים מקומיים.
ממשק המשתמש של Genkit למפתחים מוריד ופותח באופן אוטומטי כשמריצים את הפקודה
genkit start
.ממשק המשתמש למפתחים מאפשר לכם לראות אילו תהליכים הגדרתם ואילו מודלים הגדרתם, להריץ אותם ולבדוק את עקבות ההפעלות הקודמות. אפשר לנסות כמה מהתכונות האלה:
בכרטיסייה Run תוצג רשימה של כל התהליכים שהגדרתם וכל המודלים שהוגדרו על ידי הפלאגינים.
לוחצים על menuSuggestionFlow ומנסים להריץ אותו עם טקסט קלט כלשהו (למשל,
"cat"
). אם הכל יתבצע כמו שצריך, תקבלו הצעה לתפריט של מסעדה עם נושא חתולים.בכרטיסייה Inspect תוצג היסטוריית ההפעלות של התהליך. לכל תהליך תוכלו לראות את הפרמטרים שהועברו לתהליך ואת המעקב אחרי כל שלב במהלך הפעלתו.