किसी भी Node.js प्लैटफ़ॉर्म पर फ़्लो डिप्लॉय करें

Firebase Genkit में पहले से इंटिग्रेशन मौजूद होते हैं. इनकी मदद से, Firebase के लिए Cloud Functions और Google Cloud Run पर फ़्लो डिप्लॉय किए जा सकते हैं. हालांकि, अपने फ़्लो को किसी भी ऐसे प्लैटफ़ॉर्म पर भी डिप्लॉय किया जा सकता है जो Express.js ऐप्लिकेशन को दिखा सकता है. भले ही, वह क्लाउड सेवा हो या खुद होस्ट किया गया हो.

उदाहरण के तौर पर, इस पेज पर डिफ़ॉल्ट सैंपल फ़्लो को डिप्लॉय करने की प्रोसेस के बारे में बताया गया है.

शुरू करने से पहले

  • Node.js 20 और इसके बाद के वर्शन: पुष्टि करें कि आपके एनवायरमेंट में Node.js का 20 या इससे नया वर्शन (node --version) इस्तेमाल किया जा रहा है.
  • आपको Genkit के फ़्लो के कॉन्सेप्ट के बारे में जानकारी होनी चाहिए.

1. अपना प्रोजेक्ट सेट अप करना

  1. प्रोजेक्ट के लिए डायरेक्ट्री बनाएं:

    export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
    mkdir -p $GENKIT_PROJECT_HOME
    cd $GENKIT_PROJECT_HOME
  2. Node.js प्रोजेक्ट शुरू करना:

    npm init -y
  3. Genkit और ज़रूरी डिपेंडेंसी इंस्टॉल करना:

    npm install --save genkit @genkit-ai/googleai
    npm install -D genkit-cli typescript tsx

2. अपना Genkit ऐप्लिकेशन कॉन्फ़िगर करना

  1. सैंपल फ़्लो और सर्वर सेट अप करना:

src/index.ts में, सैंपल फ़्लो तय करें और फ़्लो सर्वर को कॉन्फ़िगर करें:

  import { genkit } from 'genkit';
  import { googleAI, gemini15Flash } from '@genkit-ai/googleai';
  import { startFlowServer } from '@genkit-ai/express';

  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;
    }
  );

  startFlowServer({
    flows: [menuSuggestionFlow],
  });

startFlowServer के लिए कुछ वैकल्पिक पैरामीटर भी हैं, जिन्हें तय किया जा सकता है:

  • port: वह नेटवर्क पोर्ट जिस पर सुनना है. अगर कोई पोर्ट नहीं दिया गया है, तो सर्वर उस पोर्ट पर सुनता है जो PORT एनवायरमेंट वैरिएबल में तय किया गया है. अगर PORT सेट नहीं है, तो डिफ़ॉल्ट रूप से 3400 पर सुनता है.
  • cors: फ़्लो सर्वर की CORS नीति. अगर आपको वेब ऐप्लिकेशन से इन एंडपॉइंट को ऐक्सेस करना है, तो आपको इसकी जानकारी देनी होगी.
  • pathPrefix: फ़्लो के एंडपॉइंट से पहले जोड़ने के लिए, पाथ प्रीफ़िक्स (पाथ के पहले जोड़ा जाने वाला शब्द). यह ज़रूरी नहीं है.
  • jsonParserOptions: Express के JSON बॉडी पार्सर को पास करने के विकल्प
  1. मॉडल उपलब्ध कराने वाली कंपनी के क्रेडेंशियल सेट अप करना:

मॉडल उपलब्ध कराने वाली कंपनी के लिए, ज़रूरी एनवायरमेंट वैरिएबल कॉन्फ़िगर करें. इस गाइड में, उदाहरण के तौर पर Google AI Studio के Gemini API का इस्तेमाल किया गया है.

Google AI Studio से एपीआई पासकोड पाना

एपीआई कुंजी बनाने के बाद, GEMINI_API_KEY एनवायरमेंट वैरिएबल को अपनी कुंजी पर सेट करें. इसके लिए, यह कमांड इस्तेमाल करें:

  export GEMINI_API_KEY=<your API key>

डिप्लॉयमेंट के लिए अलग-अलग कंपनियां, अपने एनवायरमेंट में आपकी एपीआई पासकोड को सुरक्षित रखने के लिए अलग-अलग तरीके अपनाती हैं. सुरक्षा के लिए, पक्का करें कि आपकी एपीआई कुंजी सार्वजनिक तौर पर उपलब्ध न हो.

3. अपने Node.js प्रोजेक्ट को डिप्लॉयमेंट के लिए तैयार करना

package.json में शुरू करने और बनाने की स्क्रिप्ट जोड़ें

Node.js प्रोजेक्ट को डिप्लॉय करने के लिए, package.json में start और build स्क्रिप्ट तय करें. TypeScript प्रोजेक्ट के लिए, ये स्क्रिप्ट इस तरह दिखेंगी:

"scripts": {
  "start": "node --watch lib/index.js",
  "build": "tsc"
},

स्थानीय तौर पर बनाना और टेस्ट करना

'बिल्ड करें' कमांड चलाएं. इसके बाद, सर्वर को शुरू करें और स्थानीय तौर पर इसकी जांच करें, ताकि यह पक्का किया जा सके कि यह आपकी उम्मीद के मुताबिक काम कर रहा है.

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 या उसके बाद का वर्शन
बिल्ड करने का निर्देश npm run build
Start कमांड npm start
एनवायरमेंट वैरिएबल GEMINI_API_KEY=<your-api-key> और अन्य ज़रूरी सीक्रेट सेट करें.

start कमांड (npm start) को आपके संकलित एंट्री पॉइंट पर ले जाना चाहिए. आम तौर पर, यह lib/index.js होता है. अपने डिप्लॉयमेंट प्लैटफ़ॉर्म के लिए, सभी ज़रूरी एनवायरमेंट वैरिएबल जोड़ना न भूलें.

डिप्लॉय करने के बाद, दिए गए सेवा यूआरएल का इस्तेमाल करके, अपने फ़्लो को एचटीटीपीएस एंडपॉइंट के तौर पर शुरू किया जा सकता है.