Cloud Run के साथ Genkit

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

  1. अगर आपने Google Cloud सीएलआई पहले से इंस्टॉल नहीं किया है, तो इसे इंस्टॉल करें.

  2. Cloud Console का इस्तेमाल करके, Google Cloud का नया प्रोजेक्ट बनाएं या कोई मौजूदा प्रोजेक्ट चुनें. प्रोजेक्ट, किसी बिलिंग खाते से जुड़ा होना चाहिए.

    प्रोजेक्ट बनाने या चुनने के बाद, उसका इस्तेमाल करने के लिए Google Cloud सीएलआई को कॉन्फ़िगर करें:

    gcloud auth login
    gcloud init
  3. Genkit के सैंपल प्रोजेक्ट के लिए डायरेक्ट्री बनाएं:

    mkdir -p ~/tmp/genkit-cloud-project
    cd ~/tmp/genkit-cloud-project

    अगर आपको किसी आईडीई का इस्तेमाल करना है, तो उसे इस डायरेक्ट्री में खोलें.

  4. अपनी प्रोजेक्ट डायरेक्ट्री में Go मॉड्यूल को शुरू करना:

    go mod init example/cloudrun
    go mod get github.com/firebase/genkit/go
  5. 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))
    }
    
  6. डिप्लॉय किए गए फ़ंक्शन के लिए, एपीआई क्रेडेंशियल उपलब्ध कराएं. ऊपर दिए गए सैंपल के आधार पर, चुनें कि आपको कौनसे क्रेडेंशियल चाहिए:

    Gemini (Google का एआई)

    1. पक्का करें कि Google का एआई आपके इलाके में उपलब्ध हो.

    2. Google AI Studio का इस्तेमाल करके, Gemini API के लिए एपीआई पासकोड जनरेट करें.

    3. Cloud Run एनवायरमेंट में एपीआई पासकोड उपलब्ध कराएं:

      1. Cloud console में, Secret Manager API को चालू करें.
      2. Secret Manager पेज पर, अपनी एपीआई कुंजी वाला नया सीक्रेट बनाएं.
      3. सीक्रेट बनाने के बाद, उसी पेज पर अपने डिफ़ॉल्ट कंप्यूट सर्विस खाते को Secret Manager Secret Accessor की भूमिका के साथ सीक्रेट का ऐक्सेस दें. (IAM पेज पर, डिफ़ॉल्ट कंप्यूट सेवा खाते का नाम देखा जा सकता है.)

      बाद के चरण में, अपनी सेवा को डिप्लॉय करते समय, आपको इस सीक्रेट का नाम बताना होगा.

    Gemini (Vertex AI)

    1. Cloud Console में, अपने प्रोजेक्ट के लिए Vertex AI API को चालू करें.

    2. IAM पेज पर, पक्का करें कि डिफ़ॉल्ट कंप्यूट सेवा खाते को Vertex AI उपयोगकर्ता की भूमिका दी गई हो.

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

  7. ज़रूरी नहीं: डेवलपर यूज़र इंटरफ़ेस (यूआई) में अपना फ़्लो आज़माएं:

    1. मॉडल उपलब्ध कराने वाली कंपनी के लिए, अपना लोकल एनवायरमेंट सेट अप करें:

      Gemini (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
    2. यूज़र इंटरफ़ेस (यूआई) शुरू करना:

      genkit start -- go run .
    3. डेवलपर यूज़र इंटरफ़ेस (यूआई) (http://localhost:4000/) में, फ़्लो चलाएं:

      1. jokesFlow पर क्लिक करें.

      2. इनपुट JSON टैब पर, मॉडल के लिए कोई विषय दें:

        "bananas"
        
      3. चालू करें पर क्लिक करें.

  8. अगर अब तक सब कुछ उम्मीद के मुताबिक काम कर रहा है, तो फ़्लो को बनाया और डिप्लॉय किया जा सकता है:

    Gemini (Google का एआई)

    gcloud run deploy --port 3400 \
      --update-secrets=GEMINI_API_KEY=<your-secret-name>:latest

    Gemini (Vertex AI)

    gcloud run deploy --port 3400 \
      --set-env-vars GOOGLE_CLOUD_PROJECT=<your-gcloud-project> \
      --set-env-vars GOOGLE_CLOUD_LOCATION=us-central1

    (GOOGLE_CLOUD_LOCATION उस Vertex API क्षेत्र को कॉन्फ़िगर करता है जिसका आपको इस्तेमाल करना है.)

    अगर आपको पुष्टि किए बिना अनुरोध करने की अनुमति देनी है, तो N चुनें. N का जवाब देने पर, आपकी सेवा को आईएएम क्रेडेंशियल की ज़रूरत होगी. इन क्रेडेंशियल को उपलब्ध कराने के बारे में जानने के लिए, Cloud Run के दस्तावेज़ों में पुष्टि देखें.

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

curl -X POST https://<service-url>/menuSuggestionFlow \
  -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  -H "Content-Type: application/json" -d '"bananas"'