1. ภาพรวม
ในแล็บนี้ คุณจะได้ใช้ผลิตภัณฑ์ Generative AI ของ Google เพื่อสร้างโครงสร้างพื้นฐานใน Google Cloud โดยใช้ Gemini Cloud Assist, ค้นหาข้อมูล BigQuery โดยใช้ฟีเจอร์ภาษาธรรมชาติเป็น SQL ของ Data Canvas, เขียนโค้ดในสมุดบันทึก Jupyter ของ Colab Enterprise และใน Eclipse Theia (Visual Studio Code) โดยใช้ Gemini Code Assist และผสานรวมฟีเจอร์การค้นหาและการแชทด้วย AI ที่สร้างขึ้นจากแหล่งข้อมูลพื้นฐานของ Cloud Storage และ BigQuery ใน Vertex AI Agent Builder
เป้าหมายของเราคือการสร้างเว็บไซต์สูตรอาหารและการทำอาหารที่ชื่อว่า AI Recipe Haven เว็บไซต์จะสร้างขึ้นใน Python และ Streamlit และจะมีหน้าหลัก 2 หน้า คำแนะนำในการทำอาหารจะมีแชทบอทที่เราจะสร้างขึ้นโดยใช้ Gemini และ Vertex AI Agent Builder ที่มีแหล่งข้อมูลที่เชื่อถือได้ซึ่งเชื่อมโยงกับกลุ่มตำราอาหาร โดยจะให้คำแนะนำในการทำอาหารและตอบคำถามที่เกี่ยวข้องกับการทำอาหาร การค้นหาสูตรอาหารจะเป็นเครื่องมือค้นหาที่ Gemini ขับเคลื่อน โดยอิงตามฐานข้อมูลสูตรอาหารใน BigQuery
หากคุณติดขัดกับโค้ดใดๆ ในแบบฝึกหัดนี้ โซลูชันสำหรับไฟล์โค้ดทั้งหมดจะอยู่ในที่เก็บ GitHub ของแบบฝึกหัดในสาขา solution
วัตถุประสงค์
ในแล็บนี้ คุณจะได้เรียนรู้วิธีทำงานต่อไปนี้
- เปิดใช้งานและใช้ Gemini Cloud Assist
- สร้างแอปค้นหาใน Vertex AI Agent Builder สำหรับแชทบอทให้คำแนะนำด้านการทำอาหาร
- โหลดและล้างข้อมูลในสมุดบันทึก Colab Enterprise โดยใช้ความช่วยเหลือจาก Gemini Code Assist
- สร้างแอปค้นหาใน Vertex AI Agent Builder สำหรับเครื่องมือสร้างสูตรอาหาร
- สร้างกรอบแอปพลิเคชันเว็บหลักของ Python และ Streamlit โดยใช้ความช่วยเหลือเล็กๆ น้อยๆ จาก Gemini
- ทําให้เว็บแอปพลิเคชันใช้งานได้ใน Cloud Run
- เชื่อมต่อหน้าคำแนะนำในการทำอาหารกับแอป Agent Builder สำหรับการค้นหาสมุดสูตรอาหาร
- (ไม่บังคับ) เชื่อมต่อหน้าการค้นหาสูตรอาหารกับแอป Agent Builder สำหรับการค้นหาสูตรอาหาร
- (ไม่บังคับ) สำรวจแอปพลิเคชันขั้นสุดท้าย
2. ข้อกำหนดเบื้องต้น
- หากยังไม่มีบัญชี Google คุณต้องสร้างบัญชี Google
- ใช้บัญชีส่วนตัวแทนบัญชีงานหรือบัญชีโรงเรียน บัญชีงานและบัญชีโรงเรียนอาจมีข้อจำกัดที่ทำให้คุณเปิดใช้ API ที่จำเป็นสำหรับ Lab นี้ไม่ได้
3. การตั้งค่าโปรเจ็กต์
- ลงชื่อเข้าใช้ Google Cloud Console
- เปิดใช้การเรียกเก็บเงินใน Cloud Console
- การทำ Lab นี้ควรมีค่าใช้จ่ายน้อยกว่า $1 USD ในทรัพยากรระบบคลาวด์
- คุณสามารถทำตามขั้นตอนที่ส่วนท้ายของแล็บนี้เพื่อลบทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินเพิ่มเติม
- ผู้ใช้ใหม่มีสิทธิ์ใช้ช่วงทดลองใช้ฟรีมูลค่า$300 USD
- หากกำลังจะเข้าร่วมกิจกรรมห้องทดลองแบบลงมือปฏิบัติเสมือนจริง คุณอาจได้รับเครดิต$5 USD
- สร้างโปรเจ็กต์ใหม่หรือเลือกใช้โปรเจ็กต์ที่มีอยู่ซ้ำ
- ยืนยันว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์ของฉันในการเรียกเก็บเงินใน Cloud แล้ว
- หากโปรเจ็กต์ใหม่แสดง
Billing is disabledในคอลัมน์Billing accountให้ทำดังนี้- คลิกจุด 3 จุดใน
Actionsคอลัมน์ - คลิกเปลี่ยนการเรียกเก็บเงิน
- เลือกบัญชีสำหรับการเรียกเก็บเงินที่ต้องการใช้
- คลิกจุด 3 จุดใน
- หากคุณเข้าร่วมกิจกรรมแบบสด บัญชีดังกล่าวอาจมีชื่อว่าบัญชีสำหรับการเรียกเก็บเงินของ Google Cloud Platform เวอร์ชันทดลองใช้งาน
- หากโปรเจ็กต์ใหม่แสดง
4. เปิดใช้งานและใช้ Gemini Cloud Assist
ในงานนี้ เราจะเปิดใช้งานและใช้ Gemini Cloud Assist ขณะทำงานในคอนโซล Google Cloud นั้น Gemini Cloud Assist จะให้คำแนะนำ ช่วยคุณสร้าง กำหนดค่า และตรวจสอบโครงสร้างพื้นฐานของ Google Cloud รวมถึงยังแนะนำคำสั่ง gcloud และเขียนสคริปต์ Terraform ได้ด้วย
- หากต้องการเปิดใช้งาน Cloud Assist เพื่อใช้งาน ให้คลิกช่องค้นหาที่ด้านบนของ UI ของ Cloud Console แล้วเลือกถาม Gemini หรือถาม Gemini สำหรับ Cloud Console
- เลื่อนไปที่ส่วน API ที่จำเป็นของหน้า แล้วเปิดใช้ Gemini สำหรับ Google Cloud API
- หากไม่เห็นอินเทอร์เฟซแชททันที ให้คลิกเริ่มแชท เริ่มต้นด้วยการขอให้ Gemini อธิบายประโยชน์บางประการของการใช้ Cloud Shell Editor โปรดใช้เวลาสักครู่เพื่อสำรวจคำตอบที่สร้างขึ้น
- จากนั้นถามเกี่ยวกับประโยชน์ของ Agent Builder และวิธีที่เครื่องมือนี้จะช่วยให้คำตอบแบบ Generative มีความน่าเชื่อถือมากขึ้น
- สุดท้าย มาดูการเปรียบเทียบกัน ในหน้าต่างแชท Gemini ของ Google Cloud Console ให้ถามคำถามต่อไปนี้
What are the major steps to creating a search app grounded in a GCS data source using Vertex AI Agent builder?
5. สร้างแอปค้นหาใน Vertex AI Agent Builder สำหรับแชทบอทให้คำแนะนำด้านการทำอาหาร
เว็บไซต์ที่เรากำลังสร้างจะมีหน้าคำแนะนำเกี่ยวกับการทำอาหารซึ่งมีแชทบ็อตที่ออกแบบมาเพื่อช่วยผู้ใช้ค้นหาคำตอบสำหรับคำถามที่เกี่ยวข้องกับการทำอาหาร โดยจะขับเคลื่อนด้วย Gemini ที่อิงตามแหล่งข้อมูลซึ่งมีตำราอาหารที่เป็นสาธารณสมบัติ 70 เล่ม สมุดสูตรอาหารจะทำหน้าที่เป็นแหล่งข้อมูลที่ถูกต้องซึ่ง Gemini ใช้เมื่อตอบคำถาม
- ใช้ช่องค้นหาของ Cloud Console เพื่อไปยัง Vertex AI จากแดชบอร์ด ให้คลิกเปิดใช้ API ที่แนะนำทั้งหมด อาจใช้เวลาสักครู่ หากคุณได้รับกล่องป๊อปอัปเกี่ยวกับ API ของ Vertex AI เองที่ต้องเปิดใช้ โปรดเปิดใช้ด้วย เมื่อเปิดใช้ API แล้ว คุณจะไปยังขั้นตอนถัดไปได้
- ใช้การค้นหาเพื่อไปยังเครื่องมือสร้างเอเจนต์ จากนั้นดำเนินการต่อและเปิดใช้งาน API
- ดังที่ Gemini แนะนำในการขอคำแนะนำก่อนหน้านี้ การสร้างแอปค้นหาใน Agent Builder จะเริ่มต้นด้วยการสร้างแหล่งข้อมูลที่เชื่อถือได้ เมื่อผู้ใช้ค้นหา Gemini จะเข้าใจคำถามและวิธีสร้างคำตอบอัจฉริยะ แต่จะมองหาแหล่งข้อมูลที่ยึดโยงเพื่อหาข้อมูลที่ใช้ในคำตอบนั้น แทนที่จะดึงข้อมูลจากความรู้ที่มีอยู่แล้วในตัว จากเมนูด้านซ้าย ให้ไปที่ที่เก็บข้อมูล แล้วคลิกสร้างที่เก็บข้อมูล
- ตำราอาหารที่เป็นสาธารณสมบัติซึ่งเราใช้เป็นพื้นฐานสำหรับหน้าคำแนะนำในการทำอาหารอยู่ใน Bucket ของ Cloud Storage ในโปรเจ็กต์ภายนอก เลือกประเภทแหล่งข้อมูล Cloud Storage
- ตรวจสอบแต่ไม่ต้องเปลี่ยนตัวเลือกเริ่มต้นที่เกี่ยวข้องกับประเภทข้อมูลที่เรากำลังนำเข้า ปล่อยให้ประเภทการนำเข้าตั้งค่าเป็นโฟลเดอร์ และใช้เส้นทางของที่เก็บข้อมูลเป็น
labs.roitraining.com/labs/old-cookbooksแล้วคลิกต่อไป - ตั้งชื่อที่เก็บข้อมูล:
old-cookbooksคลิกแก้ไข แล้วเปลี่ยนรหัสเป็นold-cookbooks-idจากนั้นสร้างที่เก็บข้อมูล
Vertex AI Agent Builder รองรับแอปหลายประเภท และ Data Store จะทําหน้าที่เป็นแหล่งข้อมูลที่เชื่อถือได้สําหรับแต่ละแอป แอปค้นหาเหมาะสำหรับการใช้งานทั่วไปและการค้นหา แอป Chat มีไว้สำหรับโฟลว์ Generative ในแอปพลิเคชันแชทบ็อต/วอยซ์บ็อตที่ขับเคลื่อนด้วย Dataflow แอปแนะนำช่วยสร้างเครื่องมือแนะนำที่ดีขึ้น และแอป Agent มีไว้สำหรับสร้าง Agent ที่ขับเคลื่อนด้วย GenAI ในที่สุดแล้ว Agent น่าจะตอบโจทย์สิ่งที่เราต้องการทำได้ดีที่สุด แต่เนื่องจากผลิตภัณฑ์ยังอยู่ในช่วงตัวอย่าง เราจึงจะใช้แอปประเภท Search ต่อไป
- ใช้เมนูด้านซ้ายเพื่อไปยังแอป แล้วคลิกสร้างแอปใหม่
- คลิกสร้างในการ์ดค้นหาเว็บไซต์ ตั้งชื่อแอป
cookbook-searchคลิกแก้ไข แล้วตั้งค่ารหัสแอปเป็นcookbook-search-idตั้งค่าบริษัทเป็นGoogleแล้วคลิกต่อไป - ตรวจสอบที่เก็บข้อมูล old-cookbooks ที่คุณสร้างไว้เมื่อ 2-3 ขั้นตอนก่อนหน้า แล้วสร้างแอปค้นหา
หากตรวจสอบแท็บกิจกรรม คุณอาจเห็นว่าระบบยังคงนำเข้าและจัดทำดัชนีตำราอาหาร Agent Builder จะใช้เวลา 5 นาทีขึ้นไปในการจัดทำดัชนีหน้าเว็บหลายพันหน้าในตำราอาหาร 70 เล่มที่เราให้ ในระหว่างที่เครื่องมือทำงาน เรามาโหลดและล้างข้อมูลฐานข้อมูลสูตรอาหารบางส่วนสำหรับเครื่องมือสร้างสูตรอาหารกัน
6. โหลดและล้างข้อมูลในสมุดบันทึก Colab Enterprise โดยใช้ความช่วยเหลือจาก Gemini Code Assist
Google Cloud มีวิธีหลักๆ 2 วิธีที่คุณสามารถใช้กับสมุดบันทึก Jupyter ได้ เราจะใช้ข้อเสนอใหม่ล่าสุดของ Google นั่นคือ Colab Enterprise บางท่านอาจคุ้นเคยกับผลิตภัณฑ์ Colab ของ Google ซึ่งบุคคลและองค์กรที่ต้องการทดลองใช้สมุดบันทึก Jupyter ในสภาพแวดล้อมแบบไม่มีค่าใช้จ่ายมักจะใช้ผลิตภัณฑ์นี้ Colab Enterprise เป็นข้อเสนอเชิงพาณิชย์ของ Google Cloud ที่ผสานรวมกับผลิตภัณฑ์คลาวด์อื่นๆ ของ Google อย่างเต็มรูปแบบ และใช้ประโยชน์จากความสามารถด้านความปลอดภัยและการปฏิบัติตามข้อกำหนดของสภาพแวดล้อม GCP อย่างเต็มที่
ฟีเจอร์หนึ่งที่ Colab Enterprise มีให้คือการผสานรวมกับ Gemini Code Assist ของ Google คุณใช้ Code Assist ในโปรแกรมแก้ไขโค้ดต่างๆ ได้ และสามารถให้คำแนะนำรวมถึงคำแนะนำในบรรทัดที่ราบรื่นขณะเขียนโค้ด เราจะใช้ประโยชน์จากผู้ช่วยแบบ Generative นี้ในขณะที่เราจัดระเบียบข้อมูลสูตรอาหาร
- ใช้การค้นหาเพื่อไปยัง Colab Enterprise แล้วคลิกสร้าง Notebook หากได้รับข้อเสนอให้ทดลองใช้ฟีเจอร์ใหม่ๆ ของ Colab ให้ปิดข้อเสนอนั้น หากต้องการเปิดใช้รันไทม์ ซึ่งเป็นกำลังประมวลผลที่อยู่เบื้องหลัง Notebook ให้คลิกเชื่อมต่อที่มุมขวาบนของ Notebook ใหม่

