เกี่ยวกับ Codelab นี้
1 ภาพรวม
กล่องเครื่องมือ MCP สำหรับฐานข้อมูลเป็นเซิร์ฟเวอร์โอเพนซอร์สจาก Google ที่ช่วยให้สร้างเครื่องมือ Gen AI สำหรับการโต้ตอบกับฐานข้อมูลได้ง่ายขึ้น ซึ่งจะช่วยให้คุณพัฒนาเครื่องมือได้ง่ายขึ้น รวดเร็วขึ้น และปลอดภัยยิ่งขึ้นด้วยการจัดการกับความซับซ้อนต่างๆ เช่น การรวมการเชื่อมต่อ การตรวจสอบสิทธิ์ และอื่นๆ ซึ่งจะช่วยสร้างเครื่องมือ Gen AI ที่ช่วยให้ตัวแทนเข้าถึงข้อมูลในฐานข้อมูลได้ กล่องเครื่องมือมีบริการต่อไปนี้
การพัฒนาที่ง่ายขึ้น: ผสานรวมเครื่องมือกับตัวแทนของคุณโดยใช้โค้ดน้อยกว่า 10 บรรทัด นำเครื่องมือกลับมาใช้ใหม่ระหว่าง Agent หรือเฟรมเวิร์กหลายรายการ และติดตั้งใช้งานเครื่องมือเวอร์ชันใหม่ได้ง่ายขึ้น
ประสิทธิภาพที่ดีขึ้น: แนวทางปฏิบัติแนะนำ เช่น การรวมการเชื่อมต่อ การตรวจสอบสิทธิ์ และอื่นๆ
การรักษาความปลอดภัยที่ดียิ่งขึ้น: การตรวจสอบสิทธิ์แบบผสานรวมเพื่อการเข้าถึงข้อมูลของคุณที่ปลอดภัยยิ่งขึ้น
ความสามารถในการสังเกตได้ตั้งแต่ต้นจนจบ: เมตริกที่พร้อมใช้งานทันทีและการติดตามด้วยการรองรับ OpenTelemetry ในตัว
กล่องเครื่องมือจะอยู่ระหว่างเฟรมเวิร์กการประสานงานของแอปพลิเคชันและฐานข้อมูล โดยเป็นแพลตฟอร์มควบคุมที่ใช้แก้ไข เผยแพร่ หรือเรียกใช้เครื่องมือ ซึ่งจะลดความซับซ้อนในการจัดการเครื่องมือด้วยการจัดเตรียมพื้นที่ส่วนกลางสำหรับจัดเก็บและอัปเดตเครื่องมือ ซึ่งจะช่วยให้คุณแชร์เครื่องมือระหว่างตัวแทนและแอปพลิเคชัน รวมถึงอัปเดตเครื่องมือเหล่านั้นได้โดยไม่ต้องทำให้แอปพลิเคชันของคุณใช้งานได้อีกครั้ง
สิ่งที่คุณจะสร้าง
คุณจะสร้างแอปพลิเคชันที่ใช้เครื่องมือเพื่อค้นหาฐานข้อมูลแบบง่าย (AlloyDB) ที่เรียกใช้จาก Agent หรือแอปพลิเคชัน Generative AI ได้ ซึ่งเป็นส่วนหนึ่งของห้องทดลองนี้ ในกรณีนี้ คุณจะ
- ติดตั้งกล่องเครื่องมือ MCP สำหรับฐานข้อมูล
- ตั้งค่าเครื่องมือ (ซึ่งออกแบบมาให้ทำงานใน AlloyDB) บนเซิร์ฟเวอร์กล่องเครื่องมือ
- ทำให้กล่องเครื่องมือ MCP ใช้งานได้สำหรับฐานข้อมูลบน 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
นอกจากนี้ยังมีคำสั่งเดียวที่ใช้ทำงานด้านล่างได้ด้วย แต่หากคุณเป็นผู้ใช้บัญชีทดลองใช้ คุณอาจพบปัญหาด้านโควต้าขณะพยายามเปิดใช้คำสั่งเหล่านี้พร้อมกันเป็นจำนวนมาก เราจึงจัดคําสั่งไว้บรรทัดละ 1 รายการ
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 ใน Editor ได้ คุณเพิ่มหน้าต่าง Editor ได้หลายหน้าต่างโดยใช้เครื่องหมายบวกทางด้านขวาของหน้าต่างสุดท้าย
คุณป้อนคำสั่งสำหรับ 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
ส่วนฟิลด์อื่นๆ จะถูกป้อนไว้ในห้องทดลองภายหลัง
คัดลอกบรรทัด/แทรกคำสั่งจากที่นั่น แล้ววางบรรทัดเหล่านั้นในแท็บเครื่องมือแก้ไขที่ว่างเปล่าและเลือก RUN
หากต้องการดูเนื้อหาตาราง ให้ขยายส่วน "สำรวจ" จนกว่าคุณจะเห็นตารางชื่อเครื่องแต่งกาย เลือกสามเหลี่ยม (⋮) เพื่อดูตัวเลือกในการค้นหาตาราง คำสั่ง SELECT จะเปิดขึ้นในแท็บ Editor ใหม่
ให้สิทธิ์
เรียกใช้คำสั่งด้านล่างเพื่อให้สิทธิ์การดำเนินการในฟังก์ชัน 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
ขั้นตอนนี้ควรดูคุ้นเคยหลังจากขั้นตอนสุดท้าย ซึ่งเราใช้ฟังก์ชันการฝังกับรายการทั้งหมดในตาราง - "
<=>
" แสดงถึงการใช้วิธีระยะทาง COSINE SIMILARITY ดูการวัดความคล้ายคลึงทั้งหมดที่มีอยู่ในเอกสารประกอบของ pgvector - เรากำลังแปลงผลลัพธ์ของวิธีการฝังเป็นประเภทเวกเตอร์เพื่อให้เข้ากันได้กับเวกเตอร์ที่จัดเก็บไว้ในฐานข้อมูล
- LIMIT 5 หมายถึงเราต้องการดึงข้อมูลใกล้เคียงที่สุด 5 คนสำหรับข้อความค้นหา
ผลลัพธ์มีลักษณะดังนี้
จากสิ่งที่คุณเห็นในผลการค้นหา รายการที่ตรงกันนั้นค่อนข้างใกล้เคียงกับข้อความค้นหา ลองเปลี่ยนข้อความเพื่อดูว่าผลลัพธ์เปลี่ยนไปอย่างไร
7 กำลังเตรียม AlloyDB สำหรับการโต้ตอบกับกล่องเครื่องมือ
เพื่อเตรียมความพร้อมสำหรับการตั้งค่ากล่องเครื่องมือ เรามาเปิดใช้การเชื่อมต่อ IP สาธารณะในอินสแตนซ์ AlloyDB ของเราเพื่อให้เครื่องมือใหม่เข้าถึงฐานข้อมูลกัน
- ไปที่อินสแตนซ์ AlloyDB คลิก "แก้ไข" แล้วไปที่หน้าแก้ไขอินสแตนซ์หลัก
- ไปที่ส่วนการเชื่อมต่อ IP สาธารณะ เลือกช่องทำเครื่องหมาย "เปิดใช้ IP สาธารณะ" แล้วป้อนที่อยู่ IP ของเครื่อง Cloud Shell
- หากต้องการรับ IP ของเครื่อง Cloud Shell ให้ไปที่เทอร์มินัล Cloud Shell แล้วป้อน ifconfig จากผลการค้นหา ให้ระบุที่อยู่ eth0 inet และแทนที่ตัวเลข 2 หลักสุดท้ายด้วย 0.0 ด้วยขนาดมาสก์ "/16" ตัวอย่างเช่น "XX.XX.0.0/16" ที่ XX คือตัวเลข
- วาง IP นี้ในช่องข้อความ "เครือข่าย" ของเครือข่ายภายนอกที่ได้รับอนุญาตของหน้าแก้ไขอินสแตนซ์
- คลิก "อัปเดตอินสแตนซ์" เมื่อเสร็จสิ้น
ซึ่งอาจใช้เวลา 2-3 นาทีจึงจะเสร็จสมบูรณ์
8 กล่องเครื่องมือ MCP สำหรับการติดตั้งฐานข้อมูล
- คุณสร้างโฟลเดอร์โปรเจ็กต์เพื่อจัดเก็บรายละเอียดเครื่องมือได้ สำหรับกรณีนี้ เนื่องจากเรากำลังดำเนินการกับข้อมูลร้านขายของเล่น เรามาสร้างโฟลเดอร์ชื่อ "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 Editor ขยายโฟลเดอร์ "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 average(price) from ( SELECT price FROMเก็บข้อมูล 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 ใช้งานได้ของกล่องเครื่องมือ MCP สำหรับฐานข้อมูล
มาทำให้ใช้งานได้ใน Cloud Run กัน เพื่อให้คุณสามารถนำเครื่องมือนี้ไปใช้จริงได้
- ทำตามวิธีการในหน้านี้ทีละรายการจนกว่าจะถึงคำสั่ง
gcloud run deploy toolbox
ที่อยู่ในจุดที่ 3 ในส่วน "ทำให้ใช้งานได้ใน Cloud Run" คุณต้องมีตัวเลือกแรก ไม่ใช่ตัวเลือกที่สองเมื่อใช้วิธีเครือข่าย VPC - เมื่อติดตั้งใช้งานสำเร็จแล้ว คุณจะได้รับปลายทางการทำให้ใช้งานได้ของ Cloud Run ของเซิร์ฟเวอร์กล่องเครื่องมือ ทดสอบด้วยคำสั่ง CURL
เคล็ดลับ
โปรดทำตามวิธีการในหน้านั้นให้ดีเพื่อไม่ให้พลาด
คุณพร้อมใช้เครื่องมือใหม่ที่ใช้งานในแอปพลิเคชัน Agent แล้ว
10 เชื่อมต่อแอปด้วยกล่องเครื่องมือ MCP สำหรับฐานข้อมูล
ในส่วนนี้ เราจะสร้างแอปพลิเคชันขนาดเล็กเพื่อทดสอบเครื่องมือของคุณให้มีการโต้ตอบกับความต้องการของแอปพลิเคชันและเรียกการตอบสนอง
- ไปที่ Google Colab และเปิดสมุดบันทึกใหม่
- เรียกใช้โค้ดต่อไปนี้ในสมุดบันทึก
!pip install toolbox-core
from toolbox_core import ToolboxClient
# Replace with your Toolbox service's URL
toolbox = ToolboxClient("https://toolbox-*****-uc.a.run.app")
# This tool can be passed to your application!
tool = toolbox.load_tool("get-toy-price")
# If there are multiple tools
# These tools can be passed to your application!
# tools = await client.load_toolset("<<toolset_name>>")
# 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
.
- หากต้องการใช้เครื่องมือนี้และเชื่อมโยงกับ Agent ภายในแอปพลิเคชันที่ผสานรวม LangGraph คุณสามารถทำได้อย่างง่ายดายโดยใช้ชุดเครื่องมือ
langgraph
- ดูข้อมูลโค้ดสำหรับกรณีนี้
11 นำไปยังระบบคลาวด์!!!
มารวมข้อมูลโค้ด Python นี้ในฟังก์ชัน Cloud Run เพื่อทำให้เป็น Serverless กัน
- คัดลอกแหล่งที่มาจากโฟลเดอร์ที่เก็บโค้ดเพื่อเข้าถึง Cloud Functions
- ไปที่คอนโซลฟังก์ชัน Cloud Run แล้วคลิกสร้างฟังก์ชัน
- โปรดอย่าตรวจสอบสิทธิ์สำหรับแอปพลิเคชันเดโมและเลือกรันไทม์ของ Python 3.11 ในหน้าถัดไป
- คัดลอกไฟล์
main.py
และrequirements.txt
จากที่เก็บต้นทางที่แชร์ในขั้นตอนที่ 1 แล้ววางลงในไฟล์ที่เกี่ยวข้อง - แทนที่ URL ของเซิร์ฟเวอร์ใน main.py ด้วย URL ของเซิร์ฟเวอร์
- ทำให้ฟังก์ชันใช้งานได้และคุณมีปลายทาง REST สำหรับเครื่องมือคาดการณ์ราคาที่จะเข้าถึงได้ในเว็บแอปพลิเคชัน toystore
- ปลายทางควรมีลักษณะดังนี้
https://us-central1-*****.cloudfunctions.net/toolbox-toys
- ซึ่งคุณทดสอบได้โดยตรงในคอนโซล Cloud Functions โดยไปที่แท็บการทดสอบแล้วป้อนข้อมูลต่อไปนี้เป็นอินพุตคำขอ
{
"search": "White plush toy"
}
- คลิก "ทดสอบฟังก์ชัน" หรือเรียกใช้ใน Cloud Shell Terminal ทุกรายการที่คุณเลือกใช้ คุณควรเห็นผลลัพธ์ทางด้านขวาใต้ชื่อ "เอาต์พุต"
12 ขอแสดงความยินดี
ยินดีด้วย คุณได้สร้างเครื่องมือแบบแยกส่วนที่มีประสิทธิภาพซึ่งสามารถโต้ตอบกันในฐานข้อมูล แพลตฟอร์ม และเฟรมเวิร์กการจัดการ Generative AI ได้ทั้งหมดเพื่อช่วยสร้างแอปพลิเคชัน Agent ของคุณ