1. ภาพรวม
กล่องเครื่องมือ Gen AI สําหรับฐานข้อมูลคือเซิร์ฟเวอร์แบบโอเพนซอร์สจาก Google ที่ช่วยให้คุณสร้างเครื่องมือ Gen AI สําหรับการโต้ตอบกับฐานข้อมูลได้ง่ายขึ้น ซึ่งจะช่วยให้คุณพัฒนาเครื่องมือได้ง่ายขึ้น รวดเร็วขึ้น และปลอดภัยยิ่งขึ้นด้วยการจัดการกับความซับซ้อนต่างๆ เช่น การรวมการเชื่อมต่อ การตรวจสอบสิทธิ์ และอื่นๆ ซึ่งจะช่วยสร้างเครื่องมือ Gen AI ที่ช่วยให้ตัวแทนเข้าถึงข้อมูลในฐานข้อมูลได้ กล่องเครื่องมือมีสิ่งต่อไปนี้
การพัฒนาที่ง่ายขึ้น: ผสานรวมเครื่องมือกับตัวแทนด้วยโค้ดไม่ถึง 10 บรรทัด ใช้เครื่องมือซ้ำระหว่างตัวแทนหรือเฟรมเวิร์กหลายรายการ และทำให้ใช้งานเครื่องมือเวอร์ชันใหม่ได้ง่ายขึ้น
ประสิทธิภาพที่ดีขึ้น: แนวทางปฏิบัติแนะนำ เช่น การรวมการเชื่อมต่อ การตรวจสอบสิทธิ์ และอื่นๆ
ความปลอดภัยที่เพิ่มขึ้น: การรับรองที่ผสานรวมเพื่อให้เข้าถึงข้อมูลของคุณได้อย่างปลอดภัยยิ่งขึ้น
การสังเกตการณ์จากต้นทางถึงปลายทาง: เมตริกและการติดตามที่พร้อมใช้งานทันทีพร้อมการรองรับ OpenTelemetry ในตัว
กล่องเครื่องมือจะอยู่ระหว่างเฟรมเวิร์กการประสานงานของแอปพลิเคชันและฐานข้อมูล โดยเป็นแพลตฟอร์มควบคุมที่ใช้แก้ไข เผยแพร่ หรือเรียกใช้เครื่องมือ ซึ่งช่วยให้การจัดการเครื่องมือง่ายขึ้นด้วยการจัดเตรียมพื้นที่ส่วนกลางสำหรับจัดเก็บและอัปเดตเครื่องมือ ซึ่งจะช่วยให้คุณแชร์เครื่องมือระหว่างตัวแทนและแอปพลิเคชัน รวมถึงอัปเดตเครื่องมือเหล่านั้นได้โดยไม่ต้องทำให้แอปพลิเคชันใช้งานได้อีกครั้ง
สิ่งที่คุณจะสร้าง
ในกิจกรรมนี้ คุณจะได้สร้างแอปพลิเคชันที่ใช้เครื่องมือเพื่อดำเนินการค้นหาฐานข้อมูล (AlloyDB) แบบง่ายที่เรียกใช้ได้จากตัวแทนหรือแอปพลิเคชัน Generative AI โดยคุณจะต้องดำเนินการต่อไปนี้
- ติดตั้งกล่องเครื่องมือ
- ตั้งค่าเครื่องมือ (ที่ออกแบบมาเพื่อทำงานใน AlloyDB) ในเซิร์ฟเวอร์ Toolbox
- ติดตั้งใช้งาน Toolbox ใน Cloud Run
- ทดสอบเครื่องมือด้วยปลายทาง Cloud Run ที่ติดตั้งใช้งาน
- สร้างฟังก์ชัน Cloud Run เพื่อเรียกใช้กล่องเครื่องมือ
ข้อกำหนด
2. ก่อนเริ่มต้น
สร้างโปรเจ็กต์
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
- ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์หรือไม่
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud คลิก "เปิดใช้งาน Cloud Shell" ที่ด้านบนของคอนโซล Google Cloud
- เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์แล้วหรือยัง และโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์ที่ถูกต้องหรือไม่โดยใช้คําสั่งต่อไปนี้
gcloud auth list
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
- หากยังไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คําสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project <YOUR_PROJECT_ID>
- เปิดใช้ API ที่จำเป็นโดยเรียกใช้คำสั่งต่อไปนี้ทีละรายการในเทอร์มินัล Cloud Shell
นอกจากนี้ยังมีคำสั่งเดียวที่จะเรียกใช้คำสั่งด้านล่างด้วย แต่หากคุณเป็นผู้ใช้บัญชีทดลอง คุณอาจพบปัญหาเกี่ยวกับโควต้าเมื่อพยายามเปิดใช้รายการเหล่านี้พร้อมกัน ด้วยเหตุนี้จึงต้องป้อนคำสั่งทีละรายการในบรรทัดเดียว
gcloud services enable alloydb.googleapis.com
gcloud services enable compute.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com
gcloud services enable servicenetworking.googleapis.com
gcloud services enable run.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable cloudfunctions.googleapis.com
gcloud services enable aiplatform.googleapis.com
วิธีอื่นในการเรียกใช้คําสั่ง gcloud คือผ่านคอนโซลโดยการค้นหาผลิตภัณฑ์แต่ละรายการหรือใช้ลิงก์นี้
หากมี API ใดขาดหายไป คุณจะเปิดใช้ได้เสมอในระหว่างการติดตั้งใช้งาน
โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ
3. การตั้งค่าฐานข้อมูล
ในบทแนะนํานี้ เราจะใช้ AlloyDB เป็นฐานข้อมูลเพื่อเก็บข้อมูลค้าปลีก โดยจะใช้คลัสเตอร์เพื่อเก็บทรัพยากรทั้งหมด เช่น ฐานข้อมูลและบันทึก แต่ละคลัสเตอร์มีอินสแตนซ์หลักที่เป็นแหล่งเข้าถึงข้อมูล ตารางจะเก็บข้อมูลจริง
มาสร้างคลัสเตอร์ อินสแตนซ์ และตาราง AlloyDB ที่ระบบจะโหลดชุดข้อมูลอีคอมเมิร์ซกัน
สร้างคลัสเตอร์และอินสแตนซ์
- ไปยังหน้า AlloyDB ใน Cloud Console
วิธีที่ง่ายในการค้นหาหน้าส่วนใหญ่ใน Cloud Console คือค้นหาโดยใช้แถบค้นหาของคอนโซล
- เลือกสร้างคลัสเตอร์จากหน้าดังกล่าว
- คุณจะเห็นหน้าจอดังภาพด้านล่าง สร้างคลัสเตอร์และอินสแตนซ์ด้วยค่าต่อไปนี้ (ตรวจสอบว่าค่าตรงกันในกรณีที่คุณทำโคลนโค้ดแอปพลิเคชันจากรีโป)
- รหัสคลัสเตอร์: "
vector-cluster
" - รหัสผ่าน: "
alloydb
" - เข้ากันได้กับ PostgreSQL 15
- ภูมิภาค: "
us-central1
" - เครือข่าย: "
default
"
- เมื่อเลือกเครือข่ายเริ่มต้น คุณจะเห็นหน้าจอดังภาพด้านล่าง เลือก "ตั้งค่าการเชื่อมต่อ"
- จากนั้นเลือก "ใช้ช่วง IP ที่มีการจัดสรรโดยอัตโนมัติ" แล้วคลิก "ต่อไป" หลังจากตรวจสอบข้อมูลแล้ว ให้เลือกสร้างการเชื่อมต่อ
- เมื่อตั้งค่าเครือข่ายแล้ว คุณก็สร้างคลัสเตอร์ต่อได้ คลิก "สร้างคลัสเตอร์" เพื่อตั้งค่าคลัสเตอร์ให้เสร็จสมบูรณ์ตามที่แสดงด้านล่าง
อย่าลืมเปลี่ยนรหัสอินสแตนซ์เป็น "
vector-instance"
โปรดทราบว่าการสร้างคลัสเตอร์จะใช้เวลาประมาณ 10 นาที เมื่อดำเนินการเสร็จเรียบร้อยแล้ว คุณควรเห็นหน้าจอที่แสดงภาพรวมของคลัสเตอร์ที่คุณเพิ่งสร้างขึ้น
4. การนำเข้าข้อมูล
ตอนนี้ถึงเวลาเพิ่มตารางที่มีข้อมูลเกี่ยวกับร้านค้า ไปที่ AlloyDB เลือกคลัสเตอร์หลัก แล้วเลือก AlloyDB Studio
คุณอาจต้องรอให้อินสแตนซ์สร้างเสร็จ เมื่อสร้างเสร็จแล้ว ให้ลงชื่อเข้าใช้ AlloyDB โดยใช้ข้อมูลเข้าสู่ระบบที่คุณสร้างระหว่างการสร้างคลัสเตอร์ ใช้ข้อมูลต่อไปนี้เพื่อตรวจสอบสิทธิ์ใน PostgreSQL
- ชื่อผู้ใช้ : "
postgres
" - ฐานข้อมูล : "
postgres
" - รหัสผ่าน : "
alloydb
"
เมื่อตรวจสอบสิทธิ์เข้าสู่ AlloyDB Studio เรียบร้อยแล้ว คุณจะป้อนคำสั่ง SQL ในเครื่องมือแก้ไขได้ คุณสามารถเพิ่มหน้าต่างเครื่องมือแก้ไขได้หลายหน้าต่างโดยใช้เครื่องหมายบวกทางด้านขวาของหน้าต่างสุดท้าย
คุณสามารถป้อนคําสั่งสําหรับ AlloyDB ในหน้าต่างเครื่องมือแก้ไขได้โดยใช้ตัวเลือกเรียกใช้ จัดรูปแบบ และล้างตามต้องการ
เปิดใช้ส่วนขยาย
เราจะใช้ส่วนขยาย pgvector
และ google_ml_integration
ในการสร้างแอปนี้ ส่วนขยาย pgvector ช่วยให้คุณจัดเก็บและค้นหาการฝังเวกเตอร์ได้ ส่วนขยาย google_ml_integration มีฟังก์ชันที่คุณใช้เข้าถึงปลายทางการคาดการณ์ Vertex AI เพื่อรับการคาดการณ์ใน SQL เปิดใช้ส่วนขยายเหล่านี้โดยเรียกใช้ DDL ต่อไปนี้
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CREATE EXTENSION IF NOT EXISTS vector;
หากต้องการตรวจสอบส่วนขยายที่เปิดใช้ในฐานข้อมูล ให้เรียกใช้คําสั่ง SQL นี้
select extname, extversion from pg_extension;
สร้างตาราง
สร้างตารางโดยใช้คำสั่ง DDL ด้านล่าง
CREATE TABLE toys ( id VARCHAR(25), name VARCHAR(25), description VARCHAR(20000), quantity INT, price FLOAT, image_url VARCHAR(200), text_embeddings vector(768)) ;
เมื่อเรียกใช้คําสั่งข้างต้นสําเร็จ คุณควรจะดูตารางในฐานข้อมูลได้
นําเข้าข้อมูล
สําหรับห้องทดลองนี้ เรามีข้อมูลทดสอบประมาณ 72 ระเบียนในไฟล์ SQL นี้ โดยไฟล์ดังกล่าวจะมีช่อง id, name, description, quantity, price, image_url
คุณจะกรอกข้อมูลในช่องอื่นๆ ในภายหลังในแท็บห้องทดลอง
คัดลอกบรรทัด/คำสั่งแทรกจากตรงนั้น แล้ววางบรรทัดเหล่านั้นในแท็บเครื่องมือแก้ไขว่าง แล้วเลือก "เรียกใช้"
หากต้องการดูเนื้อหาตาราง ให้ขยายส่วน "เครื่องมือสํารวจ" จนกว่าจะเห็นตารางชื่อ "เครื่องแต่งกาย" เลือกเครื่องหมายตรีโคลอน (⋮) เพื่อดูตัวเลือกในการค้นหาตาราง คำสั่ง SELECT จะเปิดในแท็บเครื่องมือแก้ไขใหม่
ให้สิทธิ์
เรียกใช้คำสั่งด้านล่างเพื่อมอบสิทธิ์ดำเนินการในฟังก์ชัน embedding
ให้แก่ผู้ใช้ postgres
GRANT EXECUTE ON FUNCTION embedding TO postgres;
มอบบทบาทผู้ใช้ Vertex AI ให้กับบัญชีบริการ AlloyDB
ไปที่เทอร์มินัล Cloud Shell แล้วป้อนคำสั่งต่อไปนี้
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
5. สร้างการฝังสําหรับบริบท
คอมพิวเตอร์ประมวลผลตัวเลขได้ง่ายกว่าประมวลผลข้อความ ระบบการฝังจะแปลงข้อความให้เป็นชุดตัวเลขทศนิยมที่เรียกว่าการฝังเวกเตอร์ ซึ่งควรแสดงถึงข้อความนั้นๆ ไม่ว่าจะใช้ถ้อยคำอย่างไร ใช้ภาษาใด ฯลฯ
ตัวอย่างเช่น สถานที่ริมทะเลอาจเรียกว่า "ริมน้ำ" "ริมชายหาด" "เดินจากห้องของคุณไปยังทะเล" "sur la mer" "на берегу океана" เป็นต้น คําเหล่านี้ดูแตกต่างกันทั้งหมด แต่ความหมายเชิงอรรถศาสตร์หรือในศัพท์ของแมชชีนเลิร์นนิง เอ็มเบ็ดดิดของคําเหล่านี้ควรอยู่ใกล้กันมาก
เมื่อข้อมูลและบริบทพร้อมแล้ว เราจะเรียกใช้ SQL เพื่อเพิ่มการฝังคำอธิบายผลิตภัณฑ์ลงในตารางในช่อง embedding
รูปแบบการฝังมีหลากหลายรูปแบบที่คุณใช้ได้ เราใช้ text-embedding-005
จาก Vertex AI โปรดใช้รูปแบบการฝังเดียวกันตลอดทั้งโปรเจ็กต์
หมายเหตุ: หากคุณใช้โปรเจ็กต์ Google Cloud เวอร์ชันเก่า คุณอาจต้องใช้รูปแบบการฝังข้อความเวอร์ชันเก่า เช่น textembedding-gecko ต่อไป
กลับไปที่แท็บ AlloyDB Studio แล้วพิมพ์ DML ต่อไปนี้
UPDATE toys set text_embeddings = embedding( 'text-embedding-005', description);
ดูตาราง toys
อีกครั้งเพื่อดูการฝังบางส่วน อย่าลืมเรียกใช้คำสั่ง SELECT อีกครั้งเพื่อดูการเปลี่ยนแปลง
SELECT id, name, description, price, quantity, image_url, text_embeddings FROM toys;
ซึ่งจะแสดงผลเวกเตอร์การฝังที่ดูเหมือนอาร์เรย์ของตัวเลขทศนิยมสำหรับคำอธิบายของของเล่นดังที่แสดงด้านล่าง
หมายเหตุ: โปรเจ็กต์ Google Cloud ที่สร้างขึ้นใหม่ในรุ่นไม่มีค่าใช้จ่ายอาจพบปัญหาเกี่ยวกับโควต้าในเรื่องจำนวนคำขอฝังที่อนุญาตต่อวินาทีสำหรับรูปแบบการฝัง เราขอแนะนำให้คุณใช้การค้นหาตัวกรองสำหรับรหัส แล้วเลือกระเบียน 1-5 รายการและอื่นๆ ขณะสร้างการฝัง
6. ทำการค้นหาเวกเตอร์
เมื่อตาราง ข้อมูล และการฝังพร้อมแล้ว ให้ทำการค้นหาเวกเตอร์แบบเรียลไทม์สำหรับข้อความค้นหาของผู้ใช้
สมมติว่าผู้ใช้ถามคำถามต่อไปนี้
"I want a white plush teddy bear toy with a floral pattern
"
คุณค้นหารายการที่ตรงกันได้โดยเรียกใช้ข้อความค้นหาด้านล่าง
select * from toys
ORDER BY text_embeddings <=> CAST(embedding('text-embedding-005', 'I want a white plush teddy bear toy with a floral pattern') as vector(768))
LIMIT 5;
มาดูรายละเอียดของข้อความค้นหานี้กัน
ในข้อความค้นหานี้
- ข้อความค้นหาของผู้ใช้คือ "
I want a white plush teddy bear toy with a floral pattern.
" - เรากําลังแปลงเป็นข้อมูลเชิงลึกในเมธอด
embedding()
โดยใช้โมเดลtext-embedding-005
ขั้นตอนนี้น่าจะดูคุ้นเคยหลังจากขั้นตอนสุดท้ายที่เราใช้ฟังก์ชันการฝังกับรายการทั้งหมดในตาราง - "
<=>
" แสดงถึงการใช้วิธีการวัดระยะทางความคล้ายคลึงกันของ COSINES คุณดูการวัดความคล้ายคลึงทั้งหมดที่มีได้ในเอกสารประกอบของ pgvector - เรากําลังแปลงผลลัพธ์ของวิธีการฝังเป็นประเภทเวกเตอร์เพื่อให้เข้ากันได้กับเวกเตอร์ที่จัดเก็บไว้ในฐานข้อมูล
- LIMIT 5 แสดงว่าเราต้องการนำข้อความที่ใกล้เคียงที่สุด 5 รายการสำหรับข้อความค้นหา
ผลลัพธ์จะมีลักษณะดังนี้
ดังที่คุณเห็นในผลการค้นหา รายการที่ตรงกันนั้นใกล้เคียงกับข้อความค้นหามาก ลองเปลี่ยนข้อความเพื่อดูว่าผลลัพธ์จะเปลี่ยนแปลงอย่างไร
7. การเตรียม AlloyDB สําหรับการโต้ตอบของกล่องเครื่องมือ
ในการเตรียมการตั้งค่ากล่องเครื่องมือ ให้เปิดใช้การเชื่อมต่อ IP สาธารณะในอินสแตนซ์ AlloyDB เพื่อให้เครื่องมือใหม่เข้าถึงฐานข้อมูลได้
- ไปที่อินสแตนซ์ AlloyDB แล้วคลิก "แก้ไข" เพื่อไปที่หน้าแก้ไขอินสแตนซ์หลัก
- ไปที่ส่วนการเชื่อมต่อ IP สาธารณะ เลือกช่องทําเครื่องหมายเปิดใช้ IP สาธารณะ แล้วป้อนที่อยู่ IP ของเครื่อง Cloud Shell
- หากต้องการดู IP ของเครื่อง Cloud Shell ให้ไปที่เทอร์มินัล Cloud Shell แล้วป้อน ifconfig จากผลลัพธ์ ให้ระบุที่อยู่ inet ของ eth0 แล้วแทนที่ตัวเลข 2 หลักสุดท้ายด้วย 0.0 ที่มีขนาดมาสก์ "/16" เช่น รูปแบบจะเป็น "XX.XX.0.0/16" โดยที่ XX คือตัวเลข
- วาง IP นี้ในช่องข้อความ "เครือข่าย" ของเครือข่ายภายนอกที่ได้รับอนุญาตในหน้าแก้ไขอินสแตนซ์
- คลิก "อัปเดตอินสแตนซ์" เมื่อเสร็จแล้ว
ซึ่งอาจใช้เวลาสักครู่
8. การติดตั้งกล่องเครื่องมือ
- คุณสามารถสร้างโฟลเดอร์โปรเจ็กต์เพื่อจัดเก็บรายละเอียดเครื่องมือได้ ในกรณีนี้ เนื่องจากเรากําลังทํางานกับข้อมูลของร้านขายของเล่น เราจึงสร้างโฟลเดอร์ชื่อ "toystore" และไปที่โฟลเดอร์ดังกล่าว ไปที่ Cloud Shell Terminal และตรวจสอบว่าได้เลือกโปรเจ็กต์และโปรเจ็กต์แสดงในพรอมต์ของเทอร์มินัลแล้ว เรียกใช้คําสั่งด้านล่างจากเทอร์มินัล Cloud Shell
mkdir toystore
cd toystore
- เรียกใช้คําสั่งด้านล่างเพื่อดาวน์โหลดและติดตั้งกล่องเครื่องมือในโฟลเดอร์ใหม่
# see releases page for other versions
export VERSION=0.1.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
- สลับไปที่เครื่องมือแก้ไข Cloud Shell ขยายโฟลเดอร์ "toystore" ที่สร้างขึ้นใหม่ แล้วสร้างไฟล์ใหม่ชื่อ tools.yaml คัดลอกเนื้อหาด้านล่าง แทนที่ YOUR_PROJECT_ID แล้วตรวจสอบว่ารายละเอียดการเชื่อมต่ออื่นๆ ทั้งหมดถูกต้องหรือไม่
sources:
alloydb-toys:
kind: "alloydb-postgres"
project: "YOUR_PROJECT_ID"
region: "us-central1"
cluster: "vector-cluster"
instance: "vector-instance"
database: "postgres"
user: "postgres"
password: "alloydb"
tools:
get-toy-price:
kind: postgres-sql
source: alloydb-toys
description: Get the price of a toy based on a description.
parameters:
- name: description
type: string
description: A description of the toy to search for.
statement: |
SELECT price FROM toys
ORDER BY text_embeddings <=> CAST(embedding('text-embedding-005', $1) AS vector(768))
LIMIT 1;
ในเครื่องมือนี้ เราจะค้นหารายการที่ตรงกับข้อความค้นหาของผู้ใช้ (คำอธิบายของของเล่นที่กำหนดเอง) มากที่สุดและแสดงราคาของรายการนั้น นอกจากนี้ คุณยังแก้ไขเพื่อค้นหาราคาเฉลี่ยของของเล่นที่ตรงกันมากที่สุด 5 อันดับแรกได้ด้วย โดยทำดังนี้
select avg(price) from ( SELECT price FROM toys ORDER BY text_embeddings <=> CAST(embedding(‘text-embedding-005', $1) AS vector(768)) LIMIT 5 ) as price;
คุณได้กำหนดเครื่องมือเรียบร้อยแล้ว
ดูรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่า tools.yaml ได้ที่เอกสารประกอบนี้
- สลับไปที่ Cloud Shell Terminal แล้วป้อนคำสั่งต่อไปนี้เพื่อเริ่มเซิร์ฟเวอร์กล่องเครื่องมือที่มีการกำหนดค่าเครื่องมือ
./toolbox --tools_file "tools.yaml"
- ตอนนี้หากคุณเปิดเซิร์ฟเวอร์ในโหมดแสดงตัวอย่างเว็บบนระบบคลาวด์ คุณควรจะเห็นเซิร์ฟเวอร์กล่องเครื่องมือทำงานอยู่พร้อมเครื่องมือใหม่ชื่อ
get-toy-price.
9. การปรับใช้ Cloud Run ของกล่องเครื่องมือ
มาทำให้ใช้งานได้ใน Cloud Run เพื่อที่คุณจะได้นำเครื่องมือนี้ไปใช้จริง
- ทําตามวิธีการในหน้านี้ทีละรายการจนกว่าจะถึงคําสั่ง
gcloud run deploy toolbox
ที่อยู่ในจุดที่ 3 ในส่วน "ทำให้ใช้งานได้ใน Cloud Run" คุณต้องใช้ตัวเลือกแรก ไม่ใช่ตัวเลือกที่ 2 ซึ่งใช้สำหรับเมื่อคุณใช้วิธีการของเครือข่าย VPC - เมื่อติดตั้งใช้งานเรียบร้อยแล้ว คุณจะได้รับปลายทางที่ติดตั้งใช้งาน Cloud Run ของเซิร์ฟเวอร์ Toolbox ทดสอบด้วยคําสั่ง CURL
คุณพร้อมแล้วที่จะใช้เครื่องมือที่เพิ่งติดตั้งใช้งานในแอปพลิเคชันตัวแทนของคุณ
10. เชื่อมต่อแอปกับกล่องเครื่องมือ
ในส่วนนี้ เราจะสร้างแอปพลิเคชันขนาดเล็กเพื่อทดสอบเครื่องมือของคุณเพื่อโต้ตอบกับความต้องการของแอปพลิเคชันและดึงข้อมูลการตอบกลับ
- ไปที่ Google Colab แล้วเปิดโน้ตบุ๊กใหม่
- เรียกใช้คำสั่งต่อไปนี้ในโน้ตบุ๊ก
pip install toolbox-langchain
from toolbox_langchain import ToolboxClient
# Replace with your Toolbox service's URL
toolbox = ToolboxClient("https://toolbox-*****-uc.a.run.app")
tool = toolbox.load_tool("get-toy-price")
# Invoke the tool with a search text to pass as the parameter
result = tool.invoke({"description": "white plush toy"})
# Print result
print(result)
- คุณควรเห็นผลลัพธ์ดังต่อไปนี้
เครื่องมือนี้เรียกใช้ในแอปพลิเคชัน Python ที่ใช้ชุดเครื่องมือ toolbox-langchain
.
อย่างชัดเจน
- หากต้องการใช้เครื่องมือนี้และเชื่อมโยงกับตัวแทนภายในแอปพลิเคชันที่ผสานรวม LangGraph คุณก็ทําได้ง่ายๆ ด้วยชุดเครื่องมือ
langgraph
- โปรดดูข้อมูลโค้ด
11. ย้ายข้อมูลไปยังระบบคลาวด์
มาสรุปข้อมูลโค้ด Python นี้ในฟังก์ชัน Cloud Run เพื่อทำให้เป็นแบบ Serverless กัน
- คัดลอกแหล่งที่มาจากโฟลเดอร์ที่เก็บโค้ดเพื่อส่งไปยัง Cloud Functions
- ไปที่คอนโซล Cloud Run Functions แล้วคลิก "สร้างฟังก์ชัน"
- ปล่อยไว้โดยไม่ตรวจสอบสิทธิ์สําหรับแอปพลิเคชันสาธิต แล้วเลือกรันไทม์ Python 3.11 ในหน้าถัดไป
- คัดลอกไฟล์
main.py
และrequirements.txt
จากรีโปต้นทางที่แชร์ไว้ในขั้นตอนที่ 1 แล้ววางลงในไฟล์ที่เกี่ยวข้อง - ติดตั้งใช้งานฟังก์ชันนี้ คุณก็จะมีปลายทาง REST สำหรับเครื่องมือการคาดการณ์ราคาเพื่อเข้าถึงในเว็บแอปพลิเคชันของร้านขายของเล่น
- ปลายทางควรมีลักษณะดังนี้
https://us-central1-*****.cloudfunctions.net/toolbox-toys
- คุณสามารถทดสอบได้ในคอนโซล Cloud Functions โดยตรงโดยไปที่แท็บการทดสอบ แล้วป้อนข้อมูลต่อไปนี้เป็นอินพุตคำขอ
{
"`search`"`:` "`White plush toy`"
}
- คลิก "ทดสอบฟังก์ชัน" หรือเรียกใช้ใน Cloud Shell Terminal ตามที่คุณต้องการ คุณควรเห็นผลลัพธ์ทางด้านขวาใต้ชื่อ "เอาต์พุต"
12. ขอแสดงความยินดี
ยินดีด้วย คุณสร้างเครื่องมือที่มีประสิทธิภาพและเป็นแบบโมดูลอย่างแท้จริงซึ่งสามารถโต้ตอบกับฐานข้อมูล แพลตฟอร์ม และเฟรมเวิร์กการจัดระเบียบ Generative AI เพื่อช่วยสร้างแอปพลิเคชันตัวแทนได้สําเร็จ