▶SUBTHAIแปลไทย · ซับ · พากย์⚙
บทความแปลภาษาไทย · YouTube

Day 5A: AI Agent Deployment — Running Agents in Production

0:000:00
เล่นเสียงต้นฉบับของวิดีโอ พร้อมแสดงซับไทยซิงก์ตามเวลา
กำลังโหลดวิดีโอ…
01

สรุปย่อ

ประเด็นสำคัญจากวิดีโอ

- **ช่อง:** Adspolitan Knowledge Studio · **ความยาว:** ~15 นาที · **ลิงก์:** https://www.youtube.com/watch?v=r3GDPvlVZXg

# สรุป: Day 5A: AI Agent Deployment — Running Agents in Production

- **ช่อง:** Adspolitan Knowledge Studio · **ความยาว:** ~15 นาที · **ลิงก์:** https://www.youtube.com/watch?v=r3GDPvlVZXg

## ประเด็นหลัก

- Assignment สุดท้ายของคอร์ส หัวข้อ prototype to production — เนื้อหาหลักคือ A2A protocol (agent-to-agent) สำหรับให้เอเจนต์อิสระหลายตัวสื่อสารและร่วมมือกันข้ามเครือข่ายและ framework
- เอเจนต์เดี่ยวทำทุกอย่างไม่ได้: ทีมต่างๆ สร้างเอเจนต์ต่างกัน ใช้ภาษา/framework ต่างกัน จึงต้องมีโปรโตคอลสื่อสารมาตรฐาน — A2A คือคำตอบ
- จุดเด่นของ A2A: เรียกเอเจนต์อื่นเหมือนเรียก tool, framework/language agnostic, รักษาสัญญาที่เป็นทางการผ่าน agent cards
- กรณีใช้งานหลัก 3 แบบ: cross framework (ADK ↔ framework อื่น), cross language (Python เรียก Java/Node.js), cross organization (เอเจนต์ภายใน ↔ service ผู้ให้บริการภายนอก)
- ตัวอย่างใน codelab: product catalog agent (ฝั่งผู้ขายภายนอก ให้ข้อมูลสินค้า) และ customer support agent (ฝั่งเรา ตอบลูกค้า) — จำลองรันบน localhost เพื่อการเรียน ใน production จะรันคนละโครงสร้างพื้นฐานแล้วคุยกันผ่านเน็ต
- ขั้นตอน 6 ขั้น: สร้าง product catalog agent → เปิดเผยผ่าน A2A → เริ่ม server → สร้าง customer support agent → ทดสอบการสื่อสาร → เข้าใจ flow
- Agent card = นามบัตร JSON ของเอเจนต์ (ชื่อ คำอธิบาย เวอร์ชัน skills URL endpoints) เผยแพร่ที่ path มาตรฐาน well-known/agent-card.json — ทุกเอเจนต์ A2A ต้องมี
- การเปิดเผย ADK agent ผ่าน A2A ทำได้ง่ายที่สุดด้วยฟังก์ชัน A2A ของ ADK: ห่อเอเจนต์ใน server ที่เข้ากันได้ (FastAPI/Starlette + uvicorn) แล้วสร้าง agent card อัตโนมัติ
- Flow การทำงาน: ลูกค้าถาม → support agent มอบหมายให้ sub-agent (remote A2A proxy) → ส่ง A2A request ผ่าน HTTP → catalog agent เรียก get_product_info → ตอบกลับ → support agent ประกอบคำตอบสุดท้ายให้ลูกค้า
- การใช้งานจริง: microservices, การเชื่อมบุคคลที่สาม, cross language, cross organization; ไอเดียต่อยอด: เพิ่ม inventory/shipping agent + coordinator, ใช้ฐานข้อมูลจริง (MongoDB), เชื่อม payment gateway จริง
- ขั้นถัดไป (optional): deploy product catalog agent ขึ้น Vertex AI Agent Engine บน Google Cloud แล้วอัปเดต URL ใน agent card เป็น production server จริง

## ความเห็นสรุป

วิดีโอนี้อธิบาย A2A ได้กระชับและเป็นรูปเป็นร่าง ผ่านตัวอย่าง e-commerce ที่รันได้จริงบน localhost ครับ จุดที่ควรเก็บคือแนวคิด agent card และการที่ remote agent ถูกมองเป็น sub-agent ผ่าน proxy ทำให้โค้ดฝั่งผู้ใช้เขียนเหมือนใช้เอเจนต์ local ทั่วไปครับ ชื่อวิดีโอ ("Deployment — Running Agents in Production") สื่อกว้างกว่าเนื้อหาจริงซึ่งเจาะ A2A เป็นหลัก ส่วน deployment จริงบน Agent Engine ถูกพูดถึงเพียงสั้นๆ ตอนท้ายครับ
02

คำแปลเต็ม

แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ

นี่คือวันที่ห้าของคอร์ส 5 วัน จึงเป็น assignment สุดท้ายของเราครับ เป็นเรื่อง prototype to production ครับ โปรดฟังพอดแคสต์สรุปซึ่งช่วยให้เข้าใจว่าหน่วยนี้มีอะไรบ้าง และโปรดอ่าน white paper เรื่อง prototype to production ซึ่งเป็นข้อมูลประกอบของพอดแคสต์นี้ครับ white paper ฉบับนี้เป็นคู่มือทางเทคนิคเกี่ยวกับวงจรการดำเนินงานของ AI agents โดยเน้นเรื่อง deployment การ scaling และการทำ productionization ครับ

ใน assignment นี้เราจะสำรวจความท้าทายของการยกระบบ agentic จากต้นแบบสู่โซลูชันระดับองค์กร โดยให้ความสนใจเป็นพิเพศกับ agent-to-agent หรือ A2A protocol ครับ ใน codelab วันนี้เราจะเรียนวิธีสร้างระบบของเอเจนต์อิสระหลายตัวที่สื่อสารและร่วมมือกันได้โดยใช้ A2A protocol และส่วนที่เขียนว่า optional เราจะเรียนวิธีพาเอเจนต์จากเครื่อง local ของเราไปสู่ service ที่พร้อมใช้งานและ scale ได้ใน production โดย deploy ขึ้น Vertex AI Agent Engine บน Google Cloud ครับ เอาล่ะ เริ่มกันเลย ผมจะคลิกที่ explore เพื่อเปิด notebook แล้วกด copy and edit ครับ

ใน assignment นี้ส่วน A เราจะเข้าใจเรื่องการสื่อสาร A2A กับ ADK ครับ เราจะเข้าใจวิธีสร้างระบบ multi-agent (ระบบหลายเอเจนต์) ที่เอเจนต์ต่างๆ สื่อสารและร่วมมือกันได้โดยใช้ A2A protocol ครับ ใน notebook นี้เราจะเข้าใจ A2A protocol และเมื่อไหร่ควรใช้มันเทียบกับ sub-agents เรียนรู้ architecture pattern ที่พบบ่อยของ A2A เปิดเผย ADK agent ให้เป็น service ใช้เอเจนต์ระยะไกล และสร้างระบบ product catalog integration ครับ