- คลิก File > Rename เพื่อเปลี่ยนชื่อ Notebook เป็น
Data Wrangling.
- คลิก + ข้อความเพื่อสร้างกล่องข้อความใหม่ แล้วใช้ลูกศรขึ้นเพื่อย้ายกล่องข้อความให้เป็นเซลล์แรกในหน้า

- แก้ไขกล่องข้อความแล้วป้อนข้อมูลต่อไปนี้
# Data Wrangling Import the Pandas library - ในโค้ดบล็อกใต้บล็อกข้อความที่คุณเพิ่งสร้าง ให้เริ่มพิมพ์
impแล้ว Gemini Code Assist ควรจะแนะนำส่วนที่เหลือของการนำเข้าเป็นสีเทา กด Tab เพื่อยอมรับคําแนะนําimport pandas as pd - สร้างกล่องข้อความอีกกล่องใต้กล่องโค้ดนำเข้า แล้วป้อนข้อความต่อไปนี้
Create a Pandas DataFrame from: gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv. View the first few records. - สร้างและแก้ไขบล็อกโค้ดอื่น อีกครั้ง ให้เริ่มพิมพ์
df =และตรวจสอบโค้ดที่ Gemini Code Assistant สร้างขึ้น หากเห็นรายการแบบเลื่อนลงของการเติมข้อความอัตโนมัติของคีย์เวิร์ด Python เหนือคำแนะนำที่สร้างขึ้น ให้กด Escape เพื่อดูโค้ดที่แนะนำสีเทาอ่อน กด Tab อีกครั้งเพื่อยอมรับคำแนะนำ หากคำแนะนำไม่มีhead()การเรียกใช้ฟังก์ชัน ให้เพิ่มการเรียกใช้ฟังก์ชันdf = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv') df.head() - คลิกเซลล์โค้ดแรกที่คุณนำเข้า Pandas แล้วใช้เมนูคำสั่งหรือแป้นพิมพ์เพื่อเรียกใช้เซลล์ที่เลือก ในแป้นพิมพ์ shift+enter จะเรียกใช้เซลล์และเปลี่ยนโฟกัสไปยังเซลล์ถัดไป โดยจะสร้างเซลล์หากจำเป็น รอให้เซลล์ทำงานก่อนดำเนินการต่อหมายเหตุ: คุณจะเห็น [ ] ทางด้านซ้ายเมื่อเซลล์ยังไม่ได้ทำงาน ขณะที่เซลล์กำลังดำเนินการ คุณจะเห็นภาพเคลื่อนไหวการทำงานที่หมุนอยู่ เมื่อเซลล์ทำงานเสร็จแล้ว ตัวเลขจะปรากฏขึ้น เช่น [13]
- เรียกใช้เซลล์ที่โหลด CSV ลงใน DataFrame รอให้ระบบโหลดไฟล์และตรวจสอบข้อมูล 5 แถวแรก นี่คือข้อมูลสูตรอาหารที่เราจะโหลดลงใน BigQuery และในที่สุดเราจะใช้ข้อมูลนี้เพื่อเป็นพื้นฐานสำหรับเครื่องมือสร้างสูตรอาหาร
- สร้างบล็อกโค้ดใหม่และป้อนความคิดเห็นด้านล่าง หลังจากพิมพ์ความคิดเห็นแล้ว ให้ย้ายไปที่บรรทัดโค้ดถัดไป แล้วคุณจะได้รับคำแนะนำ
df.columnsจากนั้นยอมรับแล้วเรียกใช้เซลล์ เราได้แสดงให้เห็นแล้วว่าคุณมี 2 ตัวเลือกในการรับความช่วยเหลือจาก Gemini Code Assist ในสมุดบันทึก Jupyter ได้แก่ เซลล์ข้อความเหนือเซลล์โค้ด หรือความคิดเห็นภายในเซลล์โค้ด ความคิดเห็นภายในโค้ดเซลล์จะทำงานได้ดีในสมุดบันทึก Jupyter แต่แนวทางนี้จะใช้ได้ใน IDE อื่นๆ ที่รองรับ Gemini Code Assist ของ Google ด้วย# List the current DataFrame column names - มาจัดระเบียบคอลัมน์กันหน่อย เปลี่ยนชื่อคอลัมน์
Unnamed: 0เป็นidและlinkเป็นuriใช้เทคนิคพรอมต์ > โค้ดที่คุณเลือกเพื่อสร้างโค้ด จากนั้นเรียกใช้เซลล์เมื่อพอใจ# Rename the column 'Unnamed: 0' to 'id' and 'link' to 'uri' df.rename(columns={'Unnamed: 0': 'id', 'link': 'uri'}, inplace=True) - นำคอลัมน์
sourceและNERออก แล้วใช้head()เพื่อดู 2-3 แถวแรก อีกครั้งที่ Gemini ช่วยคุณได้ เรียกใช้ 2 บรรทัดสุดท้ายและตรวจสอบผลลัพธ์# Remove the source and NER columns df.drop(columns=['source', 'NER'], inplace=True) df.head() - มาดูกันว่าชุดข้อมูลของเรามีกี่ระเบียน อีกครั้ง ให้เริ่มต้นด้วยเทคนิคการแจ้งที่คุณเลือกและดูว่าคุณสามารถขอให้ Gemini ช่วยสร้างโค้ดได้หรือไม่
# Count the records in the DataFrame df.shape # count() will also work - บันทึก 2.23 ล้านรายการอาจมีสูตรอาหารมากกว่าที่เรามีเวลาทำ กระบวนการจัดทำดัชนีใน Agent Builder อาจใช้เวลานานเกินไปสำหรับการฝึกของเราในวันนี้ เราจะสุ่มตัวอย่างสูตรอาหาร 150,000 รายการและใช้ข้อมูลดังกล่าว ใช้แนวทางพรอมต์ > โค้ดเพื่อนำตัวอย่างไปจัดเก็บใน DataFrame ใหม่ชื่อ
dfs(s สำหรับ small)# Sample out 150,000 records into a DataFrame named dfs dfs = df.sample(n=150000) - ข้อมูลแหล่งที่มาของสูตรอาหารพร้อมที่จะโหลดลงใน BigQuery แล้ว ก่อนที่จะโหลด เรามาที่ BigQuery และเตรียมชุดข้อมูลเพื่อเก็บตารางกัน ใน Google Cloud Console ให้ใช้ช่องค้นหาเพื่อไปยัง BigQuery คุณอาจคลิกขวาที่ BigQuery แล้วเปิดในแท็บเบราว์เซอร์ใหม่
- หากยังไม่เห็น ให้เปิดแผงแชท AI ของ Gemini โดยใช้โลโก้ Gemini ที่ด้านขวาบนของ Cloud Console หากระบบขอให้คุณเปิดใช้ API อีกครั้ง ให้กดเปิดใช้หรือรีเฟรชหน้าเว็บ เรียกใช้พรอมต์:
What is a dataset used for in BigQuery?หลังจากสำรวจคำขอการตอบกลับแล้วHow can I create a dataset named recipe_data using the Cloud Console?เปรียบเทียบผลลัพธ์กับขั้นตอนต่อไปนี้
- ในแผง BigQuery Explorer ให้คลิกเมนูจุด 3 จุดดูการดำเนินการข้างรหัสโปรเจ็กต์ จากนั้นเลือกสร้างชุดข้อมูล

