Analytics สำหรับชั้นวางหนังสือ: ใช้ Gemini เพื่อสร้างแอปพลิเคชัน SQL ด้วย BigQuery และ Generative AI

1. บทนำ

หากคุณชอบไล่ดูหนังสือต่างๆ แต่เลือกไม่ถูกเลือกเพราะตัวเลือกที่มีมากมายจนเลือกไม่ออก ลองจินตนาการว่าคุณมีแอปที่ทำงานด้วยระบบ AI ซึ่งไม่เพียงแนะนำหนังสือที่เหมาะกับคุณที่สุด แต่ยังให้สรุปที่กระชับตามประเภทหนังสือที่คุณเลือก ซึ่งจะช่วยให้คุณเห็นภาพรวมของเนื้อหาหนังสือ ในโค้ดแล็บนี้ เราจะแนะนำการสร้างแอปดังกล่าวด้วย BigQuery, Gemini และ Cloud Functions ที่ทำงานด้วย Gemini

ภาพรวมของโปรเจ็กต์

กรณีการใช้งานของเรามุ่งเน้นที่องค์ประกอบหลัก 4 ประการต่อไปนี้

  • ฐานข้อมูลหนังสือ: ชุดข้อมูลสาธารณะ BigQuery ขนาดใหญ่ของหนังสือที่เก็บถาวรบนอินเทอร์เน็ตจะทำหน้าที่เป็นแคตตาล็อกหนังสือที่ครอบคลุม
  • เครื่องมือสรุปข้อมูลด้วย AI: Google Cloud Functions ที่มาพร้อมกับโมเดลภาษา Gemini 1.0 Pro จะสร้างข้อมูลสรุปที่เป็นประโยชน์ซึ่งปรับให้เหมาะกับคำขอของผู้ใช้
  • การผสานรวม BigQuery: ฟังก์ชันระยะไกลภายใน BigQuery ที่เรียกใช้ Cloud Functions เพื่อแสดงสรุปและธีมของหนังสือแบบออนดีมานด์
  • อินเทอร์เฟซผู้ใช้: เว็บแอปที่โฮสต์ใน Cloud Run ซึ่งจะให้บริการเว็บแอปพลิเคชันเพื่อให้ผู้ใช้ดูผลลัพธ์

เราจะแบ่งการติดตั้งใช้งานออกเป็น 3 โค้ดแล็บ ดังนี้

Codelab 1: ใช้ Gemini เพื่อสร้างฟังก์ชัน Java Cloud สำหรับแอปพลิเคชัน Gemini

Codelab 2: ใช้ Gemini เพื่อสร้างแอป SQL ด้วย BigQuery และ Generative AI

Codelab 3: ใช้ Gemini เพื่อสร้างเว็บแอปพลิเคชัน Java Spring Boot ที่โต้ตอบกับ BigQuery

2. ใช้ Gemini เพื่อสร้างแอป SQL ด้วย BigQuery และ Generative AI

สิ่งที่คุณจะสร้าง

คุณจะต้องสร้าง

  • model ระยะไกลใน BigQuery ที่เรียกใช้ปลายทาง Vertex AI text-bison-32k เพื่อระบุประเภท (หรือธีม) ของหนังสือจากรายการ ";" ที่แยกคีย์เวิร์ดในตาราง
  • ฟังก์ชันระยะไกลใน BigQuery ที่จะเรียกใช้ Cloud Functions ของ Generative AI ที่ติดตั้งใช้งานจากระยะไกล
  • ใช้โมเดลและฟังก์ชันระยะไกลเพื่อสรุปธีมและข้อความของหนังสือด้วยการค้นหา SQL และเขียนผลลัพธ์ลงในตารางใหม่ในชุดข้อมูลชั้นวางหนังสือ
  • คุณจะทำตามขั้นตอนเหล่านี้โดยได้รับความช่วยเหลือจาก Gemini