เมื่อเราสร้างระบบ AI ที่ซับซ้อนมากขึ้น เราจะพบว่าเอเจนต์เดี่ยวทำทุกอย่างไม่ได้ ซึ่งเราพูดกันมาตั้งแต่วันแรกแล้ว คุณต้องให้เอเจนต์ร่วมมือกัน ทีมต่างๆ สร้างเอเจนต์ต่างๆ กัน เอเจนต์อาจใช้ภาษาหรือ framework ต่างกัน ดังนั้นเราจึงต้องมีโปรโตคอลการสื่อสารแบบมาตรฐานครับ จะแก้ปัญหานี้อย่างไร คำตอบคือ A2A protocol ครับ คุณสามารถตามลิงก์นี้ไปทำความเข้าใจโดยละเอียดได้ครับ โปรโตคอลนี้เป็นมาตรฐานที่ทำให้เอเจนต์สื่อสารกันผ่านเครือข่ายได้ แม้เอเจนต์จะอยู่คนละเครื่อง ใช้ความสามารถของกันและกันได้ เช่นเอเจนต์หนึ่งเรียกอีกเอเจนต์หนึ่งเหมือนเรียก tool ทำงานข้าม framework ได้ หมายความว่าเป็น language หรือ framework agnostic และรักษาสัญญาที่เป็นทางการ โดย agent cards อธิบายความสามารถของแต่ละตัวครับ

architecture ที่พบบ่อยของ A2A มีประโยชน์เป็นพิเศษในสามกรณีครับ คือ cross framework cross language และ cross organization ครับ cross framework คือเอเจนต์ ADK สื่อสารกับ agent framework อื่นๆ cross language คือเอเจนต์ Python เรียกเอเจนต์ Java หรือ Node.js ส่วน cross organization หมายถึงเอเจนต์ภายในของคุณติดต่อหรือเชื่อมกับ service ของผู้ให้บริการภายนอกครับ

notebook นี้สาธิตการสร้าง e-commerce integration จริงๆ ครับ อันดับแรกคือ product catalog ซึ่งเปิดเผยผ่าน A2A เป็น service ของผู้ให้บริการภายนอกที่ให้ข้อมูลสินค้า จากนั้นเรามี customer support agent ซึ่งเป็นฝั่งผู้ใช้ คือเอเจนต์ภายในของเราที่ช่วยเหลือลูกค้าโดยค้นข้อมูลสินค้าครับ ในบทเรียนนี้เราจะจำลองทั้งสองเอเจนต์ไว้ในเครื่อง local เหมือนรันบน localhost เพื่อการเรียนรู้ครับ ใน production จริง product catalog agent จะรันบนโครงสร้างพื้นฐานของผู้ขาย และ customer support agent จะรันบนโครงสร้างพื้นฐานของเราเอง โดยสื่อสารกันผ่านอินเทอร์เน็ตด้วย A2A protocol ครับ

ขั้นตอนของบทเรียนนี้มีอะไรบ้าง บทเรียนนี้มีหกขั้นตอนครับ ขั้นแรกสร้าง product catalog agent จากนั้นเปิดเผยผ่าน A2A ซึ่งก็ส่วนนี้ แล้วเริ่ม server สร้าง customer support agent ทดสอบการสื่อสาร และเข้าใจว่าข้อมูลไหลอย่างไรครับ

เริ่มจากส่วนแรกคือ setup ตามปกติ ไปที่ add-ons แล้ว secret key กด add secret เลือกแล้วรันโค้ด อย่างที่เห็น setup และการยืนยันตัวตนเสร็จสมบูรณ์ครับ ไปกันขั้นต่อไป ซึ่งก็คือ import ส่วนประกอบเฉพาะที่เราต้องใช้จาก ADK และไลบรารี genai ครับ อันนี้สำเร็จแล้ว ขั้นถัดไปคือตั้งค่า retry option อันนี้ก็เสร็จแล้วครับ

ทีนี้ใน section หนึ่งสิ่งที่เราจะทำคือสร้าง product catalog agent ที่จะถูกเปิดเผยครับ คำถามแรกคือทำไมต้องเปิดเผยผ่าน A2A ในระบบจริงสิ่งนี้จะถูกดูแลโดยผู้ให้บริการภายนอกหรือบริษัทอื่น เอเจนต์ภายในของเราเอง เช่น customer support หรือ sales หรือ inventory ต้องการข้อมูลสินค้า ผู้ขายควบคุม code base ของตัวเอง เราแก้ implementation ของเขาไม่ได้ ดังนั้นการเปิดเผยผ่าน A2A ทำให้เอเจนต์ใดก็ตามที่ได้รับอนุญาตสามารถใช้งานได้ผ่านโปรโตคอลมาตรฐานครับ ด้วยเหตุนี้ product catalog agent จึงจะถูกเปิดเผยผ่าน A2A เพื่อให้เอเจนต์อื่นใช้งานได้ครับ

ตรงนี้เรากำลังนิยาม product catalog lookup ครับ เรามี product info กับ product name มีอาร์กิวเมนต์และค่าที่คืน แล้วเรากำหนด mock product catalog ขึ้นมาครับ จากนั้นสร้างเอเจนต์ มีชื่อ มี instructions กับ description และ tool ที่ใช้คือ get_product_info ตัวที่เราเพิ่งสร้างไปครับ instructions คือเธอเป็นผู้เชี่ยวชาญ catalog สินค้าจากผู้ให้บริการภายนอก เมื่อถูกถามเรื่องสินค้า ให้ใช้ tool ชื่อ get_product_info เพื่อดึงข้อมูลจาก catalog เป็นต้นครับ ผมจะรันอันนี้ catalog agent ถูกสร้างแล้ว มันให้ข้อมูลว่าใช้ tool อะไรและเปิดเผยอย่างไรครับ

section ถัดไปคือการเปิดเผย product catalog agent ผ่าน A2A ครับ สิ่งที่ A2A ทำตรงนี้คือเรามีฟังก์ชัน A2A อยู่ตัวหนึ่ง ฟังก์ชันนี้เราจะใช้ทำให้ product catalog ของเราเข้าถึงได้จากเอเจนต์อื่นครับ ฟังก์ชันนี้ทำอะไร มันห่อเอเจนต์ของเราไว้ใน server ที่เข้ากันได้กับ A2A เช่น FastAPI หรือ Starlette หมายความว่ามันสร้าง agent card ขึ้นอัตโนมัติ ที่รวมชื่อเอเจนต์ คำอธิบาย และเวอร์ชัน พร้อม protocol version และ endpoints มี input และ output modes และมันจะเสิร์ฟ agent card ที่ path มาตรฐานอย่าง well-known agent card.json ซึ่งเป็น path มาตรฐานของ A2A ครับ ดังนั้นมันจัดการรายละเอียดของ A2A protocol ทั้งหมด เช่น request response formatting และ task endpoints และอื่นๆ นี่คือวิธีที่ง่ายที่สุดในการเปิดเผย ADK agent ผ่าน A2A ครับ

ต่อไปขอเล่าเรื่อง agent card กันหน่อยครับ agent card คืออะไร agent card เป็นเอกสาร JSON ที่ทำหน้าที่เหมือนนามบัตรของเอเจนต์ครับ มันอธิบายว่าเอเจนต์ทำอะไร เช่น ชื่อ คำอธิบาย เวอร์ชัน มีความสามารถอะไร เช่น skills tools functions และสื่อสารกับมันได้อย่างไร ผ่าน URL ผ่าน protocol version หรือผ่าน endpoints ครับ เอเจนต์ A2A ทุกตัวต้องเผยแพร่ agent card ของตัวเองที่ path มาตรฐานนี้ครับ ถ้าอยากเรียนรู้เพิ่มเติม มีเอกสารสองชุดนี้ให้อ่านได้ครับ ผมรันอันนี้เพื่อเตรียมเริ่ม server ครับ agent card จะอยู่ตรงนี้พร้อมเริ่ม server แล้วครับ

