ל-Firebase Genkit יש שילובים מובנים שיעזרו לכם לפרוס את התהליכים ב-Cloud Functions for Firebase וב-Google Cloud Run, אבל אפשר גם לפרוס את התהליכים בכל פלטפורמה שיכולה להציג אפליקציית Express.js, בין אם מדובר בשירות בענן ובין אם מדובר בשירות באירוח עצמי.
בדוגמה הבאה מוסבר איך לפרוס את תהליך הדוגמה שמוגדר כברירת מחדל.
לפני שמתחילים
- Node.js מגרסה 20 ואילך: מוודאים שבסביבה מותקנת גרסת Node.js מגרסה 20 ואילך (node --version).
- כדאי להכיר את הרעיון של תהליכים ב-Genkit.
1. הגדרת הפרויקט
יוצרים ספרייה לפרויקט:
export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
mkdir -p $GENKIT_PROJECT_HOME
cd $GENKIT_PROJECT_HOME
איך מפעילים פרויקט Node.js:
npm init -y
מתקינים את Genkit ואת יחסי התלות הנדרשים:
npm install --save genkit @genkit-ai/googleai
npm install -D genkit-cli typescript tsx
2. הגדרת אפליקציית Genkit
מגדירים תהליך ודוגמת שרת:
בקובץ
src/index.ts
, מגדירים תהליך לדוגמה ומגדירים את שרת התהליך:import { genkit } from 'genkit'; import { googleAI, gemini15Flash } from '@genkit-ai/googleai'; const ai = genkit({ plugins: [googleAI()], model: gemini15Flash, }); const helloFlow = ai.defineFlow( { name: 'helloFlow', inputSchema: z.object({ name: z.string() }), outputSchema: z.string(), }, async (input) => { const { text } = ai.generate('Say hello to ${input.name}'); return text; } ); ai.startFlowServer({ flows: [menuSuggestionFlow], });
יש גם כמה פרמטרים אופציונליים ל-
startFlowServer
שאפשר לציין:port
: יציאת הרשת להאזנה. אם לא צוין יציאה, השרת מקשיב ביציאה שמוגדרת במשתנה הסביבה PORT. אם לא מגדירים את PORT, הערך שמוגדר כברירת מחדל הוא 3400.cors
: מדיניות ה-CORS של שרת התהליך. אם אתם מתכוונים לגשת לנקודות הקצה האלה מאפליקציית אינטרנט, סביר להניח שתצטרכו לציין זאת.pathPrefix
: תחילית נתיב אופציונלית שאפשר להוסיף לפני נקודות הקצה של התהליך.jsonParserOptions
: אפשרויות להעברה אל מנתח גוף ה-JSON של Express
מגדירים את פרטי הכניסה של ספק המודל:
מגדירים את משתני הסביבה הנדרשים לספק המודל. במדריך הזה נשתמש ב-Gemini API מ-Google AI Studio כדוגמה.
קבלת מפתח API מ-Google AI Studio
אחרי שיוצרים מפתח API, מגדירים את משתנה הסביבה
GOOGLE_GENAI_API_KEY
למפתח באמצעות הפקודה הבאה:export GOOGLE_GENAI_API_KEY=<your API key>
ספקים שונים של פריסה יגנו על מפתח ה-API בסביבה שלהם בדרכים שונות. מטעמי אבטחה, חשוב לוודא שמפתח ה-API לא נחשף באופן ציבורי.
3. הכנת הפרויקט ב-Node.js לפריסה
הוספת סקריפטים להתחלה ול-build לתיקייה package.json
כדי לפרוס פרויקט Node.js, מגדירים סקריפטים של start
ו-build
ב-package.json
. בפרויקט TypeScript, הסקריפטים האלה ייראו כך:
"scripts": {
"start": "node --watch lib/index.js",
"build": "tsc"
},
פיתוח ובדיקה באופן מקומי
מריצים את פקודת ה-build, מפעילים את השרת ובודקים אותו באופן מקומי כדי לוודא שהוא פועל כצפוי.
npm run build
npm start
בחלון מסוף אחר, בודקים את נקודת הקצה:
curl -X POST "http://127.0.0.1:3400/menuSuggestionFlow" \
-H "Content-Type: application/json" \
-d '{"data": "banana"}'
אופציונלי: הפעלת ממשק המשתמש למפתחים
אתם יכולים להשתמש בממשק המשתמש למפתחים כדי לבדוק תהליכים באופן אינטראקטיבי במהלך הפיתוח:
npx genkit start -- npm run start
עוברים אל http://localhost:4000/flows כדי לבדוק את התהליכים בממשק המשתמש.
4. פריסת הפרויקט
אחרי שמגדירים את הפרויקט ובודקים אותו באופן מקומי, אפשר לפרוס אותו בכל פלטפורמה שתואמת ל-Node.js. שלבי הפריסה משתנים בהתאם לספק, אבל באופן כללי, צריך להגדיר את ההגדרות הבאות:
הגדרה | ערך |
---|---|
זמן ריצה | Node.js 20 ואילך |
פקודת build | npm run build |
הפקודה Start | npm start |
משתני סביבה | הגדרת GOOGLE_GENAI_API_KEY=<your-api-key> וסודות נדרשים אחרים |
הפקודה start
(npm start
) צריכה להפנות לנקודת הכניסה שעבר תהליך הידור, בדרך כלל lib/index.js
. חשוב להוסיף את כל משתני הסביבה הנדרשים לפלטפורמת הפריסה.
אחרי הפריסה, אפשר להשתמש בכתובת ה-URL של השירות שסופקה כדי להפעיל את התהליך כנקודת קצה מסוג HTTPS.