3. ข้อกำหนด

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • คุณควรทำให้ Cloud Function ใช้งานได้เป็นส่วนหนึ่งของ Codelab ส่วนที่ 1 ใช้ Gemini เพื่อสร้าง Cloud Function ภาษา Java สําหรับแอปพลิเคชัน Gemini
  • แบบมีเงื่อนไข: หากตอนนี้คุณมีสิทธิ์เข้าถึงลิงก์เครดิต Google Cloud ฟรี (ซึ่งผู้จัดเวิร์กช็อปอาจจัดสรรให้คุณ) ให้ทำตามวิธีการในหน้าด้านล่างเพื่อดำเนินการตามขั้นตอนการเปิดใช้งานเครดิตและการสร้างโปรเจ็กต์ให้เสร็จสมบูรณ์ก่อน หากคุณไม่มีลิงก์นี้ ให้ดำเนินการตามขั้นตอนที่จำเป็นของโปรเจ็กต์และการเรียกเก็บเงินด้านล่าง

สร้างโปรเจ็กต์

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

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

เปิดใช้งาน Cloud Shell

  1. คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud โดยโหลด bq ไว้ล่วงหน้า

จากคอนโซลระบบคลาวด์ ให้คลิกเปิดใช้งาน Cloud Shell ที่มุมขวาบน 6757b2fb50ddcc2d.png

  1. เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรจะเห็นการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณแล้ว เรียกใช้คําสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์

gcloud auth list

  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ

โปรเจ็กต์รายการการกำหนดค่า gcloud

  1. หากไม่ได้ตั้งค่าโปรเจ็กต์ไว้ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์

โปรเจ็กต์ชุดการกำหนดค่า gcloud <YOUR_PROJECT_ID>

โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

4. การเปิดใช้ Gemini สำหรับ Google Cloud และ API ที่จำเป็น

เปิดใช้ Gemini

  1. ไปที่ Marketplace ของ Gemini สำหรับ Google Cloud เพื่อเปิดใช้ API คุณใช้คําสั่งต่อไปนี้ได้ด้วย

gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID

  1. ไปที่หน้า Gemini แล้วคลิก "เริ่มแชท"

เปิดใช้ API อื่นๆ ที่จําเป็น

เราจะดำเนินการอย่างไร ลองถาม Gemini ว่า แต่ก่อนที่จะดำเนินการ โปรดทราบว่า

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

ไปที่คอนโซลแชท Gemini โดยคลิกไอคอน "เปิด Gemini" ที่มุมขวาบนถัดจากแถบค้นหาในคอนโซล Google Cloud

พิมพ์คำถามนี้ในส่วน "ป้อนพรอมต์ที่นี่"

ฉันจะเปิดใช้ BigQuery และ Vertex AI API โดยใช้คำสั่ง gcloud ได้อย่างไร

คุณจะได้รับคำตอบดังที่แสดงในรูปภาพต่อไปนี้

19c3fd78530794d9.png

คัดลอก (คุณสามารถใช้ไอคอนคัดลอกที่ด้านบนของข้อมูลโค้ดคำสั่ง) แล้วเรียกใช้ในเทอร์มินัล Cloud Shell เพื่อเปิดใช้บริการที่เกี่ยวข้อง ดังนี้

  • bigquery.googleapis.com
  • aiplatform.googleapis.com

5. สำรวจชุดข้อมูลสาธารณะของ BigQuery สําหรับข้อมูลหนังสือ

เริ่มต้นด้วยการทำความคุ้นเคยกับชุดข้อมูลสาธารณะของ BigQuery ที่มีข้อมูลเกี่ยวกับหนังสืออินเทอร์เน็ตที่เก็บถาวรจำนวนมาก

คุณดูชุดข้อมูลสาธารณะนี้ได้ในแผงเครื่องมือสำรวจของ BigQuery ซึ่งจะอยู่ที่ด้านซ้ายเมื่อคุณไปที่คอนโซล BigQuery

39e2ac03cc99cbac.png

พิมพ์ "gdelt-bq" หรือ "internetarchivebooks" ในแถบค้นหา แล้วคลิก "ค้นหาทุกโปรเจ็กต์" ขยายผลการค้นหาและติดดาวหนังสือจากหอจดหมายเหตุอินเทอร์เน็ตดังที่แสดงในรูปภาพด้านล่าง

68dba68a79cddfc9.png