section ถัดไปคือการเริ่ม server ของ product catalog agent ครับ เราจะเริ่ม agent server นี้ใน background โดยใช้ uvicorn เพื่อให้มันตอบ request จากเอเจนต์อื่นได้ครับ ทำไมต้องรันใน background เพราะ server ต้องรันค้างไว้ระหว่างที่เราสร้างและทดสอบ customer support agent ครับ นี่จำลองสถานการณ์จริงที่เอเจนต์ต่างๆ รันเป็น service แยกจากกัน ใน production ผู้ขายจะเป็นฝ่ายโฮสต์มันบนโครงสร้างพื้นฐานของเขาเองครับ เราจะบันทึก product catalog agent ลงไฟล์ที่ uvicorn สามารถ import ได้ ตรงนี้เราจะใส่ข้อมูลทั้งหมด get_info config ส่วนประกอบที่ import จาก ADK และข้อมูลของ catalog agent ทั้งหมด แล้วเราจะเขียน product agent ลงไฟล์ชั่วคราวแบบนี้ครับ แล้วเริ่ม uvicorn server ใน background ครับ ตัว server process เปิด subprocess ขึ้นมา ส่วน input output subprocess พวกนี้คือ print statements ครับ เรารอให้ server เริ่มทำงาน จำนวนความพยายามสูงสุดที่ให้คือ 30 ครั้ง แล้ว request ตอบกลับมาที่ well-known agent card ครับ ผมรันอันนี้ อย่างที่เห็นโค้ดของ catalog agent ถูกบันทึกไปที่นี่แล้วครับ

ทีนี้เราจะดู card ที่สร้างอัตโนมัติ ฟังก์ชัน A2A ตัวนี้สร้าง agent card ขึ้นมาโดยอัตโนมัติ ซึ่งอธิบายความสามารถของ product catalog agent ครับ มันให้ข้อมูลครบทุกอย่างเกี่ยวกับความสามารถ พร้อมคำอธิบายของแต่ละสินค้าครับ ต่อไปเราจะสร้าง remote A2A agent ที่เชื่อมต่อกับ product catalog ครับ remote product catalog agent ถูกสร้างแล้ว มันคือ proxy ครับ customer support agent สามารถใช้ตัวนี้เป็น sub-agent ในเครื่องได้เลยครับ ทีนี้เราจะสร้าง customer support agent ซึ่งเป็นเอเจนต์แบบปกติที่เราสร้างกันทั่วไป โดยใช้ sub-agent หนึ่งตัวคือ remote product ตัวที่เราสร้างไว้ด้านบนครับ

ต่อไป section ห้าคือการทดสอบการสื่อสาร A2A ครับ สิ่งที่เกิดขึ้นเบื้องหลังคือ ลูกค้าถาม customer support agent เรื่องสินค้าหนึ่งๆ แล้ว support agent รู้ตัวว่าต้องการข้อมูลสินค้า จึงไปที่ remote product catalog agent ซึ่งเป็น remote A2A agent ที่เราสร้างไว้ โดยส่ง A2A protocol request ไปที่ localhost ครับ แล้ว product catalog agent ประมวลผล request และตอบกลับ support agent รับ response นั้นแล้วดำเนินการต่อ ลูกค้าก็ได้คำตอบสุดท้ายครับ ตรงนี้ถ้าเห็น ลูกค้าถามว่าเล่าเรื่อง 15 Pro ให้ฟังหน่อย ยังมีสต็อกไหม เอเจนต์ตอบว่า iPhone 15 มีสต็อกอยู่ เหลือเพียง 8 เครื่องเท่านั้น ราคาอยู่ที่ระดับนี้ มีความจุ 128 GB และเป็นเครื่องสีไทเทเนียมครับ

คุณลองตัวอย่างเพิ่มเติมได้ครับ เช่น ผมกำลังหาแล็ปท็อป เปรียบเทียบ Dell กับ MacBook Pro ให้หน่อยได้ไหม หรืออีกอันคือ มีหูฟัง Sony ไหม ราคาเท่าไหร่ คุณทำแบบนี้ได้ครับ ตอนนี้มันให้การเปรียบเทียบมาแล้ว และพอถามว่ามีอันนี้ไหม มันตอบว่าขอโทษครับ ดูเหมือนไม่มีข้อมูลเรื่องหูฟังรุ่นนี้ในสต็อกครับ คุณลองตัวอย่างอื่นๆ เพิ่มเติมเองได้อีก โค้ดชุดนี้คัดลอกไปใช้ได้เลย เพียงเปลี่ยนคำถาม ผมว่าผมพลาดอันนี้ไป มันบอกว่าไม่มีใน product catalog ของเรา สินค้าที่มีคืออันนี้ อันนี้ อันนี้ และอันนี้ครับ คุณลองเล่นดูเองได้ถ้าอยากดูว่ามันตอบอย่างไรครับ

อันถัดไปคือ section หก เรื่องทำความเข้าใจว่าเพิ่งเกิดอะไรขึ้นครับ ตรงนี้สิ่งที่เกิดขึ้นคือลูกค้าถามเรื่อง iPhone 15 Pro แล้ว customer support agent รับคำถามและตัดสินใจว่าต้องการข้อมูลสินค้า support agent จึงมอบหมายงานให้ product catalog agent ซึ่งเป็น sub-agent ครับ จากนั้น remote A2A agent ในฐานะ proxy ฝั่ง client แปลงสิ่งนี้เป็น A2A protocol request ครับ สิ่งที่เกิดขึ้นตรงนี้คือ request ถูกส่งผ่าน HTTP ในรูปแบบ A2A request ตรงที่ไฮไลต์สีเหลืองอยู่นี่ครับ ทีนี้ product catalog agent ฝั่ง server รับ request นี้แล้วเรียก get_product_info เรื่อง iPhone 15 Pro ครับ จากนั้นเอเจนต์นี้คืนข้อมูลสินค้าจากตรงนี้กลับไปที่ remote agent ผ่าน response ของ A2A ครับ แล้ว remote agent รับ response แล้วส่งต่อกลับให้ support agent ครับ support agent ประกอบคำตอบสุดท้ายพร้อมรายละเอียดสินค้า แล้วคืน response นั้นให้ลูกค้า ดังนั้นลูกค้าจึงได้รับคำตอบที่สมบูรณ์และมีประโยชน์ครับ

มีการใช้งานจริงมากมายครับ เช่น microservices การเชื่อมต่อบริษัทอื่น cross language specialized teams และ cross organization ครับ ทั้งหมดนี้คือการใช้งานจริงครับ ส่วนไอเดียต่อยอดคือ ตอนนี้คุณเข้าใจพื้นฐานแล้ว ลองขยายตัวอย่างพวกนี้ดู เช่น เพิ่มเอเจนต์อื่นๆ เข้ามาอีก เช่น inventory agent และ shipping agent แล้วให้มีเอเจนต์ coordinator คุมทั้งสามตัวนี้ จากนั้นใช้แหล่งข้อมูลจริง แทนที่ mock product ด้วยฐานข้อมูลจริง เช่น MongoDB เพิ่มระบบติดตามสต็อกจริง เชื่อมต่อกับ payment gateway API จริงๆ ครับ เพื่อนๆ ทำทั้งหมดนี้ด้วยตัวเองได้เลยครับ จากนั้นคุณสามารถ deploy product catalog agent ขึ้น Agent Engine ได้ โดยอัปเดต URL ใน card จาก well-known ให้เป็น production server ที่ถูกต้องจริงๆ ครับ อยากรู้ว่าทำอย่างไร ใช้คู่มือ A2A เอกสารโปรโตคอล และตัวเลือก deployment อื่นๆ ได้เลย คุณทำได้ด้วยตัวเองครับ