- ระบุชุดข้อมูลและรหัสของ
recipe_dataปล่อยให้ประเภทสถานที่ตั้งเป็นสหรัฐอเมริกา แล้วสร้างชุดข้อมูล หากได้รับข้อผิดพลาดว่ามีชุดข้อมูลอยู่แล้ว ให้ดำเนินการต่อ เมื่อสร้างชุดข้อมูลใน BigQuery แล้ว ให้กลับไปที่ Notebook แล้วแทรก - เปลี่ยนกลับไปที่ Notebook การจัดระเบียบข้อมูลใน Colab Enterprise ในโค้ดเซลล์ใหม่ ให้สร้างตัวแปรชื่อ
project_idและใช้ตัวแปรนี้เพื่อเก็บรหัสโปรเจ็กต์ปัจจุบัน ดูที่ด้านซ้ายบนของวิธีการเหล่านี้ ใต้ปุ่ม "สิ้นสุด Lab" คุณจะเห็นรหัสโปรเจ็กต์ปัจจุบัน นอกจากนี้ คุณยังดูได้ในหน้าแรกของ Cloud Console ด้วย กำหนดค่าให้กับตัวแปรproject_idแล้วเรียกใช้เซลล์# Create a variable to hold the current project_id project_id='YOUR_PROJECT_ID' - ใช้แนวทางพรอมต์ > โค้ดเพื่อสร้างบล็อกโค้ดที่จะแทรก DataFrame
dfsลงในตารางชื่อrecipesในชุดข้อมูลที่เราเพิ่งสร้างrecipe_dataเรียกใช้เซลล์dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
7. สร้างแอปค้นหาใน Vertex AI Agent Builder สำหรับเครื่องมือสร้างสูตรอาหาร
ยอดเยี่ยม เมื่อสร้างตารางข้อมูลสูตรอาหารแล้ว เรามาใช้ตารางนี้เพื่อสร้างแหล่งข้อมูลที่อิงตามความเป็นจริงสำหรับเครื่องมือสร้างสูตรอาหารกัน แนวทางที่เราจะใช้จะคล้ายกับที่เราใช้กับแชทบอททำอาหาร เราจะใช้ Vertex AI Agent Builder เพื่อสร้างพื้นที่เก็บข้อมูล จากนั้นใช้พื้นที่เก็บข้อมูลดังกล่าวเป็นแหล่งข้อมูลที่เชื่อถือได้สำหรับแอปค้นหา
หากต้องการ คุณสามารถขอให้ Gemini ใน Google Cloud Console ช่วยเตือนขั้นตอนในการสร้างแอปค้นหา Agent Builder หรือทำตามขั้นตอนที่ระบุไว้ด้านล่างได้
- ใช้การค้นหาเพื่อไปยังAgent Builder เปิดพื้นที่เก็บข้อมูลและสร้างพื้นที่เก็บข้อมูล คราวนี้ให้เลือกประเภทที่เก็บข้อมูล BigQuery
- ในเซลล์การเลือกตาราง ให้กดเรียกดู แล้วค้นหา
recipesเลือกปุ่มตัวเลือกข้างตาราง หากเห็นสูตรจากโปรเจ็กต์ qwiklabs-gcp-... อื่นๆ ให้เลือกสูตรที่เป็นของคุณหมายเหตุ: หากคลิกrecipesแทนที่จะเลือกปุ่มตัวเลือกข้างๆ ระบบจะเปิดแท็บใหม่ในเบราว์เซอร์และนำคุณไปยังหน้าภาพรวมของตารางใน BigQuery เพียงปิดแท็บเบราว์เซอร์แล้วเลือกปุ่มตัวเลือกใน Agent Builder - ตรวจสอบแต่ไม่ต้องเปลี่ยนตัวเลือกเริ่มต้นที่เหลือ แล้วคลิกต่อไป
- ในหน้าตรวจสอบสคีมา ให้ตรวจสอบการกำหนดค่าเริ่มต้นครั้งแรก แต่ไม่ต้องเปลี่ยนแปลงอะไร ดำเนินการต่อ
- ตั้งชื่อที่เก็บข้อมูล
recipe-dataแก้ไขรหัส Datastore และตั้งค่าเป็นrecipe-data-idสร้างที่เก็บข้อมูล - ไปที่แอปโดยใช้เมนูการนำทางด้านซ้าย แล้วสร้างแอปใหม่
- คลิกสร้างในการ์ดค้นหาเว็บไซต์ ตั้งชื่อแอปเป็น
recipe-searchแล้วคลิกแก้ไขเพื่อตั้งรหัสเป็นrecipe-search-idตั้งชื่อบริษัทเป็นGoogleแล้วดำเนินการต่อ - คราวนี้ให้ตรวจสอบแหล่งข้อมูล recipe-data สร้างแอป
ตารางฐานข้อมูลจะใช้เวลาสักครู่ในการจัดทำดัชนี ในระหว่างนี้ เรามาทดลองใช้ Data Canvas ใหม่ของ BigQuery และดูว่าเราจะพบสูตรที่น่าสนใจหรือไม่
- ใช้ช่องค้นหาเพื่อไปที่ BigQuery ที่ด้านบนของ BigQuery Studio ให้คลิกลูกศรลงข้างแท็บขวาสุด แล้วเลือกผืนผ้าใบข้อมูล ตั้งค่าภูมิภาคเป็น us-central1