ขยายชุดข้อมูล คลิก gdelt-bq.internetarchivebooks แล้วดูตัวอย่างข้อมูลในตาราง 1920 ตารางนี้รวมหนังสือจากปี 1920 ที่เก็บไว้

หากต้องการดูสคีมาที่เราจะใช้ในส่วนต่อๆ ไป ให้เรียกใช้การค้นหาต่อไปนี้

select * from  `gdelt-bq.internetarchivebooks.1920` limit 5;

เราจะใช้ฟิลด์ 3 รายการต่อไปนี้สําหรับ Codelab

  • BookMeta_Title (ชื่อ)
  • ธีม (ธีมคั่นด้วย ";")
  • BookMeta_FullText (ข้อความทั้งหมดของหนังสือ)

6. สร้างชุดข้อมูล BigQuery ใหม่ชื่อ bookshelf

เราต้องการสร้างชุดข้อมูลภายใต้โปรเจ็กต์เพื่อจัดเก็บออบเจ็กต์ฐานข้อมูลและข้อมูลวิเคราะห์ทั้งหมดที่เรากำลังจะสร้างในห้องทดลองนี้ มาถาม Gemini เกี่ยวกับวิธีสร้างชุดข้อมูล BigQuery กัน คุณควรเปิดแชท Gemini ในอีกแท็บหนึ่งในเบราว์เซอร์ไว้แล้วจากขั้นตอนการเปิดใช้ API หากยังไม่ได้ดำเนินการ คุณสามารถเริ่มดำเนินการได้เลย ไปที่ Google Cloud Console โดยไปที่ https://console.cloud.google.com แล้วคุณจะเห็นไอคอน Gemini อยู่ข้างแถบค้นหาด้านบน คลิกแล้วแชทจะเปิดขึ้น

26e1491322855614.png

ป้อนพรอมต์ตามที่แสดงด้านล่าง

พรอมต์ของฉันมีดังนี้

How to create a BigQuery dataset?

คําตอบมีดังนี้

f7a989cc9a01009.png

มาทําตามขั้นตอนที่ระบุไว้ในคําตอบเพื่อสร้างชุดข้อมูลชื่อ "ชั้นวางหนังสือ" ในโปรเจ็กต์ที่ใช้งานอยู่กัน

หากต้องการสร้างชุดข้อมูล BigQuery ให้ทําตามขั้นตอนต่อไปนี้

  1. ไปที่หน้า BigQuery ในคอนโซล Google Cloud
  2. ในแผง Explorer ให้คลิกรหัสโปรเจ็กต์
  3. คลิกสร้างชุดข้อมูล (ควรอยู่ในตัวเลือกที่แสดงเมื่อคุณคลิกจุด 3 จุดข้างรหัสโปรเจ็กต์)
  4. ป้อนชื่อชุดข้อมูลเป็น "bookshelf"
  5. ตั้งค่าสถานที่ตั้งเป็น "สหรัฐอเมริกา(หลายภูมิภาค)"
  6. สำหรับขั้นตอนที่ 3, 4, 5 และ 6 จากคำตอบ ให้ปล่อยตัวเลือกเริ่มต้นไว้
  7. คลิกสร้างชุดข้อมูล

ระบบจะสร้างชุดข้อมูลและจะปรากฏในแผง Explorer ชุดข้อมูล "ชั้นวางหนังสือ" อาจมีลักษณะดังนี้

7. สร้างโมเดลระยะไกลเพื่อเรียกใช้ LLM ของ Vertex AI (text-bison-32k)

ถัดไป เราต้องสร้างโมเดลใน BigQuery ที่เรียกใช้โมเดล Vertex AI "text-bison-32k" โมเดลจะช่วยระบุธีมทั่วไป บริบทของหนังสือ จากรายการคีย์เวิร์ดของหนังสือแต่ละเล่มในชุดข้อมูล

เรามาถามคำถามนี้กับ Gemini กัน โดยไปที่แท็บที่คุณเปิดคอนโซลแชทของ Gemini อยู่ แล้วพิมพ์พรอมต์ต่อไปนี้