โดยสรุปใน notebook นี้เราได้เรียนรู้วิธีสร้างระบบ multi-agent ด้วย A2A protocol ซึ่งเป็นโปรโตคอลมาตรฐานสำหรับการสื่อสารระหว่างเอเจนต์กับเอเจนต์ข้ามเครือข่ายและข้าม framework รวมถึงการเปิดเผยเอเจนต์ การใช้เอเจนต์ และ use case ต่างๆ ครับ ยินดีด้วยครับ เราทำส่วนแรกของ Day 5 ซึ่งเป็นวันสุดท้ายของคอร์สนี้เสร็จแล้ว ส่วนจะไปส่วนสุดท้ายซึ่งก็คือ Day 5B โปรดไปดูวิดีโอถัดไปครับ

03

หมายเหตุการแปล

ความโปร่งใสเกี่ยวกับความไม่แน่นอนในต้นฉบับ

  • ไม่มีการใช้สัญลักษณ์ระบุเสียงไม่ชัดเจน (0 จุด) — ทุก segment เข้าใจความหมายได้ครบ
04

อภิธานศัพท์เทคนิค

คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ

ศัพท์คำแปล / คำอธิบาย
prototype to productionการยกระบบจากต้นแบบสู่การใช้งานจริง
productionizationการทำระบบให้พร้อมใช้งานใน production
deploymentการปล่อยระบบขึ้นใช้งานจริง
scalingการขยายขีดความสามารถรองรับงานที่มากขึ้น
A2A protocol (agent-to-agent)โปรโตคอลมาตรฐานให้เอเจนต์สื่อสารกันข้ามเครือข่ายและ framework
enterprise-gradeระดับมาตรฐานองค์กร
agentic systemsระบบที่ขับเคลื่อนด้วยเอเจนต์
multi-agent systemsระบบหลายเอเจนต์ทำงานร่วมกัน
sub-agentเอเจนต์บริวารที่เอเจนต์หลักมอบหมายงานให้
framework agnosticไม่ผูกกับ framework ใด framework หนึ่ง
agent cardเอกสาร JSON แบบนามบัตรอธิบายความสามารถของเอเจนต์
well-known pathpath URL มาตรฐานที่เอเจนต์ A2A เผยแพร่ agent card
cross framework / cross language / cross organizationข้าม framework / ข้ามภาษาโปรแกรม / ข้ามองค์กร
product catalogแคตตาล็อกสินค้า
customer support agentเอเจนต์ช่วยเหลือลูกค้า
e-commerce integrationการเชื่อมระบบพาณิชย์อิเล็กทรอนิกส์
vendorผู้ให้บริการ/ผู้ขายภายนอก
third partyบุคคล/บริษัทภายนอกที่สาม
proxyตัวแทนส่งต่อคำขอ — remote agent ที่ห่อเอเจนต์ระยะไกลให้ใช้เหมือน local
FastAPI / Starletteเฟรมเวิร์กสร้างเว็บ server ของ Python
uvicornโปรแกรมรันเว็บ server ของ Python
localhostการรัน service ในเครื่องตัวเอง
background processกระบวนการที่รันแบบเบื้องหลัง
subprocessกระบวนการย่อยที่โปรแกรมหลักเปิดขึ้น
mockข้อมูลจำลองสำหรับทดสอบแทนของจริง
get_product_infoชื่อ tool ดึงข้อมูลสินค้าในตัวอย่าง
request / responseคำขอ / การตอบกลับ
endpointจุดเชื่อมต่อ URL ของ service
protocol versionเวอร์ชันของโปรโตคอล
HTTPโปรโตคอลสื่อสารเว็บมาตรฐาน
microservicesสถาปัตยกรรมแบ่งระบบเป็น service ย่อยหลายตัว
MongoDBฐานข้อมูล NoSQL
payment gateway APIAPI ระบบชำระเงิน
inventory agent / shipping agentเอเจนต์จัดการสต็อก / การจัดส่ง (ไอเดียต่อยอด)
coordinatorตัวประสานงานกลางระหว่างหลายเอเจนต์
Vertex AI Agent Engineบริการรันเอเจนต์บน Google Cloud แบบพร้อม scale
Google Cloudคลาวด์ของ Google
white paperเอกสารเชิงเทคนิคทางการ
retry optionตัวเลือกลองใหม่เมื่อทำงานล้มเหลว
genai libraryไลบรารี AI เชิงสร้างสรรค์ของ Google
05

ซับไตเติ้ลภาษาไทย

ดาวน์โหลดหรือดูซับทั้งหมด

1
00:00:00,000 --> 00:00:03,306
นี่คือวันที่ห้าของคอร์ส 5 วัน จึงเป็น

2
00:00:03,306 --> 00:00:06,791
assignment สุดท้ายของเราครับ เป็นเรื่อง

3
00:00:06,791 --> 00:00:09,292
prototype to production ครับ

4
00:00:09,292 --> 00:00:14,385
โปรดฟังพอดแคสต์สรุปซึ่งช่วยให้เข้าใจว่าหน่วยนี้มีอะไรบ้าง
thai-subtitles.srt
SubRip — ใช้กับเครื่องเล่นวิดีโอส่วนใหญ่
↓ ดาวน์โหลด
thai-subtitles.vtt
WebVTT — ใช้กับเว็บ / YouTube
↓ ดาวน์โหลด
เปิดดูซับไตเติ้ลทั้งหมด (268 segments)
1
00:00:00,000 --> 00:00:03,306
นี่คือวันที่ห้าของคอร์ส 5 วัน จึงเป็น

2
00:00:03,306 --> 00:00:06,791
assignment สุดท้ายของเราครับ เป็นเรื่อง

3
00:00:06,791 --> 00:00:09,292
prototype to production ครับ

4
00:00:09,292 --> 00:00:14,385
โปรดฟังพอดแคสต์สรุปซึ่งช่วยให้เข้าใจว่าหน่วยนี้มีอะไรบ้าง

5
00:00:14,385 --> 00:00:18,227
และโปรดอ่าน white paper เรื่อง prototype to

6
00:00:18,227 --> 00:00:19,324
production

7
00:00:19,324 --> 00:00:23,255
ซึ่งเป็นข้อมูลประกอบของพอดแคสต์นี้ครับ white

8
00:00:23,255 --> 00:00:24,352
paper

9
00:00:24,352 --> 00:00:29,177
ฉบับนี้เป็นคู่มือทางเทคนิคเกี่ยวกับวงจรการดำเนินงานของ

10
00:00:29,177 --> 00:00:33,287
AI agents โดยเน้นเรื่อง deployment การ scaling

11
00:00:33,287 --> 00:00:37,308
และการทำ productionization ครับ ใน assignment

12
00:00:37,308 --> 00:00:41,150
นี้เราจะสำรวจความท้าทายของการยกระบบ agentic

13
00:00:41,150 --> 00:00:43,830
จากต้นแบบสู่โซลูชันระดับองค์กร

14
00:00:43,830 --> 00:00:47,941
โดยให้ความสนใจเป็นพิเพศกับ agent-to-agent หรือ

15
00:00:47,941 --> 00:00:50,442
A2A protocol ครับ ใน codelab

16
00:00:50,442 --> 00:00:57,858
วันนี้เราจะเรียนวิธีสร้างระบบของเอเจนต์อิสระหลายตัวที่สื่อสารและร่วมมือกันได้โดยใช้

17
00:00:57,858 --> 00:01:01,432
A2A protocol และส่วนที่เขียนว่า optional

18
00:01:01,432 --> 00:01:04,917
เราจะเรียนวิธีพาเอเจนต์จากเครื่อง local

19
00:01:04,917 --> 00:01:08,759
ของเราไปสู่ service ที่พร้อมใช้งานและ scale

20
00:01:08,759 --> 00:01:12,512
ได้ใน production โดย deploy ขึ้น Vertex AI

21
00:01:12,512 --> 00:01:16,086
Agent Engine บน Google Cloud ครับ เอาล่ะ