- คลิกค้นหาข้อมูล ในช่องค้นหาของ Data Canvas ให้ค้นหา
recipesกดEnter/Returnเพื่อค้นหา แล้วคลิกปุ่มเพิ่มลงใน Canvas ข้างชื่อตาราง - ระบบจะโหลดการแสดงภาพของตารางสูตรอาหารลงใน Canvas ข้อมูล BigQuery คุณสามารถสำรวจสคีมาของตาราง ดูตัวอย่างข้อมูลในตาราง และตรวจสอบรายละเอียดอื่นๆ ได้ คลิกคําค้นหาใต้การแสดงตาราง
- Canvas จะโหลดกล่องโต้ตอบการค้นหา BigQuery ที่ค่อนข้างปกติ โดยมีส่วนที่เพิ่มเข้ามาคือกล่องข้อความเหนือหน้าต่างการค้นหา ซึ่งคุณใช้เพื่อแจ้งให้ Gemini ช่วยเหลือได้ มาดูกันว่าเราจะค้นหาสูตรเค้กในตัวอย่างได้ไหม เรียกใช้พรอมต์ต่อไปนี้ (โดยพิมพ์ข้อความแล้วกด
Enter/Returnเพื่อทริกเกอร์การสร้าง SQL)Please select the title and ingredients for all the recipes with a title that contains the word cake. - ดู SQL ที่สร้างขึ้น เมื่อพอใจแล้ว ให้เรียกใช้การค้นหา
- ไม่เลวเลย คุณสามารถลองใช้พรอมต์และคำค้นหาอื่นๆ ก่อนดำเนินการต่อได้ เมื่อทำการทดลอง ให้ลองใช้พรอมต์ที่เฉพาะเจาะจงน้อยลงเพื่อดูว่าอะไรใช้ได้และอะไรใช้ไม่ได้ ตัวอย่างเช่น พรอมต์นี้
(อย่าลืมเรียกใช้คำค้นหาใหม่) แสดงรายการสูตรพริก แต่ไม่แสดงส่วนผสมจนกว่าฉันจะแก้ไขเป็นDo I have any chili recipes? (ใช่ ฉันพูดว่า "โปรด" เมื่อป้อนพรอมต์ My Mama would be so proud.)I noticed that one chili recipe contained mushrooms, and who wants that in chili? ฉันจึงขอให้ Gemini ช่วยยกเว้นสูตรอาหารเหล่านั้นDo I have any chili recipes? Please include their title and ingredients.Do I have any chili recipes? Please include their title and ingredients, and ignore any recipes with mushrooms as an ingredient.
8. เปิดเครื่องมือแก้ไข Cloud Shell
- ไปที่ Cloud Shell Editor
- หากเทอร์มินัลไม่ปรากฏที่ด้านล่างของหน้าจอ ให้เปิดโดยทำดังนี้
- คลิกเมนู 3 ขีด

- คลิก Terminal
- คลิก Terminal ใหม่

- คลิกเมนู 3 ขีด
- ในเทอร์มินัล ให้ตั้งค่าโปรเจ็กต์ด้วยคำสั่งนี้
- รูปแบบ:
gcloud config set project [PROJECT_ID] - ตัวอย่าง
gcloud config set project lab-project-id-example - หากจำรหัสโปรเจ็กต์ไม่ได้ ให้ทำดังนี้
- คุณแสดงรหัสโปรเจ็กต์ทั้งหมดได้โดยใช้คำสั่งต่อไปนี้
gcloud projects list | awk '/PROJECT_ID/{print $2}'

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

