Firebase Genkit พร้อม Cloud Run

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

  1. ติดตั้ง Google Cloud CLI หาก ให้ดำเนินการดังนี้

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

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

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

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

    หากคุณจะใช้ IDE ให้เปิดในไดเรกทอรีนี้

  4. เริ่มต้นโมดูล Go ในไดเรกทอรีโปรเจ็กต์ โดยทำดังนี้

    go mod init example/cloudrun
    
  5. เริ่มต้น Genkit ในโปรเจ็กต์ของคุณ

    genkit init
    

    เลือกผู้ให้บริการโมเดลที่ต้องการใช้

    ยอมรับค่าเริ่มต้นสำหรับข้อความแจ้งที่เหลือ เครื่องมือ genkit จะสร้าง ไฟล์ต้นฉบับตัวอย่างสำหรับให้คุณเริ่มพัฒนาขั้นตอน AI ของคุณเอง แต่สำหรับส่วนที่เหลือของบทแนะนำนี้ คุณเพียงแค่ทำให้ขั้นตอนตัวอย่างใช้งานได้

  6. แก้ไขไฟล์ตัวอย่าง (main.go หรือ genkit.go) เพื่อระบุ พอร์ตที่เซิร์ฟเวอร์โฟลว์ควรรับคำสั่งต่อไปนี้

    if err := genkit.Init(ctx,
        &genkit.Options{FlowAddr: ":3400"}, // Add this parameter.
    ); err != nil {
        log.Fatal(err)
    }
    
  7. ทำให้ข้อมูลเข้าสู่ระบบ API พร้อมใช้งานสำหรับฟังก์ชันที่ทำให้ใช้งานได้ ทำอย่างใดอย่างหนึ่งต่อไปนี้ ดังต่อไปนี้ ขึ้นอยู่กับผู้ให้บริการโมเดลที่คุณเลือก

    Gemini (AI ของ Google)

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

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

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

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

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

    Gemini (Vertex AI)

    1. ใน Cloud Console เปิดใช้ Vertex AI API สำหรับโปรเจ็กต์ของคุณ

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

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

  8. ไม่บังคับ: ลองดำเนินการตามขั้นตอนใน UI ของนักพัฒนาซอฟต์แวร์ ดังนี้

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

      Gemini (AI ของ Google)

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1
      gcloud auth application-default login
      
    2. เริ่มต้น UI ด้วยคำสั่งต่อไปนี้

      genkit start
      
    3. ใน UI ของนักพัฒนาซอฟต์แวร์ (http://localhost:4000/) ให้เรียกใช้ขั้นตอนดังนี้

      1. คลิก MenuSuggestionFlow

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

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

  9. หากทุกอย่างทำงานเป็นปกติดีแล้ว คุณสามารถสร้างและใช้ ขั้นตอน:

    Gemini (AI ของ Google)

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

    Gemini (Vertex AI)

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

    (GCLOUD_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 '"banana"'