22
00:01:16,086 --> 00:01:19,749
เริ่มกันเลย ผมจะคลิกที่ explore เพื่อเปิด

23
00:01:19,749 --> 00:01:23,055
notebook แล้วกด copy and edit ครับ ใน

24
00:01:23,055 --> 00:01:24,842
assignment นี้ส่วน A

25
00:01:24,842 --> 00:01:28,773
เราจะเข้าใจเรื่องการสื่อสาร A2A กับ ADK ครับ

26
00:01:28,773 --> 00:01:31,990
เราจะเข้าใจวิธีสร้างระบบ multi-agent

27
00:01:31,990 --> 00:01:34,939
(ระบบหลายเอเจนต์) ที่เอเจนต์ต่างๆ

28
00:01:34,939 --> 00:01:38,691
สื่อสารและร่วมมือกันได้โดยใช้ A2A protocol

29
00:01:38,691 --> 00:01:42,623
ครับ ใน notebook นี้เราจะเข้าใจ A2A protocol

30
00:01:42,623 --> 00:01:46,197
และเมื่อไหร่ควรใช้มันเทียบกับ sub-agents

31
00:01:46,197 --> 00:01:50,307
เรียนรู้ architecture pattern ที่พบบ่อยของ A2A

32
00:01:50,307 --> 00:01:53,255
เปิดเผย ADK agent ให้เป็น service

33
00:01:53,255 --> 00:01:57,365
ใช้เอเจนต์ระยะไกล และสร้างระบบ product catalog

34
00:01:57,365 --> 00:02:00,671
integration ครับ เมื่อเราสร้างระบบ AI

35
00:02:00,671 --> 00:02:02,190
ที่ซับซ้อนมากขึ้น

36
00:02:02,190 --> 00:02:05,675
เราจะพบว่าเอเจนต์เดี่ยวทำทุกอย่างไม่ได้

37
00:02:05,675 --> 00:02:08,534
ซึ่งเราพูดกันมาตั้งแต่วันแรกแล้ว

38
00:02:08,534 --> 00:02:11,751
คุณต้องให้เอเจนต์ร่วมมือกัน ทีมต่างๆ

39
00:02:11,751 --> 00:02:15,593
สร้างเอเจนต์ต่างๆ กัน เอเจนต์อาจใช้ภาษาหรือ

40
00:02:15,593 --> 00:02:17,112
framework ต่างกัน

41
00:02:17,112 --> 00:02:21,668
ดังนั้นเราจึงต้องมีโปรโตคอลการสื่อสารแบบมาตรฐานครับ

42
00:02:21,668 --> 00:02:25,421
จะแก้ปัญหานี้อย่างไร คำตอบคือ A2A protocol

43
00:02:25,421 --> 00:02:26,518
ครับ

44
00:02:26,518 --> 00:02:31,075
คุณสามารถตามลิงก์นี้ไปทำความเข้าใจโดยละเอียดได้ครับ

45
00:02:31,075 --> 00:02:36,704
โปรโตคอลนี้เป็นมาตรฐานที่ทำให้เอเจนต์สื่อสารกันผ่านเครือข่ายได้

46
00:02:36,704 --> 00:02:39,116
แม้เอเจนต์จะอยู่คนละเครื่อง

47
00:02:39,116 --> 00:02:41,618
ใช้ความสามารถของกันและกันได้

48
00:02:41,618 --> 00:02:45,817
เช่นเอเจนต์หนึ่งเรียกอีกเอเจนต์หนึ่งเหมือนเรียก

49
00:02:45,817 --> 00:02:49,749
tool ทำงานข้าม framework ได้ หมายความว่าเป็น

50
00:02:49,749 --> 00:02:52,608
language หรือ framework agnostic

51
00:02:52,608 --> 00:02:56,361
และรักษาสัญญาที่เป็นทางการ โดย agent cards

52
00:02:56,361 --> 00:03:00,292
อธิบายความสามารถของแต่ละตัวครับ architecture

53
00:03:00,292 --> 00:03:01,722
ที่พบบ่อยของ A2A

54
00:03:01,722 --> 00:03:05,474
มีประโยชน์เป็นพิเศษในสามกรณีครับ คือ cross

55
00:03:05,474 --> 00:03:08,512
framework cross language และ cross

56
00:03:08,512 --> 00:03:12,444
organization ครับ cross framework คือเอเจนต์

57
00:03:12,444 --> 00:03:16,196
ADK สื่อสารกับ agent framework อื่นๆ cross

58
00:03:16,196 --> 00:03:20,128
language คือเอเจนต์ Python เรียกเอเจนต์ Java

59
00:03:20,128 --> 00:03:23,344
หรือ Node.js ส่วน cross organization

60
00:03:23,344 --> 00:03:27,276
หมายถึงเอเจนต์ภายในของคุณติดต่อหรือเชื่อมกับ

61
00:03:27,276 --> 00:03:31,028
service ของผู้ให้บริการภายนอกครับ notebook

62
00:03:31,028 --> 00:03:35,049
นี้สาธิตการสร้าง e-commerce integration จริงๆ

63
00:03:35,049 --> 00:03:37,998
ครับ อันดับแรกคือ product catalog

64
00:03:37,998 --> 00:03:40,857
ซึ่งเปิดเผยผ่าน A2A เป็น service

65
00:03:40,857 --> 00:03:44,341
ของผู้ให้บริการภายนอกที่ให้ข้อมูลสินค้า

66
00:03:44,341 --> 00:03:47,469
จากนั้นเรามี customer support agent

67
00:03:47,469 --> 00:03:49,077
ซึ่งเป็นฝั่งผู้ใช้

68
00:03:49,077 --> 00:03:54,527
คือเอเจนต์ภายในของเราที่ช่วยเหลือลูกค้าโดยค้นข้อมูลสินค้าครับ

69
00:03:54,527 --> 00:03:58,816
ในบทเรียนนี้เราจะจำลองทั้งสองเอเจนต์ไว้ในเครื่อง

70
00:03:58,816 --> 00:04:01,229
local เหมือนรันบน localhost

71
00:04:01,229 --> 00:04:04,713
เพื่อการเรียนรู้ครับ ใน production จริง

72
00:04:04,713 --> 00:04:06,590
product catalog agent

73
00:04:06,590 --> 00:04:10,610
จะรันบนโครงสร้างพื้นฐานของผู้ขาย และ customer

74
00:04:10,610 --> 00:04:14,720
support agent จะรันบนโครงสร้างพื้นฐานของเราเอง

75
00:04:14,720 --> 00:04:18,830
โดยสื่อสารกันผ่านอินเทอร์เน็ตด้วย A2A protocol

76
00:04:18,830 --> 00:04:21,958
ครับ ขั้นตอนของบทเรียนนี้มีอะไรบ้าง

77
00:04:21,958 --> 00:04:26,068
บทเรียนนี้มีหกขั้นตอนครับ ขั้นแรกสร้าง product

78
00:04:26,068 --> 00:04:29,284
catalog agent จากนั้นเปิดเผยผ่าน A2A

79
00:04:29,284 --> 00:04:33,305
ซึ่งก็ส่วนนี้ แล้วเริ่ม server สร้าง customer

80
00:04:33,305 --> 00:04:35,896
support agent ทดสอบการสื่อสาร

81
00:04:35,896 --> 00:04:38,755
และเข้าใจว่าข้อมูลไหลอย่างไรครับ

82
00:04:38,755 --> 00:04:42,866
เริ่มจากส่วนแรกคือ setup ตามปกติ ไปที่ add-ons

83
00:04:42,866 --> 00:04:46,976
แล้ว secret key กด add secret เลือกแล้วรันโค้ด

