Genkit กับ Cloud Run

คุณสามารถทำให้เวิร์กโฟลว์ Genkit ใช้งานได้เป็นเว็บเซอร์วิสโดยใช้ Cloud Run หน้านี้จะอธิบายขั้นตอนต่างๆ ในการติดตั้งใช้งานตัวอย่างโฟลว์เริ่มต้นให้คุณทราบ

  1. ติดตั้ง Google Cloud CLI หากยังไม่ได้ดำเนินการ

  2. สร้างโปรเจ็กต์ Google Cloud ใหม่โดยใช้คอนโซล Cloud หรือเลือกโปรเจ็กต์ที่มีอยู่ โปรเจ็กต์ต้องลิงก์กับบัญชีสำหรับการเรียกเก็บเงิน

    หลังจากสร้างหรือเลือกโปรเจ็กต์แล้ว ให้กําหนดค่า Google Cloud CLI เพื่อใช้งาน ดังนี้

    gcloud auth login
    gcloud init
  3. สร้างไดเรกทอรีสำหรับโปรเจ็กต์ตัวอย่าง Genkit

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

    หากจะใช้ IDE ให้เปิด IDE ไปยังไดเรกทอรีนี้

  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. ทำให้ข้อมูลเข้าสู่ระบบ API พร้อมใช้งานสำหรับฟังก์ชันที่ติดตั้งใช้งานแล้ว เลือกข้อมูลเข้าสู่ระบบที่ต้องการตามตัวอย่างด้านบน

    Gemini (AI ของ Google)

    1. ตรวจสอบว่า AI ของ Google พร้อมให้บริการในภูมิภาคของคุณ

    2. สร้างคีย์ API สำหรับ Gemini API โดยใช้ Google AI Studio

    3. ทำให้คีย์ API พร้อมใช้งานในสภาพแวดล้อม Cloud Run โดยทำดังนี้

      1. เปิดใช้ Secret Manager API ในคอนโซล Cloud
      2. ในหน้าเครื่องมือจัดการข้อมูลลับ ให้สร้างข้อมูลลับใหม่ที่มีคีย์ API
      3. หลังจากสร้างข้อมูลลับแล้ว ให้ไปที่หน้าเดียวกันแล้วให้สิทธิ์เข้าถึงข้อมูลลับแก่บัญชีบริการประมวลผลข้อมูลเริ่มต้นด้วยบทบาทผู้เข้าถึงข้อมูลลับของผู้จัดการข้อมูลลับ (คุณสามารถค้นหาชื่อบัญชีบริการ Compute เริ่มต้นได้ในหน้า IAM)

      ในขั้นตอนถัดไป เมื่อคุณทำให้บริการใช้งานได้ คุณจะต้องอ้างอิงถึงชื่อของข้อมูลลับนี้

    Gemini (Vertex AI)

    1. ในคอนโซลระบบคลาวด์ ให้เปิดใช้ Vertex AI API สำหรับโปรเจ็กต์

    2. ในหน้า IAM ให้ตรวจสอบว่าบัญชีบริการ Compute เริ่มต้นได้รับบทบาทผู้ใช้ Vertex AI แล้ว

    ข้อมูลลับเพียงอย่างเดียวที่คุณต้องตั้งค่าสำหรับบทแนะนำนี้คือข้อมูลลับของผู้ให้บริการโมเดล แต่โดยทั่วไปแล้ว คุณต้องทําสิ่งคล้ายกันสําหรับบริการแต่ละรายการที่โฟลว์ใช้

  7. ไม่บังคับ: ลองใช้ขั้นตอนใน UI สําหรับนักพัฒนาซอฟต์แวร์

    1. ตั้งค่าสภาพแวดล้อมในเครื่องสําหรับผู้ให้บริการโมเดลที่คุณเลือก

      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
    2. เริ่ม UI

      genkit start -- go run .
    3. ใน UI ของนักพัฒนาซอฟต์แวร์ (http://localhost:4000/) ให้ทำตามขั้นตอนต่อไปนี้

      1. คลิก jokesFlow

      2. ในแท็บ Input JSON ให้ระบุเรื่องสำหรับโมเดล

        "bananas"
        
      3. คลิกเรียกใช้

  8. หากทุกอย่างทํางานได้ตามที่คาดไว้จนถึงตอนนี้ คุณสามารถสร้างและติดตั้งใช้งานขั้นตอนได้โดยทำดังนี้

    Gemini (AI ของ 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 จะกำหนดค่าบริการให้ต้องใช้ข้อมูลเข้าสู่ระบบ IAM ดูข้อมูลเกี่ยวกับการระบุข้อมูลเข้าสู่ระบบเหล่านี้ได้ในหัวข้อการตรวจสอบสิทธิ์ในเอกสารประกอบของ Cloud Run

หลังจากการทําให้ใช้งานได้เสร็จสิ้น เครื่องมือจะพิมพ์ URL ของบริการ คุณทดสอบcurlได้ดังนี้

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