- คุณควรเห็นข้อความต่อไปนี้
หากเห็นUpdated property [core/project].
WARNINGและระบบขอให้คุณDo you want to continue (Y/N)?แสดงว่าคุณอาจป้อนรหัสโปรเจ็กต์ไม่ถูกต้อง กดNกดEnterแล้วลองเรียกใช้คำสั่งgcloud config set projectอีกครั้ง
9. เปิดใช้ API
เปิดใช้ API ในเทอร์มินัลโดยทำดังนี้
gcloud services enable \
compute.googleapis.com \
sqladmin.googleapis.com \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
networkconnectivity.googleapis.com \
servicenetworking.googleapis.com \
cloudaicompanion.googleapis.com
หากได้รับแจ้งให้ให้สิทธิ์ ให้คลิกให้สิทธิ์เพื่อดำเนินการต่อ 
คำสั่งนี้อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ แต่ในที่สุดควรจะแสดงข้อความว่าสำเร็จคล้ายกับข้อความนี้
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
10. สร้างกรอบแอปพลิเคชันเว็บหลักของ Python และ Streamlit โดยใช้ความช่วยเหลือเล็กๆ น้อยๆ จาก Gemini
เมื่อทั้งที่เก็บข้อมูล Vertex AI Agent Builder ของเราได้รับการจัดทำดัชนี และแอปค้นหาของเราพร้อมใช้งานแล้ว เรามาเริ่มสร้างเว็บแอปพลิเคชันกันเลย
เราจะใช้ประโยชน์จาก Gemini Code Assist ขณะทำงาน ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ Gemini Code Assist ใน Visual Studio Code ได้ที่เอกสารประกอบที่นี่
- ในเทอร์มินัลของ Cloud Shell Editor ให้เรียกใช้คำสั่งนี้เพื่อโคลนที่เก็บแอปสูตรอาหาร
git clone https://github.com/haggman/recipe-app - เรียกใช้คำสั่งนี้เพื่อเปิดโฟลเดอร์แอปพลิเคชันใน Cloud Shell Editor
cloudshell open-workspace recipe-app/ - ก่อนที่จะไปดูโฟลเดอร์ที่โคลนและเริ่มทำงานกับเว็บแอปพลิเคชัน เราต้องให้ปลั๊กอิน Cloud Code ของเอดิเตอร์บันทึกข้อมูลเข้าสู่ Google Cloud และเปิดใช้ Gemini มาเริ่มกันเลย คลิก Cloud Code - ลงชื่อเข้าใช้ ที่ด้านซ้ายล่างของโปรแกรมแก้ไข หากไม่เห็นลิงก์ ให้รอสักครู่แล้วตรวจสอบอีกครั้ง

- หน้าต่างเทอร์มินัลจะแสดง URL แบบยาว เปิด URL ในเบราว์เซอร์และทำตามขั้นตอนเพื่อให้สิทธิ์เข้าถึงสภาพแวดล้อม Google Cloud แก่ Cloud Code ในกล่องโต้ตอบสุดท้าย ให้คัดลอกรหัสยืนยัน แล้ววางกลับลงในหน้าต่างเทอร์มินัลที่รออยู่ในแท็บเบราว์เซอร์ Cloud Shell Editor
- หลังจากนั้นไม่นาน ลิงก์ Cloud Code ที่ด้านล่างซ้ายของโปรแกรมแก้ไขจะเปลี่ยนเป็น Cloud Code - ไม่มีโปรเจ็กต์ คลิกลิงก์ใหม่เพื่อเลือกโปรเจ็กต์ พาเล็ตคำสั่งควรเปิดขึ้นที่ด้านบนของเอดิเตอร์ คลิกเลือกโปรเจ็กต์ Google Cloud แล้วเลือกโปรเจ็กต์ หลังจากนั้นสักครู่ ลิงก์ที่ด้านซ้ายล่างของโปรแกรมแก้ไขจะอัปเดตเพื่อแสดงรหัสโปรเจ็กต์ ซึ่งแสดงว่า Cloud Code เชื่อมต่อกับโปรเจ็กต์ที่ใช้งานอยู่เรียบร้อยแล้ว
- เมื่อเชื่อมต่อ Cloud Code กับโปรเจ็กต์แล้ว คุณจะเปิดใช้งาน Gemini Code Assist ได้ คลิกโลโก้ Gemini ที่มีขีดฆ่าที่ด้านขวาล่างของอินเทอร์เฟซตัวแก้ไข แผง Gemini Chat จะเปิดขึ้นทางด้านซ้ายของเครื่องมือแก้ไข คลิกเลือกโปรเจ็กต์ Google Cloud เมื่อพาเล็ตคำสั่งเปิดขึ้น ให้เลือกโปรเจ็กต์ หากทำตามขั้นตอนอย่างถูกต้อง (และ Google ไม่ได้เปลี่ยนแปลงอะไร) คุณควรเห็นหน้าต่างแชทกับ Gemini ที่ใช้งานอยู่

- ยอดเยี่ยม เมื่อตั้งค่าเทอร์มินัล, Gemini Chat และ Cloud Code เรียบร้อยแล้ว ให้เปิดแท็บExplorer แล้วใช้เวลาสักครู่เพื่อสำรวจไฟล์ในโปรเจ็กต์ปัจจุบัน