84
00:04:46,976 --> 00:04:48,584
อย่างที่เห็น setup

85
00:04:48,584 --> 00:04:51,532
และการยืนยันตัวตนเสร็จสมบูรณ์ครับ

86
00:04:51,532 --> 00:04:54,302
ไปกันขั้นต่อไป ซึ่งก็คือ import

87
00:04:54,302 --> 00:04:58,412
ส่วนประกอบเฉพาะที่เราต้องใช้จาก ADK และไลบรารี

88
00:04:58,412 --> 00:05:00,825
genai ครับ อันนี้สำเร็จแล้ว

89
00:05:00,825 --> 00:05:03,684
ขั้นถัดไปคือตั้งค่า retry option

90
00:05:03,684 --> 00:05:06,990
อันนี้ก็เสร็จแล้วครับ ทีนี้ใน section

91
00:05:06,990 --> 00:05:10,832
หนึ่งสิ่งที่เราจะทำคือสร้าง product catalog

92
00:05:10,832 --> 00:05:13,066
agent ที่จะถูกเปิดเผยครับ

93
00:05:13,066 --> 00:05:16,104
คำถามแรกคือทำไมต้องเปิดเผยผ่าน A2A

94
00:05:16,104 --> 00:05:21,554
ในระบบจริงสิ่งนี้จะถูกดูแลโดยผู้ให้บริการภายนอกหรือบริษัทอื่น

95
00:05:21,554 --> 00:05:25,396
เอเจนต์ภายในของเราเอง เช่น customer support

96
00:05:25,396 --> 00:05:29,417
หรือ sales หรือ inventory ต้องการข้อมูลสินค้า

97
00:05:29,417 --> 00:05:32,901
ผู้ขายควบคุม code base ของตัวเอง เราแก้

98
00:05:32,901 --> 00:05:35,314
implementation ของเขาไม่ได้

99
00:05:35,314 --> 00:05:37,548
ดังนั้นการเปิดเผยผ่าน A2A

100
00:05:37,548 --> 00:05:43,981
ทำให้เอเจนต์ใดก็ตามที่ได้รับอนุญาตสามารถใช้งานได้ผ่านโปรโตคอลมาตรฐานครับ

101
00:05:43,981 --> 00:05:46,929
ด้วยเหตุนี้ product catalog agent

102
00:05:46,929 --> 00:05:48,984
จึงจะถูกเปิดเผยผ่าน A2A

103
00:05:48,984 --> 00:05:51,844
เพื่อให้เอเจนต์อื่นใช้งานได้ครับ

104
00:05:51,844 --> 00:05:55,596
ตรงนี้เรากำลังนิยาม product catalog lookup

105
00:05:55,596 --> 00:05:59,170
ครับ เรามี product info กับ product name

106
00:05:59,170 --> 00:06:03,102
มีอาร์กิวเมนต์และค่าที่คืน แล้วเรากำหนด mock

107
00:06:03,102 --> 00:06:07,212
product catalog ขึ้นมาครับ จากนั้นสร้างเอเจนต์

108
00:06:07,212 --> 00:06:10,964
มีชื่อ มี instructions กับ description และ

109
00:06:10,964 --> 00:06:13,734
tool ที่ใช้คือ get_product_info

110
00:06:13,734 --> 00:06:17,130
ตัวที่เราเพิ่งสร้างไปครับ instructions

111
00:06:17,130 --> 00:06:19,810
คือเธอเป็นผู้เชี่ยวชาญ catalog

112
00:06:19,810 --> 00:06:22,222
สินค้าจากผู้ให้บริการภายนอก

113
00:06:22,222 --> 00:06:25,796
เมื่อถูกถามเรื่องสินค้า ให้ใช้ tool ชื่อ

114
00:06:25,796 --> 00:06:29,549
get_product_info เพื่อดึงข้อมูลจาก catalog

115
00:06:29,549 --> 00:06:33,034
เป็นต้นครับ ผมจะรันอันนี้ catalog agent

116
00:06:33,034 --> 00:06:36,250
ถูกสร้างแล้ว มันให้ข้อมูลว่าใช้ tool

117
00:06:36,250 --> 00:06:39,199
อะไรและเปิดเผยอย่างไรครับ section

118
00:06:39,199 --> 00:06:43,220
ถัดไปคือการเปิดเผย product catalog agent ผ่าน

119
00:06:43,220 --> 00:06:47,240
A2A ครับ สิ่งที่ A2A ทำตรงนี้คือเรามีฟังก์ชัน

120
00:06:47,240 --> 00:06:50,904
A2A อยู่ตัวหนึ่ง ฟังก์ชันนี้เราจะใช้ทำให้

121
00:06:50,904 --> 00:06:52,244
product catalog

122
00:06:52,244 --> 00:06:55,282
ของเราเข้าถึงได้จากเอเจนต์อื่นครับ

123
00:06:55,282 --> 00:06:59,035
ฟังก์ชันนี้ทำอะไร มันห่อเอเจนต์ของเราไว้ใน

124
00:06:59,035 --> 00:07:03,055
server ที่เข้ากันได้กับ A2A เช่น FastAPI หรือ

125
00:07:03,055 --> 00:07:06,629
Starlette หมายความว่ามันสร้าง agent card

126
00:07:06,629 --> 00:07:10,203
ขึ้นอัตโนมัติ ที่รวมชื่อเอเจนต์ คำอธิบาย

127
00:07:10,203 --> 00:07:13,599
และเวอร์ชัน พร้อม protocol version และ

128
00:07:13,599 --> 00:07:16,726
endpoints มี input และ output modes

129
00:07:16,726 --> 00:07:19,764
และมันจะเสิร์ฟ agent card ที่ path

130
00:07:19,764 --> 00:07:23,248
มาตรฐานอย่าง well-known agent card.json

131
00:07:23,248 --> 00:07:26,197
ซึ่งเป็น path มาตรฐานของ A2A ครับ

132
00:07:26,197 --> 00:07:29,950
ดังนั้นมันจัดการรายละเอียดของ A2A protocol

133
00:07:29,950 --> 00:07:33,881
ทั้งหมด เช่น request response formatting และ

134
00:07:33,881 --> 00:07:35,936
task endpoints และอื่นๆ

135
00:07:35,936 --> 00:07:39,957
นี่คือวิธีที่ง่ายที่สุดในการเปิดเผย ADK agent

136
00:07:39,957 --> 00:07:43,709
ผ่าน A2A ครับ ต่อไปขอเล่าเรื่อง agent card

137
00:07:43,709 --> 00:07:47,462
กันหน่อยครับ agent card คืออะไร agent card

138
00:07:47,462 --> 00:07:48,802
เป็นเอกสาร JSON

139
00:07:48,802 --> 00:07:52,287
ที่ทำหน้าที่เหมือนนามบัตรของเอเจนต์ครับ

140
00:07:52,287 --> 00:07:56,218
มันอธิบายว่าเอเจนต์ทำอะไร เช่น ชื่อ คำอธิบาย

141
00:07:56,218 --> 00:08:00,060
เวอร์ชัน มีความสามารถอะไร เช่น skills tools

142
00:08:00,060 --> 00:08:04,081
functions และสื่อสารกับมันได้อย่างไร ผ่าน URL

143
00:08:04,081 --> 00:08:08,102
ผ่าน protocol version หรือผ่าน endpoints ครับ

144
00:08:08,102 --> 00:08:11,676
เอเจนต์ A2A ทุกตัวต้องเผยแพร่ agent card

145
00:08:11,676 --> 00:08:14,535
ของตัวเองที่ path มาตรฐานนี้ครับ

146
00:08:14,535 --> 00:08:16,679
ถ้าอยากเรียนรู้เพิ่มเติม