คุณจะเชื่อมต่อ BigQuery และ Vertex AI เพื่อเรียกใช้ปลายทาง LLM (text-bison-32k) ใน BigQuery ได้อย่างไร

การตอบกลับมีดังนี้

41904e30ce92b436.png

การตอบกลับจะมีข้อมูลที่ถูกต้อง เช่น ขั้นตอนต่างๆ ซึ่งรวมถึงการใช้คำสั่ง CREATE MODEL, การใช้การเชื่อมต่อ BigQuery และการกําหนดปลายทาง คำค้นหาถูกต้องสำหรับฉัน แต่ไม่ได้หมายความว่าคุณจะได้รับผลลัพธ์ที่เหมือนกันทุกประการ เนื่องจากนี่เป็นโมเดลภาษาขนาดใหญ่ คุณอาจได้รับคำตอบในรูปแบบ ปริมาณ และความลึกที่ต่างกัน หากไม่เห็นรายละเอียดทั้งหมดที่เราได้รับ โปรดสอบถามเพิ่มเติมในแชท เช่น ระบุรายละเอียดเพิ่มเติมเกี่ยวกับวิธีสร้างทรัพยากรการเชื่อมต่อ หรือเหตุผลที่ไม่มีแอตทริบิวต์การเชื่อมต่อ หรือฉันจะเชื่อมต่อจาก BigQuery กับ Vertex AI ได้อย่างไร เป็นต้น

ตัวอย่างพรอมต์ติดตามผลมีดังนี้ (โปรดใช้เฉพาะในกรณีที่ต้องการติดตามผล หากคำตอบแรกที่ได้รับเพียงพอแล้ว ให้ดำเนินการต่อ)

What about the connection? How will I connect from BigQuery to Vertex AI?

คําตอบมีดังนี้

2ed9b3ed96b11bc9.png

ลองทำตามขั้นตอนจากการตอบกลับเพื่อสร้างการเชื่อมต่อ BigQuery ต่อไปนี้

  1. ไปที่คอนโซล BigQuery
  2. ในแผง BigQuery Explorer ให้คลิกปุ่ม "+เพิ่ม" แล้วคลิก "การเชื่อมต่อกับแหล่งข้อมูลภายนอก"
  3. เมื่อถึงขั้นตอนนี้ ระบบจะขอให้คุณเปิดใช้ BigQuery Connection API คลิกเปิดใช้ API:

ded96126495ffe9.png

  1. คลิก "การเชื่อมต่อกับแหล่งข้อมูลภายนอก" แล้วคุณจะเห็นสไลด์แหล่งข้อมูลภายนอกดังที่แสดงด้านล่าง จากรายการแหล่งข้อมูลภายนอก ให้เลือกแหล่งข้อมูล "Vertex AI"