- ใน Explorer ให้เปิดไฟล์
requirements.txtเพื่อแก้ไข เปลี่ยนไปใช้แผงแชท Gemini แล้วถามว่าFrom the dependencies specified in the requirements.txt file, what type of application are we building? - เราจึงสร้างเว็บแอปพลิเคชันแบบอินเทอร์แอกทีฟโดยใช้ Python และ Streamlit ซึ่งโต้ตอบกับ Vertex AI และ Discovery Engine ตอนนี้เรามาโฟกัสที่คอมโพเนนต์ของเว็บแอปพลิเคชันกันก่อน ดังที่ Gemini กล่าวไว้ Streamlit เป็นเฟรมเวิร์กสําหรับสร้างเว็บแอปพลิเคชันที่อิงตามข้อมูลใน Python ตอนนี้ให้ถามว่า
นี่คือจุดที่ Gemini มักจะมีปัญหา Gemini สามารถเข้าถึงไฟล์ที่คุณเปิดอยู่ในเครื่องมือแก้ไขได้ แต่ไม่สามารถดูทั้งโปรเจ็กต์ได้ ลองถามคำถามต่อไปนี้Does the current project's folder structure seem appropriate for a Streamlit app? หากต้องการคำตอบที่ดีกว่านี้Given the below, does the current project's file and folder structure seem appropriate for a Streamlit app? - build.sh - Home.py - requirements.txt - pages -- Cooking_Advice.py -- Recipe_Search.py - มาดูข้อมูลเพิ่มเติมเกี่ยวกับ Streamlit กัน
ดีเลย เราจะเห็นว่า Gemini ให้ภาพรวมที่ดีแก่เรา ซึ่งรวมถึงข้อดีและข้อเสียWhat can you tell me about Streamlit? - หากต้องการดูข้อเสีย คุณอาจถามว่า
โปรดสังเกตว่าเราไม่จำเป็นต้องพูดว่า "ของ Streamlit" เนื่องจาก Gemini Chat เป็นแบบสนทนา (หลายรอบ) Gemini รู้ว่าเราคุยเรื่องอะไรกันอยู่เพราะเราอยู่ในเซสชันแชท หากต้องการล้างประวัติแชทกับ Gemini เมื่อใดก็ตาม ให้ใช้ไอคอนถังขยะที่ด้านบนของหน้าต่างแชทโค้ดกับ GeminiWhat are the major downsides or shortcomings?
11. ทําให้เว็บแอปพลิเคชันใช้งานได้ใน Cloud Run
ยอดเยี่ยม เรามีโครงสร้างแอปพลิเคชันหลักแล้ว แต่ทุกอย่างจะทำงานได้ไหม และเราควรโฮสต์ใน Google Cloud ที่ไหนดี
- ในหน้าต่างแชทของ Gemini ให้ถามว่า
If I containerize this application, what compute technologies in Google Cloud would be best for hosting it? - โปรดทราบว่าหากยังไม่ได้ทำงานใน IDE คุณก็สามารถใช้ Google Cloud Assist ได้เช่นกัน เปิด Google Cloud Console จากนั้นเปิด Gemini Cloud Assist แล้วถามว่า
คำแนะนำทั้ง 2 ชุดเหมือนกันไหม คุณเห็นด้วยหรือไม่เห็นด้วยกับคำแนะนำใดๆ ไหม โปรดทราบว่า Gemini เป็นผู้ช่วย Generative AI และเช่นเดียวกับผู้ช่วยที่เป็นมนุษย์ คุณอาจไม่เห็นด้วยกับทุกสิ่งที่ Gemini พูดเสมอไป อย่างไรก็ตาม การมีผู้ช่วยอยู่เคียงข้างเสมอขณะที่คุณทำงานใน Google Cloud และในโปรแกรมแก้ไขโค้ดจะช่วยให้คุณทำงานได้อย่างมีประสิทธิภาพมากขึ้นIf I have a containerized web application, where would be the best place to run it in Google Cloud? - สำหรับเว็บแอปพลิเคชันแบบไม่เก็บสถานะที่มีคอนเทนเนอร์ซึ่งมีอายุการใช้งานสั้น Cloud Run จะเป็นตัวเลือกที่ยอดเยี่ยม ในหน้าต่างแชทกับ Gemini ของโปรแกรมแก้ไขโค้ด ให้ลองใช้พรอมต์ต่อไปนี้
What steps would be required to run this application in Cloud Run? - ดูเหมือนว่าสิ่งแรกที่เราต้องทำคือการสร้าง Dockerfile ใช้โปรแกรมแก้ไขเพื่อสร้างไฟล์ชื่อ
Dockerfileในรูทของโฟลเดอร์โปรเจ็กต์ โปรดตรวจสอบว่าคุณไม่ได้วางไฟล์ไว้ในโฟลเดอร์ pages โดยไม่ได้ตั้งใจ เปิดไฟล์เพื่อแก้ไข - มาใช้แผงแชท Gemini ด้านข้างเพื่อสร้าง Dockerfile กัน ใช้พรอมต์เช่นเดียวกับพรอมต์ด้านล่าง เมื่อผลลัพธ์แสดงในแชท ให้ใช้เครื่องหมาย + ข้างไอคอนคัดลอกที่อยู่เหนือ Dockerfile ที่แนะนำเพื่อแทรกโค้ดที่แนะนำลงใน Dockerfile
Gemini อาจไม่แสดงคำตอบเดียวกันสำหรับพรอมต์เดียวกันเสมอไป ครั้งแรกที่ฉันขอ Dockerfile จาก Gemini ฉันได้รับไฟล์ที่ฉันจะแนะนำให้คุณใช้ เมื่อสักครู่ฉันได้รับคำแนะนำว่าCreate a Dockerfile for the application in the current folder. The dependencies are defined in requirements.txt and I want you to use the Python 3 slim bookworm base image. นี่คือ Dockerfile ที่ยอดเยี่ยม ฉันจะทำให้มันง่ายขึ้นหน่อย เราไม่จำเป็นต้องใช้ส่วน apt-get เนื่องจากทุกอย่างที่จำเป็นสำหรับ Python อยู่ในอิมเมจพื้นฐานของเราแล้ว นอกจากนี้ การใช้สภาพแวดล้อมเสมือนในคอนเทนเนอร์ Python ยังเป็นการสิ้นเปลืองพื้นที่ด้วย ดังนั้นฉันจึงจะนำออก ไม่จำเป็นต้องใช้คำสั่ง expose แต่ก็ใช้ได้ นอกจากนี้ ยังพยายามเริ่ม main.py ซึ่งฉันไม่มี# Base image FROM python:3-bookworm-slim # Set working directory WORKDIR /app # Install dependencies RUN apt-get update && apt-get install -y \ build-essential \ libpq-dev \ gcc \ python3-dev \ && rm -rf /var/lib/apt/lists/* # Install pip and virtualenv RUN pip install --upgrade pip virtualenv # Create virtual environment RUN python3 -m venv venv # Activate virtual environment WORKDIR /app/venv/bin RUN . activate # Install Streamlit and libraries from requirements.txt RUN pip install -r requirements.txt # Copy application files COPY . /app # Expose port 8501 for Streamlit EXPOSE 8501 # Start Streamlit app CMD ["streamlit", "run", "main.py"] - ในโฟลเดอร์
recipe-appให้สร้างไฟล์ชื่อDockerfileแล้ววางเนื้อหาต่อไปนี้FROM python:3.11-slim-bookworm WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt COPY . . CMD ["streamlit", "run", "Home.py"] - Gemini สามารถทำงานผ่านหน้าต่างแชทได้ แต่ก็สามารถทำงานในไฟล์โค้ดได้โดยตรงโดยใช้ความคิดเห็น เช่น ที่เราใช้ใน Notebook การจัดระเบียบข้อมูล และยังเรียกใช้ได้โดยใช้ Control+i ใน Windows หรือ Command+i ใน Mac คลิกที่ใดก็ได้ใน
Dockerfileแล้วเปิดใช้งาน Gemini โดยใช้คำสั่ง Command+i / Control+i ที่เหมาะสม - ที่พรอมต์ ให้ป้อนคำสั่งด้านล่าง ตรวจสอบและยอมรับการเปลี่ยนแปลง
เจ๋งไปเลยใช่ไหมล่ะ คุณเคยต้องทำงานกับโค้ดของคนอื่นกี่ครั้ง แต่ต้องเสียเวลาทำความเข้าใจพื้นฐานเกี่ยวกับงานที่ไม่มีความคิดเห็นก่อนที่จะเริ่มทำการเปลี่ยนแปลงได้ Gemini ช่วยคุณได้Please comment the current file. - ตอนนี้ให้ถาม Gemini ว่าคุณจะใช้ Cloud Run เพื่อสร้างและติดตั้งใช้งานอิมเมจใหม่ชื่อ
recipe-web-appจาก Dockerfile ในโฟลเดอร์ปัจจุบันได้อย่างไรHow could I use gcloud to build a new Cloud Run service named recipe-web-app from the current directory? - มาสร้างและทำให้แอปพลิเคชันใช้งานได้กัน ในหน้าต่างเทอร์มินัล ให้เรียกใช้คำสั่ง
gcloud run deploy หากได้รับข้อความแจ้งให้สร้างที่เก็บ Artifact Registry ให้กดgcloud run deploy recipe-web-app \ --allow-unauthenticated \ --source=. \ --region=us-central1 \ --port=8501enter/returnDeploying from source requires an Artifact Registry Docker repository to store built containers. A repository named cloud-run-source-deploy in region us-central1 will be created. Do you want to continue (Y/n)?
- หากดูขั้นตอนการสร้าง ขั้นตอนแรกคือการสร้างที่เก็บ Docker ของ Artifact Registry จากนั้นจะใช้ Cloud Build เพื่อสร้างอิมเมจคอนเทนเนอร์จาก Dockerfile ในโฟลเดอร์ในเครื่อง สุดท้าย ระบบจะทําให้อิมเมจ Docker ใช้งานได้ในบริการ Cloud Run ใหม่ เมื่อสิ้นสุดสคริปต์ คุณจะได้รับ URL การทดสอบ Cloud Run เพื่อใช้
เปิดลิงก์ที่แสดงในแท็บใหม่ของเบราว์เซอร์ โปรดใช้เวลาสักครู่เพื่อสำรวจโครงสร้างและหน้าต่างๆ ของแอปพลิเคชัน เยี่ยม ตอนนี้เราต้องเชื่อมต่อฟังก์ชัน Generative AI
12. เชื่อมต่อหน้าคำแนะนำในการทำอาหารกับแอป Agent Builder สำหรับการค้นหาสมุดสูตรอาหาร
เรามีเฟรมเวิร์กสำหรับเว็บแอปพลิเคชันที่ทำงานอยู่ แต่เราต้องเชื่อมต่อหน้างานทั้ง 2 หน้ากับแอปค้นหา Vertex AI Agent Builder ทั้ง 2 แอป มาเริ่มกันที่คำแนะนำในการทำอาหาร
- เปิดแท็บ Cloud Shell Editor ไว้ ในคอนโซล Google Cloud ให้ใช้การค้นหาเพื่อไปยัง Chat ใน Vertex AI
- ในบานหน้าต่างหน้าการตั้งค่าทางด้านขวา ให้ตั้งค่าโมเดลเป็น gemini-1.5-flash-002 เลื่อนขีดจำกัดโทเค็นเอาต์พุตขึ้นไปจนถึงสูงสุดเพื่อให้โมเดลแสดงคำตอบที่ยาวขึ้นได้หากจำเป็น เปิดการตั้งค่าตัวกรองความปลอดภัย ตั้งค่าเนื้อหาที่เป็นวาจาสร้างความเกลียดชัง เนื้อหาเกี่ยวกับเรื่องเพศอย่างโจ่งแจ้ง และเนื้อหาการคุกคามเป็นบล็อกบางส่วน ตั้งค่าเนื้อหาที่เป็นอันตรายเป็นบล็อกบางส่วน แล้วบันทึก เราจะให้คะแนนเนื้อหาที่เป็นอันตรายต่ำลงเล็กน้อยเนื่องจาก Gemini อาจตีความการพูดถึงมีดและการตัดเป็นการกระทำที่รุนแรง
- เลื่อนปุ่มเปิด/ปิดเพื่อเปิดใช้การอ้างอิง แล้วคลิกปรับแต่ง ตั้งค่าแหล่งที่มาของการเชื่อมต่อแหล่งข้อมูลเป็น Vertex AI Search และใช้เส้นทางพื้นที่เก็บข้อมูลต่อไปนี้ เปลี่ยน YOUR_PROJECT_ID เป็นรหัสโปรเจ็กต์ที่อยู่ใกล้ปุ่ม "สิ้นสุด Lab" ในวิธีการเหล่านี้ จากนั้นบันทึกการตั้งค่าการอ้างอิง
หมายเหตุ: หากได้รับข้อผิดพลาด แสดงว่าคุณไม่ได้เปลี่ยนรหัสโปรเจ็กต์เป็นรหัสโปรเจ็กต์จริง หรืออาจพลาดขั้นตอนที่คุณเปลี่ยนรหัสที่เก็บข้อมูล Agent Builder ของสูตรอาหารเก่า ตรวจสอบ Agent Builder > Data Stores > old-cookbooks เพื่อดูรหัส Data Store จริงprojects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id - ทดสอบข้อความแชท 2-3 ข้อความ คุณอาจเริ่มต้นด้วยการดำเนินการต่อไปนี้ หรือจะลองใช้ตัวกรองอื่นๆ อีก 2-3 รายการก็ได้
How can I tell if a tomato is ripe? - โมเดลทำงานได้แล้ว ตอนนี้มาทดลองใช้โค้ดกัน คลิกล้างการสนทนาเพื่อให้การสนทนาของเราไม่กลายเป็นส่วนหนึ่งของโค้ด แล้วคลิกรับโค้ด