147
00:08:16,679 --> 00:08:19,449
มีเอกสารสองชุดนี้ให้อ่านได้ครับ

148
00:08:19,449 --> 00:08:23,470
ผมรันอันนี้เพื่อเตรียมเริ่ม server ครับ agent

149
00:08:23,470 --> 00:08:27,312
card จะอยู่ตรงนี้พร้อมเริ่ม server แล้วครับ

150
00:08:27,312 --> 00:08:31,154
section ถัดไปคือการเริ่ม server ของ product

151
00:08:31,154 --> 00:08:34,907
catalog agent ครับ เราจะเริ่ม agent server

152
00:08:34,907 --> 00:08:39,017
นี้ใน background โดยใช้ uvicorn เพื่อให้มันตอบ

153
00:08:39,017 --> 00:08:42,859
request จากเอเจนต์อื่นได้ครับ ทำไมต้องรันใน

154
00:08:42,859 --> 00:08:44,914
background เพราะ server

155
00:08:44,914 --> 00:08:48,488
ต้องรันค้างไว้ระหว่างที่เราสร้างและทดสอบ

156
00:08:48,488 --> 00:08:50,900
customer support agent ครับ

157
00:08:50,900 --> 00:08:54,832
นี่จำลองสถานการณ์จริงที่เอเจนต์ต่างๆ รันเป็น

158
00:08:54,832 --> 00:08:57,602
service แยกจากกัน ใน production

159
00:08:57,602 --> 00:09:02,516
ผู้ขายจะเป็นฝ่ายโฮสต์มันบนโครงสร้างพื้นฐานของเขาเองครับ

160
00:09:02,516 --> 00:09:06,358
เราจะบันทึก product catalog agent ลงไฟล์ที่

161
00:09:06,358 --> 00:09:08,592
uvicorn สามารถ import ได้

162
00:09:08,592 --> 00:09:12,434
ตรงนี้เราจะใส่ข้อมูลทั้งหมด get_info config

163
00:09:12,434 --> 00:09:16,097
ส่วนประกอบที่ import จาก ADK และข้อมูลของ

164
00:09:16,097 --> 00:09:20,028
catalog agent ทั้งหมด แล้วเราจะเขียน product

165
00:09:20,028 --> 00:09:23,602
agent ลงไฟล์ชั่วคราวแบบนี้ครับ แล้วเริ่ม

166
00:09:23,602 --> 00:09:27,534
uvicorn server ใน background ครับ ตัว server

167
00:09:27,534 --> 00:09:31,197
process เปิด subprocess ขึ้นมา ส่วน input

168
00:09:31,197 --> 00:09:35,129
output subprocess พวกนี้คือ print statements

169
00:09:35,129 --> 00:09:37,898
ครับ เรารอให้ server เริ่มทำงาน

170
00:09:37,898 --> 00:09:41,830
จำนวนความพยายามสูงสุดที่ให้คือ 30 ครั้ง แล้ว

171
00:09:41,830 --> 00:09:45,582
request ตอบกลับมาที่ well-known agent card

172
00:09:45,582 --> 00:09:49,514
ครับ ผมรันอันนี้ อย่างที่เห็นโค้ดของ catalog

173
00:09:49,514 --> 00:09:53,445
agent ถูกบันทึกไปที่นี่แล้วครับ ทีนี้เราจะดู

174
00:09:53,445 --> 00:09:56,572
card ที่สร้างอัตโนมัติ ฟังก์ชัน A2A

175
00:09:56,572 --> 00:10:00,236
ตัวนี้สร้าง agent card ขึ้นมาโดยอัตโนมัติ

176
00:10:00,236 --> 00:10:04,257
ซึ่งอธิบายความสามารถของ product catalog agent

177
00:10:04,257 --> 00:10:05,353
ครับ

178
00:10:05,353 --> 00:10:09,106
มันให้ข้อมูลครบทุกอย่างเกี่ยวกับความสามารถ

179
00:10:09,106 --> 00:10:11,876
พร้อมคำอธิบายของแต่ละสินค้าครับ

180
00:10:11,876 --> 00:10:14,735
ต่อไปเราจะสร้าง remote A2A agent

181
00:10:14,735 --> 00:10:18,577
ที่เชื่อมต่อกับ product catalog ครับ remote

182
00:10:18,577 --> 00:10:22,240
product catalog agent ถูกสร้างแล้ว มันคือ

183
00:10:22,240 --> 00:10:25,189
proxy ครับ customer support agent

184
00:10:25,189 --> 00:10:27,780
สามารถใช้ตัวนี้เป็น sub-agent

185
00:10:27,780 --> 00:10:31,711
ในเครื่องได้เลยครับ ทีนี้เราจะสร้าง customer

186
00:10:31,711 --> 00:10:32,873
support agent

187
00:10:32,873 --> 00:10:36,626
ซึ่งเป็นเอเจนต์แบบปกติที่เราสร้างกันทั่วไป

188
00:10:36,626 --> 00:10:40,468
โดยใช้ sub-agent หนึ่งตัวคือ remote product

189
00:10:40,468 --> 00:10:44,131
ตัวที่เราสร้างไว้ด้านบนครับ ต่อไป section

190
00:10:44,131 --> 00:10:47,080
ห้าคือการทดสอบการสื่อสาร A2A ครับ

191
00:10:47,080 --> 00:10:50,475
สิ่งที่เกิดขึ้นเบื้องหลังคือ ลูกค้าถาม

192
00:10:50,475 --> 00:10:54,585
customer support agent เรื่องสินค้าหนึ่งๆ แล้ว

193
00:10:54,585 --> 00:10:58,338
support agent รู้ตัวว่าต้องการข้อมูลสินค้า

194
00:10:58,338 --> 00:11:02,448
จึงไปที่ remote product catalog agent ซึ่งเป็น

195
00:11:02,448 --> 00:11:06,200
remote A2A agent ที่เราสร้างไว้ โดยส่ง A2A

196
00:11:06,200 --> 00:11:09,953
protocol request ไปที่ localhost ครับ แล้ว

197
00:11:09,953 --> 00:11:13,348
product catalog agent ประมวลผล request

198
00:11:13,348 --> 00:11:16,654
และตอบกลับ support agent รับ response

199
00:11:16,654 --> 00:11:18,441
นั้นแล้วดำเนินการต่อ

200
00:11:18,441 --> 00:11:22,105
ลูกค้าก็ได้คำตอบสุดท้ายครับ ตรงนี้ถ้าเห็น

201
00:11:22,105 --> 00:11:25,768
ลูกค้าถามว่าเล่าเรื่อง 15 Pro ให้ฟังหน่อย

202
00:11:25,768 --> 00:11:29,074
ยังมีสต็อกไหม เอเจนต์ตอบว่า iPhone 15

203
00:11:29,074 --> 00:11:32,648
มีสต็อกอยู่ เหลือเพียง 8 เครื่องเท่านั้น

204
00:11:32,648 --> 00:11:35,775
ราคาอยู่ที่ระดับนี้ มีความจุ 128 GB

205
00:11:35,775 --> 00:11:38,366
และเป็นเครื่องสีไทเทเนียมครับ

206
00:11:38,366 --> 00:11:41,494
คุณลองตัวอย่างเพิ่มเติมได้ครับ เช่น

207
00:11:41,494 --> 00:11:45,604
ผมกำลังหาแล็ปท็อป เปรียบเทียบ Dell กับ MacBook

208
00:11:45,604 --> 00:11:49,624
Pro ให้หน่อยได้ไหม หรืออีกอันคือ มีหูฟัง Sony

209
00:11:49,624 --> 00:11:52,752
ไหม ราคาเท่าไหร่ คุณทำแบบนี้ได้ครับ

