ทำให้โฟลว์ใช้งานได้โดยใช้ Cloud Run

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

ก่อนเริ่มต้น

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

1. ตั้งค่าโปรเจ็กต์ Google Cloud

หากยังไม่ได้ตั้งค่าโปรเจ็กต์ Google Cloud ให้ทำตามขั้นตอนต่อไปนี้

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

  2. ลิงก์โปรเจ็กต์กับบัญชีสำหรับการเรียกเก็บเงิน ซึ่งจำเป็นสำหรับ Cloud Run

  3. กำหนดค่า CLI ของ Google Cloud เพื่อใช้โปรเจ็กต์ของคุณ โดยทำดังนี้

    gcloud init

2. เตรียมโปรเจ็กต์ Node ให้พร้อมสําหรับการติดตั้งใช้งาน

คุณจะต้องทําการเปลี่ยนแปลงเล็กๆ น้อยๆ ในโค้ดโปรเจ็กต์เพื่อให้ทําให้การนําร่องใช้งานได้

เพิ่มสคริปต์เริ่มต้นและสร้างลงใน package.json

เมื่อทำให้โปรเจ็กต์ Node.js ใช้งานได้ใน Cloud Run เครื่องมือทำให้ใช้งานได้จะคาดหวังว่าโปรเจ็กต์ของคุณจะมีสคริปต์ start และสคริปต์ build (ไม่บังคับ) สําหรับโปรเจ็กต์ TypeScript ทั่วไป สคริปต์ต่อไปนี้มักจะเพียงพอ

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

เพิ่มโค้ดเพื่อกําหนดค่าและเริ่มเซิร์ฟเวอร์โฟลว์

ในไฟล์ที่สคริปต์ start เรียกใช้ ให้เพิ่มการเรียกใช้ startFlowServer วิธีนี้จะเริ่มต้นเซิร์ฟเวอร์ Express ที่ตั้งค่าไว้เพื่อแสดงโฟลว์เป็นปลายทางของเว็บ

เมื่อโทร โปรดระบุขั้นตอนที่ต้องการแสดง

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

นอกจากนี้ คุณยังระบุพารามิเตอร์ที่ไม่บังคับต่อไปนี้ได้ด้วย

  • port: พอร์ตเครือข่ายที่จะฟัง หากไม่ระบุ เซิร์ฟเวอร์จะรอฟังพอร์ตที่กําหนดไว้ในตัวแปรสภาพแวดล้อมของพอร์ต และหากไม่ได้ตั้งค่าพอร์ต ค่าเริ่มต้นจะเป็น 3400
  • cors: นโยบาย CORS ของเซิร์ฟเวอร์การไหล หากจะเข้าถึงปลายทางเหล่านี้จากเว็บแอปพลิเคชัน คุณอาจต้องระบุข้อมูลนี้
  • pathPrefix: คำนำหน้าเส้นทางที่ไม่บังคับซึ่งจะเพิ่มไว้ก่อนปลายทางของโฟลว์
  • jsonParserOptions: ตัวเลือกที่จะส่งไปยังโปรแกรมแยกวิเคราะห์ข้อความ JSON ของ Express

ไม่บังคับ: กําหนดนโยบายการให้สิทธิ์

ขั้นตอนการทํางานที่ติดตั้งใช้งานทั้งหมดควรต้องมีการให้สิทธิ์ในรูปแบบใดรูปแบบหนึ่ง ไม่เช่นนั้นทุกคนจะเรียกใช้ขั้นตอนการทํางาน Generative AI ที่มีราคาแพงได้

เมื่อติดตั้งใช้งานโฟลว์ด้วย Cloud Run คุณจะมี 2 ตัวเลือกในการให้สิทธิ์ ดังนี้

  • การให้สิทธิ์ตาม Cloud IAM: ใช้เครื่องมือการจัดการการเข้าถึงในตัวของ Google Cloud เพื่อควบคุมการเข้าถึงอุปกรณ์ปลายทาง ดูข้อมูลเกี่ยวกับการระบุข้อมูลเข้าสู่ระบบเหล่านี้ได้ในหัวข้อการตรวจสอบสิทธิ์ในเอกสารประกอบของ Cloud Run

  • นโยบายการให้สิทธิ์ที่กําหนดไว้ในโค้ด: ใช้ฟีเจอร์นโยบายการให้สิทธิ์ของขั้นตอน Genkit เพื่อยืนยันข้อมูลการให้สิทธิ์โดยใช้โค้ดที่กําหนดเอง ซึ่งมักจะเป็นการให้สิทธิ์ตามโทเค็น แต่ก็ไม่จำเป็น

หากต้องการกำหนดนโยบายการให้สิทธิ์ในโค้ด ให้ใช้พารามิเตอร์ authPolicy ในการกำหนดการไหล

const myFlow = ai.defineFlow(
  {
    name: "myFlow",
    authPolicy: (auth, input) => {
      if (!auth) {
        throw new Error("Authorization required.");
      }
      // Custom checks go here...
    },
  },
  async () => {
    // ...
  }
);

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

ทำให้ข้อมูลเข้าสู่ระบบ API พร้อมใช้งานสำหรับเวิร์กโฟลว์ที่ติดตั้งใช้งาน

เมื่อติดตั้งใช้งานแล้ว ขั้นตอนจะต้องมีวิธีตรวจสอบสิทธิ์กับบริการระยะไกลที่ใช้ เวิร์กโฟลว์ส่วนใหญ่จะต้องมีข้อมูลเข้าสู่ระบบเป็นอย่างน้อยสำหรับการเข้าถึงบริการ API ของโมเดลที่ใช้

ในตัวอย่างนี้ ให้ทําอย่างใดอย่างหนึ่งต่อไปนี้ ทั้งนี้ขึ้นอยู่กับผู้ให้บริการโมเดลที่คุณเลือก

Gemini (AI ของ Google)

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

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

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

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

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

Gemini (Vertex AI)

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

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

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

3. ทำให้โฟลว์ใช้งานได้ใน Cloud Run

หลังจากเตรียมโปรเจ็กต์สําหรับการติดตั้งใช้งานแล้ว คุณสามารถติดตั้งใช้งานโดยใช้เครื่องมือ gcloud

Gemini (AI ของ Google)

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

Gemini (Vertex AI)

gcloud run deploy

เครื่องมือนี้จะแจ้งให้คุณทราบถึงข้อมูลที่จําเป็น

เมื่อระบบถามว่าคุณต้องการอนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์หรือไม่ ให้ทำดังนี้

  • ตอบ Y หากคุณไม่ได้ใช้ IAM และกำหนดนโยบายการให้สิทธิ์ในโค้ดแทน
  • ตอบ N เพื่อกำหนดค่าบริการให้ต้องใช้ข้อมูลเข้าสู่ระบบ IAM

ไม่บังคับ: ลองใช้ขั้นตอนที่ติดตั้งใช้งาน

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

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