434cdbbb3a9436f2.png

  1. พิมพ์รหัสการเชื่อมต่อ (อาจเป็นรหัสที่คุณเลือก แต่ตอนนี้ให้ตั้งเป็น "bq-vx" และภูมิภาค (หลายภูมิภาค "สหรัฐอเมริกา")
  2. คลิก "สร้างการเชื่อมต่อ"

d3a2aeebc3ecdfae.png

  1. หลังจากสร้างการเชื่อมต่อแล้ว ให้คลิก "ไปที่การเชื่อมต่อ"
  2. ในหน้าข้อมูลการเชื่อมต่อ ให้คัดลอกรหัสบัญชีบริการ เนื่องจากเราจะใช้รหัสนี้ในขั้นตอนถัดไป
  3. เมื่อสร้างการเชื่อมต่อแล้ว ให้กําหนดสิทธิ์ให้กับรหัสบัญชีบริการที่เราคัดลอกมาเพื่อให้ใช้ Vertex AI ได้
  4. จากหน้า Google Cloud Console ให้เปิด Google Cloud IAM หรือไปที่ลิงก์
  5. คลิกให้สิทธิ์เข้าถึงในส่วนดูตามผู้ใช้หลัก

5317eed5da0bb8c5.png

  1. ในกล่องโต้ตอบ "ให้สิทธิ์เข้าถึง" ให้ป้อนรหัสบัญชีบริการที่เราบันทึกไว้ก่อนหน้านี้ในช่องข้อความ "หลักการใหม่"
  2. ตั้งค่าบทบาทเป็น "ผู้ใช้ Vertex AI"

f213db33d220aa5f.png

สร้างการเชื่อมต่อที่จำเป็นแล้ว ให้สิทธิ์ที่จำเป็นแก่ผู้ใช้หลัก (บัญชีบริการของการเชื่อมต่อ) เพื่อใช้ Vertex AI จาก BigQuery

เรียกใช้คำสั่ง DDL(ภาษานิยามข้อมูล) ต่อไปนี้ซึ่งแสดงการสร้างออบเจ็กต์ DB ซึ่งในกรณีนี้คือ MODEL ในเครื่องมือแก้ไขการค้นหาของ BigQuery

CREATE OR REPLACE MODEL bookshelf.llm_model
  REMOTE WITH CONNECTION `us.bq-vx`
  OPTIONS (ENDPOINT = 'text-bison-32k');

มีบางอย่างให้คุณลองใช้แทนขั้นตอนด้านบนได้ คุณขอให้ Gemini แนะนำคำค้นหาเพื่อสร้างรูปแบบสำหรับเรียกใช้โมเดล "text-bison-32k" ได้

หมายเหตุ: หากคุณใช้ชื่ออื่นสำหรับการเชื่อมต่อ ให้แทนที่ "us.bq-vx" ด้วยชื่อนั้นในคำสั่ง DDL ก่อนหน้า การค้นหานี้จะสร้างโมเดลระยะไกลในชุดข้อมูล "ชั้นวางหนังสือ" ซึ่งเราสร้างขึ้นก่อนหน้านี้

8. สร้างฟังก์ชันระยะไกลที่เรียกใช้ Cloud Function ของ Java

ตอนนี้เราจะสร้างฟังก์ชันระยะไกลใน BigQuery โดยใช้ Cloud Function ของ Java ที่เราสร้างไว้ใน codelab 1 ของชุดนี้เพื่อติดตั้งใช้งานโมเดล Gemini ระบบจะใช้ฟังก์ชันระยะไกลนี้เพื่อสรุปเนื้อหาหนังสือ

หมายเหตุ: หากคุณพลาด Codelab นี้หรือยังไม่ได้ทำให้ Cloud Function นี้ใช้งานได้ ให้ข้ามขั้นตอนนี้และไปยังหัวข้อถัดไป (ซึ่งก็คือ "สรุปธีมของหนังสือโดยใช้โมเดลระยะไกล)

ไปที่คอนโซล BigQuery และวางคำสั่ง DDL ต่อไปนี้ในเครื่องมือแก้ไขการค้นหา (คุณสามารถสร้างแท็บเครื่องมือแก้ไขการค้นหาใหม่โดยคลิกปุ่ม +)

a54c0b0014666cac.png

ด้านล่างนี้คือ DDL ที่คุณคัดลอกได้ อย่าลืมแทนที่ปลายทางด้วยปลายทาง Cloud Functions ที่ติดตั้งใช้งาน (สร้างขึ้นจาก codelab 1) หากไม่มีปลายทาง ให้เปลี่ยนอักขระที่มาสก์ใน DDL ด้านล่างด้วย "abis-345004" เพื่อวัตถุประสงค์ในการสาธิต

CREATE OR REPLACE FUNCTION
  `bookshelf.GEMINI_REMOTE_CALL` (context STRING) RETURNS STRING
  REMOTE WITH CONNECTION `us.bq-vx`
  OPTIONS (
    endpoint = 'https://us-central1-****-******.cloudfunctions.net/remote-gemini-call'  );

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

a023d5691acf6f.png

เมื่อสร้างโมเดลและฟังก์ชันแล้ว มาดูการทดสอบออบเจ็กต์ BigQuery 2 รายการนี้ด้วยการเรียกใช้ในการค้นหา SELECT

9. สรุปธีมโดยใช้โมเดลระยะไกล

มาลองใช้โมเดลระยะไกลที่เราสร้าง "bookshelf.llm_model" เพื่อสร้างคีย์เวิร์ดแบบรวมสำหรับหนังสือจากรายการธีมที่กำหนด

SELECT * FROM ML.GENERATE_TEXT(MODEL `bookshelf.llm_model`,
(
SELECT
     CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` LIMIT 1
));

ขั้นตอนที่ไม่บังคับ: ผลลัพธ์ของช่องผลลัพธ์ที่ LLM สร้างขึ้นจะฝังอยู่ มาเพิ่มพารามิเตอร์ LLM และแอตทริบิวต์ "flatten_json_output" ลงในคําค้นหากัน การใช้แอตทริบิวต์ "flatten_json_output" จะช่วยนำโครงสร้างที่ฝังอยู่ออกจากฟิลด์ผลลัพธ์ที่ LLM สร้างขึ้น

SELECT * FROM ML.GENERATE_TEXT ( MODEL `bookshelf.llm_model`, (
 SELECT CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt FROM `gdelt-bq.internetarchivebooks.1920` limit 1),
    STRUCT( 0.2 AS temperature, 100 AS max_output_tokens, TRUE AS flatten_json_output));

ตอนนี้ให้เรียกใช้การค้นหา SELECT ในเครื่องมือแก้ไข BigQuery และยืนยันผลลัพธ์ เราได้จำกัดผลการค้นหาไว้ที่ 1 รายการสำหรับการทดสอบ ผลลัพธ์จะแสดงดังนี้

9b0d33eca61a73d2.png

10. สรุปข้อความทั้งหมดของหนังสือโดยใช้ฟังก์ชันระยะไกล

ตอนนี้เราจะพยายามสรุปหนังสือโดยการเรียกใช้ชั้นวางหนังสือGEMINI_REMOTE_CALL Cloud Function ที่เราสร้างขึ้นก่อนหน้านี้

หมายเหตุ: หากข้ามการสร้างฟังก์ชันระยะไกล (หัวข้อก่อนหน้าในโค้ดแล็บนี้) อย่าลืมข้ามการเรียกใช้ฟังก์ชัน bookshelf.GEMINI_REMOTE_CALL ในข้อความค้นหา SELECT ด้วย

ใช้คำค้นหา SELECT ที่เรียกใช้ฟังก์ชันระยะไกล (GEMINI_REMOTE_CALL) ที่เราสร้างขึ้นก่อนหน้านี้ การเรียกใช้ฟังก์ชันนี้ GEMINI_REMOTE_CALL มีพรอมต์ที่ขอสรุปข้อความหนังสือ

select BookMeta_Title, `bookshelf.GEMINI_REMOTE_CALL` (
  CONCAT('This is about a book. The title of the book is this: ', BookMeta_Title,  ' . The theme of the book is as follows: ', Themes, 'The following text contains an excerpt from the book. Summarize it in less than 5 lines to create the gist. If you do not have a summary, use the title and themes to make up a short summary. DO NOT RETURN EMPTY RESPONSE. ', SUBSTR(BookMeta_FullText, 5000, 10000))) Summary 
  from `gdelt-bq.internetarchivebooks.1920` where Themes like '%EDUCATION%' limit 1;

โปรดทราบว่าเราได้ตัดสตริงย่อยของข้อความทั้งหมดของหนังสือมาสร้างสรุป

ผลลัพธ์ของการค้นหามีดังนี้

658bb0a9c9cf0938.png

11. จัดเก็บข้อมูลหนังสือในตาราง

เมื่อทดสอบการเรียก LLM (โมเดลและฟังก์ชันระยะไกล) จาก BigQuery โดยใช้การค้นหา SQL เท่านั้นแล้ว มาสร้างตาราง BigQuery เพื่อจัดเก็บข้อมูล "ชั้นวางหนังสือ" ที่มีข้อมูลเชิงลึกเกี่ยวกับธีมในชุดข้อมูลเดียวกับโมเดลและฟังก์ชันระยะไกลกัน

เราอาจรวมทั้งการเรียกใช้โมเดล LLM และการเรียกใช้ฟังก์ชันระยะไกลไว้ในขั้นตอนนี้ แต่เนื่องจากเราได้ทําเครื่องหมายการเรียกฟังก์ชันระยะไกล (ซึ่งเรียกใช้ฟังก์ชัน Cloud) เป็นขั้นตอนที่ไม่บังคับ เราจะใช้เฉพาะข้อมูลเชิงลึกจากโมเดลระยะไกล

คําค้นหาที่เราจะใช้มีดังนี้

SELECT
  BookMeta_Title, Themes, ml_generate_text_llm_result Context 
   FROM
  ML.GENERATE_TEXT (
    MODEL `bookshelf.llm_model`,
    (
 SELECT
      BookMeta_Title,
      Themes,BookMeta_FullText,
      CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

เมื่อเรียกใช้การค้นหาใน BigQuery Editor ผลลัพธ์จะเป็นดังนี้

2c6e08e75a680867.png

ตอนนี้มาขอให้ Gemini สร้างตารางชื่อ "bookshelf.books" จากข้อความค้นหาข้างต้นกัน ไปที่คอนโซลแชท Gemini ใน Google Cloud Console แล้วป้อนพรอมต์ต่อไปนี้

พรอมต์ที่เราจะใช้มีดังนี้

Create a BigQuery table named bookshelf.books from this SELECT query: 
SELECT
  BookMeta_Title, Themes, ml_generate_text_llm_result Context 
   FROM
  ML.GENERATE_TEXT (
    MODEL `bookshelf.llm_model`,
    (
 SELECT
      BookMeta_Title,
      Themes,BookMeta_FullText,
      CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

คำตอบแชทของ Gemini มีดังนี้

df6595a4b14f7b9.png

นี่คือคำค้นหาสำหรับกรณีที่คุณต้องการคัดลอกจากที่นี่โดยตรง

CREATE TABLE bookshelf.books (
  BookMeta_Title STRING,
  Themes STRING,
  ml_generate_text_llm_result STRING
) AS (
  SELECT
    BookMeta_Title,
    Themes,
    ml_generate_text_llm_result Context
  FROM
    ML.GENERATE_TEXT (
      MODEL `bookshelf.llm_model`,
      (
        SELECT
          BookMeta_Title,
          Themes,
          BookMeta_FullText,
          CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
        FROM `gdelt-bq.internetarchivebooks.1920`
        LIMIT 5
      ),
      STRUCT(
        0.2 AS temperature,
        100 AS max_output_tokens,
        TRUE AS flatten_json_output
      )
    )
);

หลังจากเรียกใช้การค้นหาในเครื่องมือแก้ไข BigQuery แล้ว ผลลัพธ์ที่ได้จะแสดงดังนี้

2d1ce716f844b7ad.png

เท่านี้ก็เรียบร้อย ตอนนี้ก็ค้นหาตารางและลองใช้ข้อมูลเพื่อดูข้อมูลเชิงลึกเพิ่มเติม

12. ขอแสดงความยินดี

ยินดีด้วย เราได้ดำเนินการต่อไปนี้เรียบร้อยแล้วและใช้ Gemini ในบางขั้นตอนของกระบวนการด้วย

  • สร้างโมเดลระยะไกลใน BigQuery ที่เรียกใช้ปลายทาง "text-bison-32k" ของ Vertex AI เพื่อระบุประเภท (หรือธีม) ของหนังสือจากรายการคีย์เวิร์ดที่คั่นด้วย ";" ในตาราง
  • สร้างฟังก์ชันระยะไกลใน BigQuery ที่จะเรียกใช้ Cloud Function ของ Generative AI ที่ติดตั้งใช้งานนี้จากระยะไกล ฟังก์ชันนี้จะรับพรอมต์เป็นอินพุตและแสดงผลสตริงที่สรุปหนังสือเป็น 5 บรรทัด
  • ใช้โมเดลและฟังก์ชันระยะไกลเพื่อสรุปธีมและข้อความของหนังสือด้วยการค้นหา SQL และเขียนผลลัพธ์ลงในตารางใหม่ในชุดข้อมูลชั้นวางหนังสือ
  • ในการติดตามผล ให้ลองใช้ Gemini เพื่อรับ SQL สําหรับการลบออบเจ็กต์ที่สร้างใน BigQuery ซึ่งจะครอบคลุมขั้นตอนการล้างข้อมูล