210
00:11:52,752 --> 00:11:55,611
ตอนนี้มันให้การเปรียบเทียบมาแล้ว

211
00:11:55,611 --> 00:11:59,274
และพอถามว่ามีอันนี้ไหม มันตอบว่าขอโทษครับ

212
00:11:59,274 --> 00:12:03,563
ดูเหมือนไม่มีข้อมูลเรื่องหูฟังรุ่นนี้ในสต็อกครับ

213
00:12:03,563 --> 00:12:06,958
คุณลองตัวอย่างอื่นๆ เพิ่มเติมเองได้อีก

214
00:12:06,958 --> 00:12:10,979
โค้ดชุดนี้คัดลอกไปใช้ได้เลย เพียงเปลี่ยนคำถาม

215
00:12:10,979 --> 00:12:14,910
ผมว่าผมพลาดอันนี้ไป มันบอกว่าไม่มีใน product

216
00:12:14,910 --> 00:12:18,663
catalog ของเรา สินค้าที่มีคืออันนี้ อันนี้

217
00:12:18,663 --> 00:12:20,450
อันนี้ และอันนี้ครับ

218
00:12:20,450 --> 00:12:24,649
คุณลองเล่นดูเองได้ถ้าอยากดูว่ามันตอบอย่างไรครับ

219
00:12:24,649 --> 00:12:26,615
อันถัดไปคือ section หก

220
00:12:26,615 --> 00:12:30,368
เรื่องทำความเข้าใจว่าเพิ่งเกิดอะไรขึ้นครับ

221
00:12:30,368 --> 00:12:34,478
ตรงนี้สิ่งที่เกิดขึ้นคือลูกค้าถามเรื่อง iPhone

222
00:12:34,478 --> 00:12:37,516
15 Pro แล้ว customer support agent

223
00:12:37,516 --> 00:12:41,179
รับคำถามและตัดสินใจว่าต้องการข้อมูลสินค้า

224
00:12:41,179 --> 00:12:45,289
support agent จึงมอบหมายงานให้ product catalog

225
00:12:45,289 --> 00:12:49,221
agent ซึ่งเป็น sub-agent ครับ จากนั้น remote

226
00:12:49,221 --> 00:12:52,259
A2A agent ในฐานะ proxy ฝั่ง client

227
00:12:52,259 --> 00:12:55,922
แปลงสิ่งนี้เป็น A2A protocol request ครับ

228
00:12:55,922 --> 00:12:59,764
สิ่งที่เกิดขึ้นตรงนี้คือ request ถูกส่งผ่าน

229
00:12:59,764 --> 00:13:01,998
HTTP ในรูปแบบ A2A request

230
00:13:01,998 --> 00:13:06,018
ตรงที่ไฮไลต์สีเหลืองอยู่นี่ครับ ทีนี้ product

231
00:13:06,018 --> 00:13:09,324
catalog agent ฝั่ง server รับ request

232
00:13:09,324 --> 00:13:13,434
นี้แล้วเรียก get_product_info เรื่อง iPhone 15

233
00:13:13,434 --> 00:13:14,531
Pro ครับ

234
00:13:14,531 --> 00:13:18,999
จากนั้นเอเจนต์นี้คืนข้อมูลสินค้าจากตรงนี้กลับไปที่

235
00:13:18,999 --> 00:13:22,930
remote agent ผ่าน response ของ A2A ครับ แล้ว

236
00:13:22,930 --> 00:13:26,772
remote agent รับ response แล้วส่งต่อกลับให้

237
00:13:26,772 --> 00:13:29,631
support agent ครับ support agent

238
00:13:29,631 --> 00:13:33,116
ประกอบคำตอบสุดท้ายพร้อมรายละเอียดสินค้า

239
00:13:33,116 --> 00:13:35,796
แล้วคืน response นั้นให้ลูกค้า

240
00:13:35,796 --> 00:13:40,621
ดังนั้นลูกค้าจึงได้รับคำตอบที่สมบูรณ์และมีประโยชน์ครับ

241
00:13:40,621 --> 00:13:44,553
มีการใช้งานจริงมากมายครับ เช่น microservices

242
00:13:44,553 --> 00:13:47,859
การเชื่อมต่อบริษัทอื่น cross language

243
00:13:47,859 --> 00:13:51,879
specialized teams และ cross organization ครับ

244
00:13:51,879 --> 00:13:54,560
ทั้งหมดนี้คือการใช้งานจริงครับ

245
00:13:54,560 --> 00:13:58,670
ส่วนไอเดียต่อยอดคือ ตอนนี้คุณเข้าใจพื้นฐานแล้ว

246
00:13:58,670 --> 00:14:02,780
ลองขยายตัวอย่างพวกนี้ดู เช่น เพิ่มเอเจนต์อื่นๆ

247
00:14:02,780 --> 00:14:06,622
เข้ามาอีก เช่น inventory agent และ shipping

248
00:14:06,622 --> 00:14:09,660
agent แล้วให้มีเอเจนต์ coordinator

249
00:14:09,660 --> 00:14:13,413
คุมทั้งสามตัวนี้ จากนั้นใช้แหล่งข้อมูลจริง

250
00:14:13,413 --> 00:14:17,165
แทนที่ mock product ด้วยฐานข้อมูลจริง เช่น

251
00:14:17,165 --> 00:14:21,186
MongoDB เพิ่มระบบติดตามสต็อกจริง เชื่อมต่อกับ

252
00:14:21,186 --> 00:14:24,581
payment gateway API จริงๆ ครับ เพื่อนๆ

253
00:14:24,581 --> 00:14:27,441
ทำทั้งหมดนี้ด้วยตัวเองได้เลยครับ

254
00:14:27,441 --> 00:14:31,461
จากนั้นคุณสามารถ deploy product catalog agent

255
00:14:31,461 --> 00:14:35,303
ขึ้น Agent Engine ได้ โดยอัปเดต URL ใน card

256
00:14:35,303 --> 00:14:38,877
จาก well-known ให้เป็น production server

257
00:14:38,877 --> 00:14:40,218
ที่ถูกต้องจริงๆ

258
00:14:40,218 --> 00:14:47,544
ครับ อยากรู้ว่าทำอย่างไร ใช้คู่มือ A2A เอกสารโปรโตคอล และตัวเลือก deployment อื่นๆ

259
00:14:47,544 --> 00:14:51,029
ได้เลย คุณทำได้ด้วยตัวเองครับ โดยสรุปใน

260
00:14:51,029 --> 00:14:54,514
notebook นี้เราได้เรียนรู้วิธีสร้างระบบ

261
00:14:54,514 --> 00:14:57,105
multi-agent ด้วย A2A protocol

262
00:14:57,105 --> 00:15:04,521
ซึ่งเป็นโปรโตคอลมาตรฐานสำหรับการสื่อสารระหว่างเอเจนต์กับเอเจนต์ข้ามเครือข่ายและข้าม

263
00:15:04,521 --> 00:15:07,469
framework รวมถึงการเปิดเผยเอเจนต์

264
00:15:07,469 --> 00:15:10,775
การใช้เอเจนต์ และ use case ต่างๆ ครับ

265
00:15:10,775 --> 00:15:13,902
ยินดีด้วยครับ เราทำส่วนแรกของ Day 5

266
00:15:13,902 --> 00:15:17,298
ซึ่งเป็นวันสุดท้ายของคอร์สนี้เสร็จแล้ว

267
00:15:17,298 --> 00:15:20,425
ส่วนจะไปส่วนสุดท้ายซึ่งก็คือ Day 5B

268
00:15:20,425 --> 00:15:22,480
โปรดไปดูวิดีโอถัดไปครับ