- ที่ด้านบนของหน้าต่างโค้ด ให้กดเปิด Notebook เพื่อให้เราทดลองและปรับแต่งโค้ดใน Colab Enterprise ก่อนที่จะผสานรวมเข้ากับแอป
- โปรดใช้เวลาสักครู่เพื่อทำความคุ้นเคยกับโค้ด มาทำการเปลี่ยนแปลง 2-3 อย่างเพื่อปรับให้เข้ากับสิ่งที่เราต้องการ ก่อนเริ่มต้น ให้เรียกใช้โค้ดเซลล์แรกเพื่อเชื่อมต่อกับ Compute และติดตั้ง AI Platform SDK หลังจากบล็อกทำงานแล้ว ระบบจะแจ้งให้คุณเริ่มเซสชันใหม่ ในกรณีดังกล่าวให้ดำเนินการสร้างคีย์ตามที่ระบบแจ้ง
- ไปที่โค้ดที่เราดึงออกมาจาก Vertex AI Studio เปลี่ยนชื่อเมธอด multiturn_generate_content เป็น
start_chat_session - เลื่อนไปที่การเรียกใช้เมธอด
model = GenerativeModel(โค้ดที่มีอยู่จะกำหนดgeneration_configและsafety_settingsแต่ไม่ได้ใช้จริง แก้ไขการสร้างGenerativeModelให้มีลักษณะดังนี้model = GenerativeModel( "gemini-1.5-flash-002", tools=tools, generation_config=generation_config, safety_settings=safety_settings, ) - สุดท้าย ให้เพิ่มบรรทัดสุดท้ายลงในเมธอดใต้
chat = model.start_chat()เพื่อให้ฟังก์ชันแสดงออบเจ็กต์chatฟังก์ชันที่เสร็จสมบูรณ์แล้วควรมีลักษณะดังด้านล่างหมายเหตุ: อย่าคัดลอกโค้ดนี้ลงใน Notebook โดยมีไว้เพื่อตรวจสอบความถูกต้องเท่านั้นdef start_chat_session(): vertexai.init(project="qwiklabs-gcp-02-9a7298ceaaec", location="us-central1") tools = [ Tool.from_retrieval( retrieval=grounding.Retrieval( source=grounding.VertexAISearch(datastore="projects/qwiklabs-gcp-02-9a7298ceaaec/locations/global/collections/default_collection/dataStores/old-cookbooks-id"), ) ), ] model = GenerativeModel( "gemini-1.5-flash-002", tools=tools, generation_config=generation_config, safety_settings=safety_settings, ) chat = model.start_chat() return chat - เลื่อนไปที่ด้านล่างของเซลล์โค้ดและเปลี่ยนบรรทัดสุดท้ายที่เรียกฟังก์ชันเก่าเพื่อให้เรียกชื่อฟังก์ชันใหม่และจัดเก็บออบเจ็กต์ที่ส่งคืนในตัวแปร
chatเมื่อพอใจกับการเปลี่ยนแปลงแล้ว ให้เรียกใช้เซลล์chat = start_chat_session() - สร้างโค้ดเซลล์ใหม่และเพิ่มความคิดเห็น
# Use chat to invoke Gemini and print out the responseย้ายไปที่บรรทัดถัดไปแล้วพิมพ์respจากนั้น Gemini จะเติมข้อความในบล็อกให้คุณโดยอัตโนมัติ อัปเดตพรอมต์เป็นHow can I tell if a tomato is ripe?เรียกใช้เซลล์response = chat.send_message("How can I tell if a tomato is ripe?") print(response) - นั่นคือการตอบกลับที่ถูกต้อง แต่ส่วนที่เราต้องการจริงๆ คือฟิลด์
textที่ซ้อนกัน แก้ไขบล็อกโค้ดเพื่อพิมพ์เฉพาะส่วนนั้น เช่นresponse = chat.send_message("How can I tell if a tomato is ripe?") print(response.candidates[0].content.parts[0].text) - ดี ตอนนี้เรามีโค้ดแชทที่ใช้งานได้แล้ว มาผสานรวมโค้ดนี้เข้ากับเว็บแอปพลิเคชันกัน คัดลอกเนื้อหาทั้งหมดของเซลล์โค้ดที่สร้างฟังก์ชัน
start_chat_session(เราไม่จำเป็นต้องใช้เซลล์ทดสอบ) หากคลิกเซลล์ คุณจะคลิกเมนู 3 จุดที่มุมขวาบนแล้วคัดลอกจากตรงนั้นได้
- เปลี่ยนไปที่แท็บ Cloud Shell Editor แล้วเปิด
pages\Cooking_Advice.pyเพื่อแก้ไข - ค้นหาความคิดเห็น
# # Add the code you copied from your notebook below this message # - วางโค้ดที่คัดลอกไว้ใต้ความคิดเห็นเพิ่มโค้ด เยี่ยม ตอนนี้เรามีส่วนที่ขับเคลื่อนเครื่องมือแชทผ่านการเรียก Gemini ที่อิงตามข้อมูล ตอนนี้เรามาผสานรวมเข้ากับ Streamlit กัน
- ค้นหาส่วนของโค้ดที่แสดงความคิดเห็นไว้ใต้ความคิดเห็นโดยตรง
# # Here's the code to setup your session variables # Uncomment this block when instructed # - ยกเลิกการแสดงความคิดเห็นในส่วนนี้ของโค้ด (จนถึงส่วน
Setup done, let's build the page UIถัดไป) แล้วสำรวจ ซึ่งจะสร้างหรือดึงตัวแปรเซสชันแชทและประวัติ - จากนั้นเราต้องผสานรวมฟังก์ชันประวัติและการแชทเข้ากับ UI เลื่อนในโค้ดจนกว่าจะพบความคิดเห็นด้านล่าง
# # Here's the code to create the chat interface # Uncomment the below code when instructed # - ยกเลิกการแสดงความคิดเห็นในโค้ดที่เหลือใต้ความคิดเห็นและใช้เวลาสักครู่เพื่อสำรวจโค้ด หากต้องการ ให้ไฮไลต์ข้อความนั้น แล้วให้ Gemini อธิบายฟังก์ชันการทำงาน
- ยอดเยี่ยม ตอนนี้เรามาสร้างแอปพลิเคชันและทําให้ใช้งานได้กัน เมื่อ URL กลับมาแล้ว ให้เปิดแอปพลิเคชันแล้วลองใช้หน้า Cooking Advisor คุณอาจถามเกี่ยวกับมะเขือเทศสุก หรือบอทอาจรู้วิธีเตรียมบรัสเซลส์สเปราต์ที่ดี
gcloud run deploy recipe-web-app \ --allow-unauthenticated \ --source=. \ --region=us-central1 \ --port=8501
เยี่ยมไปเลยใช่ไหมล่ะ ที่ปรึกษาด้านการทำอาหาร AI ส่วนตัวของคุณ :-)
13. (ไม่บังคับ) เชื่อมต่อหน้าการค้นหาสูตรอาหารกับแอป Agent Builder สำหรับการค้นหาสูตรอาหาร
เมื่อเชื่อมต่อหน้าคำแนะนำในการทำอาหารกับแหล่งข้อมูลที่อ้างอิง เราได้ใช้ Gemini API โดยตรง สำหรับ Recipe Search เราจะเชื่อมต่อกับแอปค้นหา Vertex AI Agent Builder โดยตรง
- ใน Cloud Shell Editor ให้เปิดหน้า
pages/Recipe_Search.pyเพื่อแก้ไข ตรวจสอบโครงสร้างของหน้าเว็บ - ตั้งค่ารหัสโปรเจ็กต์ที่ด้านบนของไฟล์
- ตรวจสอบฟังก์ชัน
search_sampleโค้ดนี้มาจากเอกสารประกอบของ Discovery Engine โดยตรงไม่มากก็น้อยที่นี่ คุณดูสำเนาที่ใช้งานได้ในสมุดบันทึกนี้ได้ที่นี่ การเปลี่ยนแปลงเพียงอย่างเดียวที่ฉันทำคือการส่งคืนresponse.resultsแทนที่จะส่งคืนเฉพาะผลลัพธ์ หากไม่มีการระบุประเภทการคืนค่า ประเภทการคืนค่าจะเป็นออบเจ็กต์ที่ออกแบบมาเพื่อแบ่งหน้าผลลัพธ์ ซึ่งเป็นสิ่งที่เราไม่จำเป็นต้องใช้สำหรับแอปพลิเคชันพื้นฐาน - เลื่อนไปที่ท้ายสุดของไฟล์และยกเลิกการแสดงความคิดเห็นในทั้งส่วนด้านล่าง
Here are the first 5 recipes I found - ไฮไลต์ทั้งส่วนที่คุณเพิ่งยกเลิกการแสดงความคิดเห็น แล้วเปิดแชทโค้ดของ Gemini ถาม
Explain the highlighted codeหากคุณไม่ได้เลือกอะไรไว้ Gemini จะอธิบายทั้งไฟล์ได้ หากคุณไฮไลต์ส่วนหนึ่งและขอให้ Gemini อธิบาย แสดงความคิดเห็น หรือปรับปรุง Gemini ก็จะทำตามนั้น โปรดสละเวลาสักครู่เพื่ออ่านคำอธิบาย การใช้สมุดบันทึก Colab Enterprise เป็นวิธีที่ยอดเยี่ยมในการสำรวจ Gemini API ก่อนที่จะผสานรวมเข้ากับแอปพลิเคชัน โดยเฉพาะอย่างยิ่งจะเป็นประโยชน์ในการสำรวจ API ใหม่ๆ บางรายการที่อาจยังไม่มีเอกสารประกอบที่ดีเท่าที่ควร - ในหน้าต่างเทอร์มินัลของโปรแกรมแก้ไข ให้เรียกใช้
build.shเพื่อทำให้แอปพลิเคชันสุดท้ายใช้งานได้ รอจนกว่าจะมีการติดตั้งใช้งานเวอร์ชันใหม่ก่อนทำขั้นตอนถัดไป
14. (ไม่บังคับ) สำรวจแอปพลิเคชันขั้นสุดท้าย
โปรดสละเวลาสักครู่เพื่อดูแอปพลิเคชันขั้นสุดท้าย
- ในคอนโซล Google Cloud ให้ใช้การค้นหาเพื่อไปยัง
Cloud Runจากนั้นคลิกเข้าไปใน recipe-web-app - ค้นหา URL การทดสอบแอปพลิเคชัน (ที่ด้านบน) แล้วเปิดในแท็บเบราว์เซอร์ใหม่
- หน้าแรกของแอปพลิเคชันควรปรากฏขึ้น โปรดสังเกตเลย์เอาต์และการนำทางพื้นฐานที่ Streamlit มีให้ โดยไฟล์ Python จากโฟลเดอร์
pagesจะแสดงเป็นตัวเลือกการนำทาง และระบบจะโหลดHome.pyเป็นหน้าแรก ไปที่หน้าคำแนะนำในการทำอาหาร - หลังจากนั้นไม่นาน อินเทอร์เฟซแชทจะปรากฏขึ้น อีกครั้งที่โปรดสังเกตเลย์เอาต์หลักที่สวยงามซึ่ง Streamlit มีให้
- ลองถามคำถามเกี่ยวกับการทำอาหาร 2-3 ข้อ แล้วดูว่าบ็อตทำงานอย่างไร เช่น
Do you have any advice for preparing broccoli? How about a classic chicken soup recipe? Tell me about meringue. - ทีนี้มาหาสูตรอาหารกัน ไปที่หน้าค้นหาสูตรอาหารแล้วลองค้นหา 2-3 ครั้ง เช่น
Chili con carne Chili, corn, rice Lemon Meringue Pie A dessert containing strawberries
15. ยินดีด้วย
คุณได้สร้างแอปพลิเคชันที่ใช้ประโยชน์จากแอปพลิเคชัน Vertex AI Agent Builder ในระหว่างนี้ คุณได้สำรวจ Gemini Cloud Assist, Gemini Code Assist และฟีเจอร์ภาษาธรรมชาติเป็น SQL ของ Data Canvas ใน BigQuery ยอดเยี่ยมมาก
ล้างข้อมูล
Cloud SQL ไม่มีระดับฟรีและจะเรียกเก็บเงินจากคุณหากคุณใช้ต่อไป คุณสามารถลบโปรเจ็กต์ Cloud เพื่อหลีกเลี่ยงการเรียกเก็บเงินเพิ่มเติม
แม้ว่า Cloud Run จะไม่เรียกเก็บเงินเมื่อไม่ได้ใช้บริการ แต่คุณอาจยังคงถูกเรียกเก็บเงินสำหรับการจัดเก็บอิมเมจคอนเทนเนอร์ใน Artifact Registry การลบโปรเจ็กต์ Cloud จะหยุดการเรียกเก็บเงินสำหรับทรัพยากรทั้งหมดที่ใช้ภายในโปรเจ็กต์นั้น
หากต้องการ ให้ลบโปรเจ็กต์โดยทำดังนี้
gcloud projects delete $GOOGLE_CLOUD_PROJECT
นอกจากนี้ คุณอาจต้องการลบทรัพยากรที่ไม่จำเป็นออกจากดิสก์ Cloud Shell ด้วย ดังนี้
- ลบไดเรกทอรีโปรเจ็กต์ Codelab
rm -rf ~/task-app - คำเตือน! การดำเนินการถัดไปนี้จะยกเลิกไม่ได้ หากต้องการลบทุกอย่างใน Cloud Shell เพื่อเพิ่มพื้นที่ว่าง คุณสามารถลบไดเรกทอรีหน้าแรกทั้งหมดได้ โปรดระมัดระวังและตรวจสอบว่าได้บันทึกทุกอย่างที่คุณต้องการเก็บไว้ที่อื่นแล้ว
sudo rm -rf $HOME