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

Day 1A: Intro to AI Agents — Complete Beginner Breakdown (Google x Kaggle Intensive)

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

สรุปย่อ

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

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

# สรุป: Day 1A: Intro to AI Agents — Complete Beginner Breakdown (Google x Kaggle Intensive)

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

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

- งาน Day 1 มี 2 ขั้นเตรียม: ฟังพอดแคสต์สรุปเนื้อหา และอ่าน white paper เรื่อง Introduction to Agents แต่ถ้ายังไม่ได้ทำก็ไม่กระทบการทำ codelab
- ต้องยืนยันเบอร์โทรศัพท์ในบัญชี Kaggle ก่อน ไม่อย่างนั้นจะรันโค้ดใน codelab ไม่ได้เลย
- codelab มี 2 แบบฝึกหัด: สร้าง agent ตัวแรก และสร้างระบบ multi-agent — วิดีโอนี้โฟกัสข้อแรก ส่วน multi-agent แยกไปวิดีโอถัดไป
- ADK (Agent Development Kit) ขับเคลื่อนด้วย Gemini และให้ agent ใช้ Google Search ตอบคำถามด้วยข้อมูลล่าสุดได้
- codelab ที่สองยังสอนการสร้างทีม agent เฉพาะทาง และ architectural patterns แบบ sequential, parallel และ loop
- ต้องกด "Copy & Edit" เพื่อสร้างสำเนา Kaggle Notebook ที่แก้ไขได้ก่อนเริ่มทำงาน
- API key สร้างใน Google AI Studio แนะนำให้สร้าง project ใหม่เองเพื่อความคุ้นเคย และห้ามแชร์ key ให้ใครเด็ดขาด
- secret ใน Notebook เป็นแบบ case-sensitive และต้องติ๊ก attach ให้ถูกต้อง ไม่งั้นขั้นตอน authenticate จะ error
- retry option จัดการ transient error อย่าง rate limit ด้วย exponential backoff (5 ครั้ง, ตัวคูณ 7, delay เริ่มต้น 1 วินาที)
- ความต่างหลัก: model ตอบกลับด้วยข้อความ แต่ agent คิด-ลงมือ-สังเกตผล (think, act, observe) เหมือน Siri
- agent ประกอบด้วย name, description, model (Gemini 2.5 Flash), instruction และ tools (Google Search)
- runner ทำหน้าที่เป็น orchestrator จัดการ session และการตอบกลับของ agent
- ขั้นสุดท้าย generate sample agent แล้วรันผ่าน web interface ที่เปิดเป็นหน้าแชทคุยกับ agent ได้

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

วิดีโอนี้เหมาะกับผู้เริ่มต้นมากครับ เพราะอธิบายตั้งแต่พื้นฐานว่า agent ต่างจาก model อย่างไร แล้วพาทำทีละขั้นจนได้ agent ตัวแรกที่ค้นข้อมูลจริงผ่าน Google Search ครับ แม้คำบรรยายต้นฉบับจะถอดเสียงเพี้ยนหลายจุด แต่เนื้อหาหลักยังติดตามได้ครบและทำตามได้จริงครับ
02

คำแปลเต็ม

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

สวัสดีทุกคน ยินดีต้อนรับกลับสู่ช่องอีกครั้งครับ ในวิดีโอนี้เราจะไปทำแบบฝึกหัดของ Day 1 ของคอร์สนี้กันครับ งานของ Day 1 ประกอบด้วยขั้นตอนที่ต้องทำให้ครบดังนี้ครับ

ขั้นแรกคือฟังพอดแคสต์ตอนสรุปเนื้อหา ซึ่งสร้างโดย [ฟังไม่ชัด] และขั้นที่สองคืออ่าน white paper (เอกสารวิชาการ) เรื่อง Introduction to Agents ซึ่งเป็นภาคเสริมให้เข้าใจพอดแคสต์แบบลึกขึ้นครับ สองสื่อนี้ให้ข้อมูลและประโยชน์มาก ผมจึงแนะนำให้ไปฟังและอ่านด้วยตัวเองครับ แต่ถ้าใครยังไม่ได้ทำก็ไม่เป็นไรเลยครับ จะไม่กระทบการทำ codelab (ห้องทดลองเขียนโค้ด) ของคุณแน่นอน เพราะเราจะไล่ทำ codelab ไปด้วยกันทีละขั้น และผมจะอธิบายโค้ดทุก snippet ให้ฟังแบบละเอียด คุณจึงไม่ต้องกังวลว่าจะขาดความเข้าใจเพราะไม่ได้ไปผ่านเนื้อหาเหล่านั้นครับ แต่ถึงอย่างนั้นเมื่อจบซีรีส์แล้ว ผมก็ยังแนะนำให้กลับไปอ่านบทความและฟังพอดแคสต์ของคอร์สอีกครั้งนะครับ ในที่นี้ผมจะกดติ๊กข้อ 1 กับ 2 ไปก่อน เพราะทำเสร็จจากทางผมแล้วครับ

อีกเรื่องที่อยากย้ำคือ ขอให้ทุกคนยืนยันเบอร์โทรศัพท์ในบัญชี Kaggle ให้เรียบร้อยด้วยนะครับ ไม่อย่างนั้นคุณจะรันโค้ด snippet ใด ๆ ไม่ได้เลย ระบบจะโยน error ออกมาครับ การยืนยันเบอร์จึงจำเป็นสำหรับ codelab มาก ๆ ครับ ทางผมทำขั้นตอนนี้สำเร็จเรียบร้อยแล้วครับ

ใน codelab นี้เรามีแบบฝึกหัด 2 อย่างครับ อย่างแรกคือเราจะสร้าง agent ตัวแรกของเรา แล้วอย่างที่สองคือสร้างระบบ multi-agent (ระบบหลายเอเจนต์) ตัวแรก ทั้งสองอย่างใช้ ADK ซึ่งก็คือ Agent Development Kit (ชุดเครื่องมือพัฒนาเอเจนต์) ที่ขับเคลื่อนด้วย Gemini และทำให้ agent มีความสามารถใช้ Google Search ตอบคำถามด้วยข้อมูลที่อัปเดตล่าสุดได้ครับ

ใน codelab ที่สอง จุดที่น่าสนใจคือ มันไม่ได้ช่วยแค่ให้เราสร้างระบบ multi-agent เท่านั้น แต่ยังสอนวิธีสร้างทีมของ agent เฉพาะทาง (specialized agents) และโชว์ pattern ทางสถาปัตยกรรม (architectural patterns) ที่มีให้เลือกใช้ เช่น sequential, parallel, loop [ฟังไม่ชัด] ครับ เพื่อให้เนื้อหาในวิดีโอง่ายและกระชับ ในวิดีโอนี้เราจะโฟกัสที่การสร้าง agent ตัวแรกก่อน แล้วจะมีวิดีโอต่อยอดอีกหนึ่งตอน สำหรับการสร้างระบบ multi-agent พร้อมสำรวจ pattern ทางสถาปัตยกรรมต่าง ๆ ที่เกี่ยวข้องกันครับ

งั้นไม่รอช้า เราไปเริ่มสร้าง agent ตัวแรกกันเลย โดยคลิกที่ลิงก์แรกคือคำว่า build ครับ ลิงก์นี้จะพาเราไปที่ Kaggle Notebook (สมุดบันทึกโค้ดบน Kaggle) ซึ่งระบุว่าเป็นวันแรก หัวข้อ From Prompt to Action ครับ นี่คือ Notebook ที่เราจะใช้ทำงานตลอดทั้งคอร์สนี้ครับ ตอนนี้มันยังแก้ไขไม่ได้ เราต้องสร้างสำเนาของตัวเองที่แก้ได้ โดยคลิกที่ปุ่ม Edit my copy ที่มุมขวาบนด้านขวามือครับ ระบบจะเปิดสำเนาที่แก้ไขได้ให้เราครับ บางครั้งขั้นตอนนี้ใช้เวลาสักหน่อย เพราะมีผู้เข้าร่วมจำนวนมากกำลังใช้ Notebook เดียวกันอยู่พร้อมกัน คุณอาจเจอปัญหานี้ได้ ให้รอสักครู่แล้วลองใหม่อีกครั้ง ก็น่าจะแก้ปัญหาได้ครับ

ใน Notebook นี้ มีหลายขั้นตอนที่เราจะไล่ทำไปด้วยกันครับ ขั้นแรกคือติดตั้ง ADK จากนั้น configure API key (กุญแจเรียกใช้ API) เพื่อใช้เครื่องมือของ Gemini เราจะสร้าง API key กันใน Google AI Studio หวังว่าทุกคนสมัครบัญชีไว้แล้วนะครับ ถัดไปเราจะสร้าง agent อย่างง่ายหนึ่งตัว แล้วรัน agent นั้น ดูมันเรียกใช้ tool สำหรับ Google Search เพื่อตอบคำถามหนึ่งข้อ หรือมากกว่านั้นก็ได้ จะถามสัก 4-5 คำถามก็ย่อมได้ครับ และยังมีอีกขั้นหนึ่ง คือเราจะรัน agent ใน Notebook นี้ แล้วเราจะรัน agent ใน web interface (หน้าเว็บแบบมีช่องแชท) ด้วย นับเป็นอีกขั้นตอนหนึ่งที่ใช้เวลาไม่กี่นาทีครับ

งั้นเริ่มกันเลยครับ ในส่วนติดตั้ง เราไม่ต้องติดตั้ง Agent Development Kit เองครับ เพราะถ้าเราใช้สภาพแวดล้อมของ Notebook ตัว Notebook จะมี library นี้ติดตั้งไว้ให้แล้วแบบสำเร็จรูป เราจึงไม่ต้องติดตั้ง package ใด ๆ เลยครับ แต่ถ้าคุณใช้ environment ส่วนตัวของคุณเองในการเขียน คุณอาจต้องรันคำสั่งติดตั้งนี้ครับ

ขั้นถัดไปคือสร้าง API key ครับ เราต้องสร้างมันใน Google AI Studio ที่หน้า API ครับ ถ้าคุณทำครั้งแรก คุณจะเห็น project เริ่มต้น (default project) หนึ่งตัว และคุณใช้ตัวนี้ทำแบบฝึกหัดได้ถ้าต้องการครับ อย่างไรก็ตาม ผมแนะนำให้ลองสร้าง project ใหม่ขึ้นมาเองสักตัว เพื่อได้ประสบการณ์และความเข้าใจครับ และขอย้ำว่าอย่าแชร์ API key กับใครเด็ดขาด เพราะมันคือกุญแจลับของคุณครับ คุณจะเห็นปุ่มที่หน้านี้ กดที่ปุ่มนั้นแล้วจะมี dialog box เด้งขึ้นมาให้เลือก project ครับ ทางผมมี project อยู่แล้วหลายตัว แต่ถ้าคุณทำครั้งแรกเพื่อคอร์สนี้ ผมจะสร้าง project ใหม่ให้ดูเป็นตัวอย่างครับ เมื่อสร้างเสร็จแล้ว คุณจะเห็นว่ามันถูกแสดงขึ้นมาในรายการ พร้อมระบุชนิดของ project ที่เชื่อมโยงกันครับ ตอนนี้เราได้สร้างสำเร็จแล้ว ให้กลับไปที่ Notebook ครับ

ขั้นต่อมา ผมต้องเพิ่ม secret (ข้อมูลลับ) เข้าไปครับ คลิกที่ส่วน Secrets แล้วเลือก project ที่เราสร้างไว้ครับ ระวังด้วยนะครับ ชื่อของ secret นั้นมีผลตามตัวพิมพ์ใหญ่-เล็ก (case-sensitive) จากนั้นกดบันทึกได้เลยครับ อีกเรื่องที่ต้องสังเกตคือ ถ้าคุณไม่ได้ติ๊กกล่อง check นี้ไว้ แล้วรันโค้ดส่วนการยืนยันตัวตน ผลลัพธ์ที่พิมพ์ออกมาจะไม่ถูกต้องครับ ลองดูกันครับ ผมจะเอาเครื่องหมายติ๊กออกแล้วรันด้วย Shift+Enter ตอนนี้ผมคาดหวังว่าจะเกิด error ขึ้น เพราะการยืนยันตัวตนจะไม่สำเร็จตามที่คาดไว้ครับ วิธีแก้ error นี้คือกลับมาเลือกติ๊กกล่องนั้นใหม่ แล้วรันอีกครั้ง การตั้งค่าก็จะเรียบร้อยครับ

ขั้นถัดไปคือ import ส่วนประกอบต่าง ๆ ครับ ส่วนประกอบเหล่านี้มาจาก ADK และ library ของ generative AI ครับ คุณจะเห็นว่ามี Agent ซึ่งเป็นคลาสของ agent ที่เรา import จาก google และเรา import search tool ซึ่งเป็นเครื่องมือค้นหาเข้ามาด้วยครับ การรันส่วนนี้ปกติจะใช้เวลาสักครู่ เพราะระบบกำลัง import ทุกอย่างเข้ามาครับ

ขั้นต่อมาคือการ define function ครับ ถ้าคุณรัน snippet นี้นอกสภาพแวดล้อมของ Kaggle คุณไม่จำเป็นต้องทำขั้นนี้เลยครับ ขั้นนี้มีไว้เฉพาะสำหรับ Kaggle Notebook ครับ กดตกลงไป แล้ว output ควรจะขึ้นว่า helper functions defined ครับ คุณจะเห็นข้อความยืนยันว่าฟังก์ชันถูก define แล้วครับ

ขั้นถัดไปคือ configure retry option (ตัวเลือกการลองใหม่) ครับ retry option คืออะไรกัน? นี่คือสิ่งที่เราทำเสมอเมื่อทำงานกับ LLM (โมเดลภาษาขนาดใหญ่) ครับ เพราะส่วนใหญ่เรามักจะเจอปัญหาชั่วคราว (transient issue) เช่น rate limit (ข้อจำกัดจำนวน request) หรือ service ใช้งานไม่ได้ชั่วคราว เหมือนที่บางเว็บไซต์อาจล่มไปช่วงหนึ่งแล้วกลับมาใช้ได้อีกครั้ง อย่างกับ LLM ก็เช่นกันครับ retry option จะลองส่ง request ใหม่ให้อัตโนมัติและจัดการกับความล้มเหลวเองครับ เราจะมี snippet ซึ่งสั่งให้ LLM ลองส่ง request ใหม่ด้วยรูปแบบ exponential backoff (การหน่วงเวลาทบต้นแบบเอกซ์โพเนนเชียล) ครับ

ตรงจุดนี้ผมไม่เห็นมีข้อความ print ออกมา ผมจะเพิ่มคำสั่ง print เข้าไปเพื่อความชัดเจนครับ เมื่อรันเสร็จ ก็จะมีข้อความยืนยันขึ้นมาครับ มาดูความหมายของค่าที่ตั้งไว้กันครับ ตัวเลขที่เห็นคือจำนวนครั้งของการ retry ซึ่งเรากำหนดไว้ที่ 5 ครั้งครับ ส่วนตัวคูณของ exponential backoff กำหนดไว้ที่ 7 เท่าของ delay ครับ initial delay (ดีเลย์เริ่มต้น) คือ 1 วินาที หมายความว่าก่อนเริ่มลองครั้งแรก ระบบจะรอ 1 วินาทีก่อน ให้เวลาเว็บไซต์หรือ service กลับมาใช้งานได้ภายใน 1 วินาที ไม่เช่นนั้นจะเริ่ม retry ต่อไป โดยมีจำนวนสูงสุด 5 ครั้ง ที่ระยะห่างเพิ่มขึ้นแบบเอกซ์โพเนนเชียลที่ตัวคูณ 7 ครับ แล้วสถานการณ์แบบไหนที่ควร retry กัน? นี่คือ HTTP code ที่เราระบุไว้ครับ ถ้าคุณมี code เพิ่มเติมที่ต้องการ ก็เพิ่มเข้าไปได้เลย นี่คือเงื่อนไขที่บอกว่าในสถานการณ์ใด LLM ควรจะลองส่ง request ใหม่ครับ

ต่อมาถึงส่วนสำคัญคือการสร้าง agent ตัวแรกของเราครับ ก่อนจะสร้าง agent เรามาทำความเข้าใจสั้น ๆ กันก่อนว่า agent กับ model ต่างกันอย่างไรครับ สำหรับ model อย่าง Gemini สิ่งที่เกิดขึ้นก็คือ ผู้ใช้ส่ง prompt เข้ามา แล้ว Gemini ส่งข้อความ (text response) กลับไป เป็นการทำงานตรงไปตรงมาครับ แต่สำหรับ agent แล้ว AI มีความสามารถในการคิด ลงมือทำ และสังเกตผล (think, act, observe) ครับ เมื่อผู้ใช้ส่ง prompt เข้ามา agent จะคิดวิเคราะห์ prompt นั้น เข้าใจว่าควรเรียกใช้ tool ตัวไหนหรือไปที่ไหนเพื่อหาคำตอบที่ใช่ นั่นคือการลงมือทำ (action) ของมัน และเมื่อ tool ตอบกลับมาพร้อมข้อมูล agent จะสังเกตข้อมูลนั้น คัดกรองและจัดระเบียบ แล้วนำเสนอเป็นคำตอบสุดท้ายให้ผู้ใช้ครับ นี่คือความต่างระหว่าง model กับ agent ครับ model คือสิ่งที่ตอบกลับมาด้วยข้อความ ส่วน agent คือสิ่งที่ตอบกลับมาด้วยการให้บริการเหมือน Siri ที่คุณขอให้ Siri ตั้งงานให้ได้ครับ นั่นคือความต่างพื้นฐานครับ

ตอนนี้มา define agent ของเรากันครับ agent ทุกตัวจะมี property หลักดังนี้ คือ description, model, instruction และ tools ครับ root agent (agent หลัก) ทุกตัวควรมี name หรือชื่อ, description หรือคำอธิบาย, model ที่ใช้ข้างใน พร้อมกับ retry config เพื่อให้ agent ลองใหม่ได้เมื่อเกิดความล้มเหลวครับ ส่วน name นั้นมีประโยชน์กับระบบครับ model ที่เราใช้คือ Gemini โดยเวอร์ชันคือ Gemini 2.5 Flash ครับ เรายังใส่ retry option เข้าไปด้วย เพื่อที่ว่าถ้ามีความล่าช้าหรือเจอปัญหา rate limit agent ก็จะลองใหม่ให้เองครับ เรา define ชื่อเรียบร้อยแล้ว

ต่อมาที่ description ครับ description มีไว้เพื่อให้พวกเราเข้าใจว่า agent ตัวนี้เป็น agent เกี่ยวกับอะไร ในที่นี้คือ agent อย่างง่ายที่ตอบคำถามทั่วไปได้ครับ ส่วน instruction เป็นสิ่งที่ให้ agent เข้าใจว่าตัวเองควรทำอะไร ข้อความในส่วนนี้ระบุว่าคุณเป็นผู้ช่วยที่เป็นประโยชน์ ให้ใช้ Google Search หาข้อมูลปัจจุบัน ดังนั้นเราจึงกำหนด tool เป็น search ครับ ด้วย instruction นี้ คำถามใด ๆ ที่ถูกถามเข้ามา agent จะไปที่ search tool ค้นหาข้อมูลนั้น แล้วตอบกลับพร้อมข้อมูลที่หาได้ครับ เมื่อ define agent เสร็จ ลองรัน cell นี้ ระบบจะแจ้งว่า agent ถูก define แล้วครับ

ต่อไปเราจะรัน agent ตัวนี้ครับ ในการรัน agent เราต้องมีสิ่งที่เรียกว่า runner ครับ ซึ่งเป็น orchestrator (ตัวประสานงานหลัก) หรือ central component ภายใน ADK ครับ มันจัดการบทสนทนา ข้อความต่าง ๆ ทั้งหมด และดูแลการตอบกลับของ agent ครับ เราจะสร้าง runner แบบ in-memory ขึ้นมา แล้วบอกให้มันใช้ agent ของเราครับ เมื่อรันเสร็จ runner ก็ถูกสร้างขึ้นมาเรียบร้อยครับ

ตอนนี้เราจะเรียกใช้ agent ของเราครับ เราส่ง prompt เข้าไปโดยใช้ snippet นี้ครับ คุณเห็น response ซึ่งเท่ากับผลจากการ run และในเครื่องหมายคำพูดคู่ เราใส่คำถามได้หลายคำถาม จะถามอะไรก็ได้ตามต้องการครับ โดย default แล้วคำถามคือ ADK ของ Google คืออะไร และ SDK นั้นเป็นภาษาอะไรครับ คลิกรันแล้วดูว่ามันตอบอย่างไรครับ

ระบบแจ้งว่าเป็น session ใหม่ แสดง debug session ID คำถามของผู้ใช้คือข้อความนี้ และผู้ช่วยที่เป็นประโยชน์ก็ตอบกลับมาแบบนี้ครับ มันตอบว่า ADK เป็นเครื่องมือ open source ที่ออกแบบมาเพื่อทำให้การสร้าง deployment และ orchestration ของเอเจนต์ AI และระบบต่าง ๆ ง่ายขึ้น พร้อมข้อมูลในลักษณะนี้ครับ แล้วสำหรับคำถามที่สอง มันก็ตอบเกี่ยวกับ ADK ได้อย่างดีครับ

ทีนี้มันแนะนำด้วยว่าทำไมคุณไม่ลองถามคำถามของตัวเองดูล่ะครับ เช่น ถามว่าอากาศเป็นอย่างไร โดยเปลี่ยนคำถามเป็น what's the weather ครับ ระบบแจ้งว่า continue session คือเป็นการต่อใน session เดิมที่เพิ่งเริ่มไปครับ คำถามคืออากาศเป็นอย่างไร และคำตอบคือสภาพอากาศปัจจุบันเป็นแบบนี้ครับ นับเป็นคำตอบที่ดีมากครับ มันบอกว่าที่เหลือของวันพฤหัสบดีคาดว่าจะมีเมฆมาก วันศุกร์คาดว่าจะมีฝนลงเล็กน้อย และพยากรณ์ว่าวันเสาร์จะมีฝนครับ เราจึงเห็นภาพการทำงานของมันได้ดีมากครับ ผมมีคำถามจากทางผมเองอีกสองสามข้อ ลองรันดูครับ

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

ต่อมาถึงขั้นตอนสุดท้ายของแบบฝึกหัดนี้ คือการสร้าง web interface ครับ หน้าตาจะประมาณนี้ครับ ขั้นแรกเราต้อง generate sample agent (agent ตัวอย่าง) ของเราก่อน โดยรันโค้ดนี้ครับ มันจะสร้างโฟลเดอร์ sample agent ซึ่งบรรจุไฟล์ทั้งหมด รวมถึงไฟล์ agent.py กับ environment และอื่น ๆ ครับ ตอนนี้กำลังรันอยู่ และนี่คือช่วงที่คุณจะเห็น agent ถูกสร้างและแสดงขึ้นมาครับ

ต่อมารันคำสั่งถัดไปครับ จะเห็นสถานะว่ากำลังรัน เมื่อรันเสร็จ ระบบจะแจ้งว่าพร้อมใช้งานแล้วครับ เมื่อทุกอย่างเรียบร้อย มันจะพาเราไปที่หน้าเว็บหน้าหนึ่ง ซึ่งเปิดมาแล้วเราสามารถเลือก agent และทดลองถามคำถามผ่านหน้านี้ได้เลยครับ ผมลองถามคำถามดูแล้วก็ตอบกลับมาเป็นที่น่าพอใจครับ

ผมคิดว่าผมพอใจกับ agent ตัวนี้แล้ว และหวังว่าคุณก็จะพอใจเช่นกันนะครับ ขอให้ทุกคนลองทำตามดูครับ วิดีโอนี้จะจบลงเพียงเท่านี้ ขอบคุณที่รับชมครับ

03

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

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

  • ## จุดที่ใช้สัญลักษณ์ฟังไม่ชัด (2 จุด)
  • "which is created by not then" — ชื่อผู้สร้างพอดแคสต์ถอดมาเป็น "not then" ไม่สามารถระบุตัวตนได้ จึงใส่ [ฟังไม่ชัด] หลังคำว่า "สร้างโดย" โดยไม่เดาชื่อ
  • "sequential parallel loop uh which has critical and retrieval" — คำหลัง loop ถอดมาเป็น "critical and retrieval" ไม่ชัดว่าหมายถึง pattern ใด (น่าจะ pipeline กับ retrieval-based) จึงใส่ [ฟังไม่ชัด] ต่อท้ายและคงชื่อ pattern ที่ชัดเจน (sequential/parallel/loop) ไว้
04

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

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

ศัพท์คำแปล / คำอธิบาย
ADK (Agent Development Kit)ชุดเครื่องมือพัฒนาเอเจนต์ของ Google ขับเคลื่อนด้วย Gemini
AI agentเอเจนต์ AI — โปรแกรม AI ที่คิด ลงมือทำ และสังเกตผลได้
multi-agent systemระบบที่มีเอเจนต์หลายตัวทำงานร่วมกัน
specialized agentsทีมเอเจนต์เฉพาะทางที่แบ่งหน้าที่กันทำงาน
architectural patternรูปแบบสถาปัตยกรรมการจัดวางเอเจนต์ เช่น sequential/parallel/loop
sequential / parallel / loopทำงานตามลำดับ / ขนานกัน / วนซ้ำ
Kaggle Notebookสมุดบันทึกโค้ดออนไลน์บน Kaggle
Edit my copyปุ่มสร้างสำเนา Notebook ที่แก้ไขได้ของตัวเอง
white paperเอกสารวิชาการเชิงลึกของคอร์ส
podcastรายการเสียงสรุปเนื้อหาประกอบคอร์ส
codelabห้องทดลองเขียนโค้ดแบบทำตามทีละขั้น
API keyกุญแจสำหรับยืนยันตัวตนและเรียกใช้ API
secretข้อมูลลับที่ผูกกับ Notebook เพื่อเก็บ API key อย่างปลอดภัย
case-sensitiveมีผลตามตัวพิมพ์ใหญ่-เล็ก
Google AI Studioเครื่องมือของ Google สำหรับสร้างและจัดการ API key
projectโปรเจกต์ใน Google AI Studio ที่ใช้จัดการการเข้าถึง API
Geminiโมเดล AI ตระกูล Gemini ของ Google
Gemini 2.5 Flashเวอร์ชันโมเดลที่ใช้สร้าง agent ในแบบฝึกหัดนี้
LLMLarge Language Model — โมเดลภาษาขนาดใหญ่
transient issueปัญหาชั่วคราวที่หายเอง เช่น network ขัดข้องเป็นพัก ๆ
rate limitข้อจำกัดจำนวน request ต่อช่วงเวลา
retry optionตัวเลือกให้ระบบลองส่ง request ใหม่อัตโนมัติเมื่อล้มเหลว
exponential backoffการหน่วงเวลาระหว่างการ retry ให้เพิ่มขึ้นแบบทบต้น
initial delayระยะเวลารอก่อนการลองครั้งแรก
HTTP codeรหัสสถานะ HTTP ที่ใช้กำหนดเงื่อนไขการ retry
think, act, observeคิด ลงมือทำ สังเกตผล — วงจรการทำงานของ agent
promptคำสั่ง/คำถามที่ผู้ใช้ส่งให้ AI
instructionคำสั่งระบบที่บอก agent ว่าต้องทำอะไร
descriptionคำอธิบายว่า agent ตัวนี้ทำอะไร (มีไว้ให้คนอ่าน)
toolsเครื่องมือที่ agent เรียกใช้ได้ เช่น Google Search
root agentagent หลักของระบบ
runnerตัวประสานงานหลักใน ADK จัดการ session และการตอบกลับ
orchestratorตัวประสานงานกลางที่คุมการทำงานทั้งหมด
sessionบทสนทนาหนึ่งรอบระหว่างผู้ใช้กับ agent
web interfaceหน้าเว็บสำหรับคุยกับ agent ผ่านเบราว์เซอร์
sample agentโฟลเดอร์ agent ตัวอย่างที่ generate จากโค้ด
agent.pyไฟล์หลักที่เก็บนิยามของ agent
open sourceซอฟต์แวร์เปิดที่เปิดโค้ดให้ใช้ได้ฟรี
deploymentการนำระบบขึ้นไปใช้งานจริง
orchestrationการประสานงานให้ส่วนต่าง ๆ ทำงานเข้ากัน
Shift+Enterปุ่มลัดรัน cell ใน Notebook
05

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

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

1
00:00:00,000 --> 00:00:01,422
สวัสดีทุกคน

2
00:00:01,422 --> 00:00:05,946
ยินดีต้อนรับกลับสู่ช่องอีกครั้งครับ

3
00:00:05,946 --> 00:00:10,857
ในวิดีโอนี้เราจะไปทำแบบฝึกหัดของ Day 1

4
00:00:10,857 --> 00:00:14,864
ของคอร์สนี้กันครับ งานของ Day 1
thai-subtitles.srt
SubRip — ใช้กับเครื่องเล่นวิดีโอส่วนใหญ่
↓ ดาวน์โหลด
thai-subtitles.vtt
WebVTT — ใช้กับเว็บ / YouTube
↓ ดาวน์โหลด
เปิดดูซับไตเติ้ลทั้งหมด (290 segments)
1
00:00:00,000 --> 00:00:01,422
สวัสดีทุกคน

2
00:00:01,422 --> 00:00:05,946
ยินดีต้อนรับกลับสู่ช่องอีกครั้งครับ

3
00:00:05,946 --> 00:00:10,857
ในวิดีโอนี้เราจะไปทำแบบฝึกหัดของ Day 1

4
00:00:10,857 --> 00:00:14,864
ของคอร์สนี้กันครับ งานของ Day 1

5
00:00:14,864 --> 00:00:20,293
ประกอบด้วยขั้นตอนที่ต้องทำให้ครบดังนี้ครับ

6
00:00:20,293 --> 00:00:24,817
ขั้นแรกคือฟังพอดแคสต์ตอนสรุปเนื้อหา

7
00:00:24,817 --> 00:00:30,634
ซึ่งสร้างโดย [ฟังไม่ชัด] และขั้นที่สองคืออ่าน

8
00:00:30,634 --> 00:00:35,028
white paper (เอกสารวิชาการ) เรื่อง

9
00:00:35,028 --> 00:00:37,872
Introduction to Agents

10
00:00:37,872 --> 00:00:43,947
ซึ่งเป็นภาคเสริมให้เข้าใจพอดแคสต์แบบลึกขึ้นครับ

11
00:00:43,947 --> 00:00:48,212
สองสื่อนี้ให้ข้อมูลและประโยชน์มาก

12
00:00:48,212 --> 00:00:53,253
ผมจึงแนะนำให้ไปฟังและอ่านด้วยตัวเองครับ

13
00:00:53,253 --> 00:00:58,165
แต่ถ้าใครยังไม่ได้ทำก็ไม่เป็นไรเลยครับ

14
00:00:58,165 --> 00:01:03,852
จะไม่กระทบการทำ codelab (ห้องทดลองเขียนโค้ด)

15
00:01:03,852 --> 00:01:08,506
ของคุณแน่นอน เพราะเราจะไล่ทำ codelab

16
00:01:08,506 --> 00:01:14,451
ไปด้วยกันทีละขั้น และผมจะอธิบายโค้ดทุก snippet

17
00:01:14,451 --> 00:01:16,519
ให้ฟังแบบละเอียด

18
00:01:16,519 --> 00:01:25,955
คุณจึงไม่ต้องกังวลว่าจะขาดความเข้าใจเพราะไม่ได้ไปผ่านเนื้อหาเหล่านั้นครับ

19
00:01:25,955 --> 00:01:30,091
แต่ถึงอย่างนั้นเมื่อจบซีรีส์แล้ว

20
00:01:30,091 --> 00:01:38,751
ผมก็ยังแนะนำให้กลับไปอ่านบทความและฟังพอดแคสต์ของคอร์สอีกครั้งนะครับ

21
00:01:38,751 --> 00:01:43,405
ในที่นี้ผมจะกดติ๊กข้อ 1 กับ 2 ไปก่อน

22
00:01:43,405 --> 00:01:47,024
เพราะทำเสร็จจากทางผมแล้วครับ

23
00:01:47,024 --> 00:01:49,867
อีกเรื่องที่อยากย้ำคือ

24
00:01:49,867 --> 00:01:55,425
ขอให้ทุกคนยืนยันเบอร์โทรศัพท์ในบัญชี Kaggle

25
00:01:55,425 --> 00:01:58,269
ให้เรียบร้อยด้วยนะครับ

26
00:01:58,269 --> 00:02:03,052
ไม่อย่างนั้นคุณจะรันโค้ด snippet ใด ๆ

27
00:02:03,052 --> 00:02:13,263
ไม่ได้เลย ระบบจะโยน error ออกมาครับ การยืนยันเบอร์จึงจำเป็นสำหรับ codelab มาก ๆ

28
00:02:13,263 --> 00:02:19,079
ครับ ทางผมทำขั้นตอนนี้สำเร็จเรียบร้อยแล้วครับ

29
00:02:19,079 --> 00:02:24,249
ใน codelab นี้เรามีแบบฝึกหัด 2 อย่างครับ

30
00:02:24,249 --> 00:02:29,420
อย่างแรกคือเราจะสร้าง agent ตัวแรกของเรา

31
00:02:29,420 --> 00:02:34,461
แล้วอย่างที่สองคือสร้างระบบ multi-agent

32
00:02:34,461 --> 00:02:40,148
(ระบบหลายเอเจนต์) ตัวแรก ทั้งสองอย่างใช้ ADK

33
00:02:40,148 --> 00:02:44,155
ซึ่งก็คือ Agent Development Kit

34
00:02:44,155 --> 00:02:49,971
(ชุดเครื่องมือพัฒนาเอเจนต์) ที่ขับเคลื่อนด้วย

35
00:02:49,971 --> 00:02:55,659
Gemini และทำให้ agent มีความสามารถใช้ Google

36
00:02:55,659 --> 00:02:56,757
Search

37
00:02:56,757 --> 00:03:02,315
ตอบคำถามด้วยข้อมูลที่อัปเดตล่าสุดได้ครับ ใน

38
00:03:02,315 --> 00:03:06,322
codelab ที่สอง จุดที่น่าสนใจคือ

39
00:03:06,322 --> 00:03:11,880
มันไม่ได้ช่วยแค่ให้เราสร้างระบบ multi-agent

40
00:03:11,880 --> 00:03:16,921
เท่านั้น แต่ยังสอนวิธีสร้างทีมของ agent

41
00:03:16,921 --> 00:03:22,738
เฉพาะทาง (specialized agents) และโชว์ pattern

42
00:03:22,738 --> 00:03:27,779
ทางสถาปัตยกรรม (architectural patterns)

43
00:03:27,779 --> 00:03:33,337
ที่มีให้เลือกใช้ เช่น sequential, parallel,

44
00:03:33,337 --> 00:03:36,051
loop [ฟังไม่ชัด] ครับ

45
00:03:36,051 --> 00:03:40,704
เพื่อให้เนื้อหาในวิดีโอง่ายและกระชับ

46
00:03:40,704 --> 00:03:45,616
ในวิดีโอนี้เราจะโฟกัสที่การสร้าง agent

47
00:03:45,616 --> 00:03:51,045
ตัวแรกก่อน แล้วจะมีวิดีโอต่อยอดอีกหนึ่งตอน

48
00:03:51,045 --> 00:03:56,344
สำหรับการสร้างระบบ multi-agent พร้อมสำรวจ

49
00:03:56,344 --> 00:03:59,963
pattern ทางสถาปัตยกรรมต่าง ๆ

50
00:03:59,963 --> 00:04:04,229
ที่เกี่ยวข้องกันครับ งั้นไม่รอช้า

51
00:04:04,229 --> 00:04:08,623
เราไปเริ่มสร้าง agent ตัวแรกกันเลย

52
00:04:08,623 --> 00:04:13,406
โดยคลิกที่ลิงก์แรกคือคำว่า build ครับ

53
00:04:13,406 --> 00:04:18,059
ลิงก์นี้จะพาเราไปที่ Kaggle Notebook

54
00:04:18,059 --> 00:04:21,290
(สมุดบันทึกโค้ดบน Kaggle)

55
00:04:21,290 --> 00:04:26,848
ซึ่งระบุว่าเป็นวันแรก หัวข้อ From Prompt to

56
00:04:26,848 --> 00:04:30,338
Action ครับ นี่คือ Notebook

57
00:04:30,338 --> 00:04:34,992
ที่เราจะใช้ทำงานตลอดทั้งคอร์สนี้ครับ

58
00:04:34,992 --> 00:04:37,964
ตอนนี้มันยังแก้ไขไม่ได้

59
00:04:37,964 --> 00:04:42,488
เราต้องสร้างสำเนาของตัวเองที่แก้ได้

60
00:04:42,488 --> 00:04:45,978
โดยคลิกที่ปุ่ม Edit my copy

61
00:04:45,978 --> 00:04:49,210
ที่มุมขวาบนด้านขวามือครับ

62
00:04:49,210 --> 00:04:53,863
ระบบจะเปิดสำเนาที่แก้ไขได้ให้เราครับ

63
00:04:53,863 --> 00:04:58,128
บางครั้งขั้นตอนนี้ใช้เวลาสักหน่อย

64
00:04:58,128 --> 00:05:03,686
เพราะมีผู้เข้าร่วมจำนวนมากกำลังใช้ Notebook

65
00:05:03,686 --> 00:05:08,986
เดียวกันอยู่พร้อมกัน คุณอาจเจอปัญหานี้ได้

66
00:05:08,986 --> 00:05:12,993
ให้รอสักครู่แล้วลองใหม่อีกครั้ง

67
00:05:12,993 --> 00:05:17,904
ก็น่าจะแก้ปัญหาได้ครับ ใน Notebook นี้

68
00:05:17,904 --> 00:05:22,945
มีหลายขั้นตอนที่เราจะไล่ทำไปด้วยกันครับ

69
00:05:22,945 --> 00:05:28,503
ขั้นแรกคือติดตั้ง ADK จากนั้น configure API

70
00:05:28,503 --> 00:05:34,320
key (กุญแจเรียกใช้ API) เพื่อใช้เครื่องมือของ

71
00:05:34,320 --> 00:05:39,619
Gemini เราจะสร้าง API key กันใน Google AI

72
00:05:39,619 --> 00:05:45,048
Studio หวังว่าทุกคนสมัครบัญชีไว้แล้วนะครับ

73
00:05:45,048 --> 00:05:50,089
ถัดไปเราจะสร้าง agent อย่างง่ายหนึ่งตัว

74
00:05:50,089 --> 00:05:55,776
แล้วรัน agent นั้น ดูมันเรียกใช้ tool สำหรับ

75
00:05:55,776 --> 00:06:00,300
Google Search เพื่อตอบคำถามหนึ่งข้อ

76
00:06:00,300 --> 00:06:04,566
หรือมากกว่านั้นก็ได้ จะถามสัก 4-5

77
00:06:04,566 --> 00:06:09,607
คำถามก็ย่อมได้ครับ และยังมีอีกขั้นหนึ่ง

78
00:06:09,607 --> 00:06:15,553
คือเราจะรัน agent ใน Notebook นี้ แล้วเราจะรัน

79
00:06:15,553 --> 00:06:21,369
agent ใน web interface (หน้าเว็บแบบมีช่องแชท)

80
00:06:21,369 --> 00:06:22,468
ด้วย

81
00:06:22,468 --> 00:06:28,413
นับเป็นอีกขั้นตอนหนึ่งที่ใช้เวลาไม่กี่นาทีครับ

82
00:06:28,413 --> 00:06:32,679
งั้นเริ่มกันเลยครับ ในส่วนติดตั้ง

83
00:06:32,679 --> 00:06:37,720
เราไม่ต้องติดตั้ง Agent Development Kit

84
00:06:37,720 --> 00:06:43,536
เองครับ เพราะถ้าเราใช้สภาพแวดล้อมของ Notebook

85
00:06:43,536 --> 00:06:46,768
ตัว Notebook จะมี library

86
00:06:46,768 --> 00:06:50,904
นี้ติดตั้งไว้ให้แล้วแบบสำเร็จรูป

87
00:06:50,904 --> 00:06:56,203
เราจึงไม่ต้องติดตั้ง package ใด ๆ เลยครับ

88
00:06:56,203 --> 00:06:59,305
แต่ถ้าคุณใช้ environment

89
00:06:59,305 --> 00:07:02,666
ส่วนตัวของคุณเองในการเขียน

90
00:07:02,666 --> 00:07:06,932
คุณอาจต้องรันคำสั่งติดตั้งนี้ครับ

91
00:07:06,932 --> 00:07:10,809
ขั้นถัดไปคือสร้าง API key ครับ

92
00:07:10,809 --> 00:07:16,755
เราต้องสร้างมันใน Google AI Studio ที่หน้า API

93
00:07:16,755 --> 00:07:21,796
ครับ ถ้าคุณทำครั้งแรก คุณจะเห็น project

94
00:07:21,796 --> 00:07:26,320
เริ่มต้น (default project) หนึ่งตัว

95
00:07:26,320 --> 00:07:31,878
และคุณใช้ตัวนี้ทำแบบฝึกหัดได้ถ้าต้องการครับ

96
00:07:31,878 --> 00:07:36,919
อย่างไรก็ตาม ผมแนะนำให้ลองสร้าง project

97
00:07:36,919 --> 00:07:39,375
ใหม่ขึ้นมาเองสักตัว

98
00:07:39,375 --> 00:07:43,899
เพื่อได้ประสบการณ์และความเข้าใจครับ

99
00:07:43,899 --> 00:07:49,198
และขอย้ำว่าอย่าแชร์ API key กับใครเด็ดขาด

100
00:07:49,198 --> 00:07:52,947
เพราะมันคือกุญแจลับของคุณครับ

101
00:07:52,947 --> 00:07:58,763
คุณจะเห็นปุ่มที่หน้านี้ กดที่ปุ่มนั้นแล้วจะมี

102
00:07:58,763 --> 00:08:04,192
dialog box เด้งขึ้นมาให้เลือก project ครับ

103
00:08:04,192 --> 00:08:08,199
ทางผมมี project อยู่แล้วหลายตัว

104
00:08:08,199 --> 00:08:13,628
แต่ถ้าคุณทำครั้งแรกเพื่อคอร์สนี้ ผมจะสร้าง

105
00:08:13,628 --> 00:08:17,893
project ใหม่ให้ดูเป็นตัวอย่างครับ

106
00:08:17,893 --> 00:08:20,349
เมื่อสร้างเสร็จแล้ว

107
00:08:20,349 --> 00:08:25,002
คุณจะเห็นว่ามันถูกแสดงขึ้นมาในรายการ

108
00:08:25,002 --> 00:08:30,689
พร้อมระบุชนิดของ project ที่เชื่อมโยงกันครับ

109
00:08:30,689 --> 00:08:35,860
ตอนนี้เราได้สร้างสำเร็จแล้ว ให้กลับไปที่

110
00:08:35,860 --> 00:08:41,288
Notebook ครับ ขั้นต่อมา ผมต้องเพิ่ม secret

111
00:08:41,288 --> 00:08:46,717
(ข้อมูลลับ) เข้าไปครับ คลิกที่ส่วน Secrets

112
00:08:46,717 --> 00:08:51,370
แล้วเลือก project ที่เราสร้างไว้ครับ

113
00:08:51,370 --> 00:08:55,248
ระวังด้วยนะครับ ชื่อของ secret

114
00:08:55,248 --> 00:09:01,064
นั้นมีผลตามตัวพิมพ์ใหญ่-เล็ก (case-sensitive)

115
00:09:01,064 --> 00:09:04,296
จากนั้นกดบันทึกได้เลยครับ

116
00:09:04,296 --> 00:09:07,527
อีกเรื่องที่ต้องสังเกตคือ

117
00:09:07,527 --> 00:09:11,922
ถ้าคุณไม่ได้ติ๊กกล่อง check นี้ไว้

118
00:09:11,922 --> 00:09:15,670
แล้วรันโค้ดส่วนการยืนยันตัวตน

119
00:09:15,670 --> 00:09:20,324
ผลลัพธ์ที่พิมพ์ออกมาจะไม่ถูกต้องครับ

120
00:09:20,324 --> 00:09:21,875
ลองดูกันครับ

121
00:09:21,875 --> 00:09:26,528
ผมจะเอาเครื่องหมายติ๊กออกแล้วรันด้วย

122
00:09:26,528 --> 00:09:31,957
Shift+Enter ตอนนี้ผมคาดหวังว่าจะเกิด error

123
00:09:31,957 --> 00:09:33,055
ขึ้น

124
00:09:33,055 --> 00:09:39,001
เพราะการยืนยันตัวตนจะไม่สำเร็จตามที่คาดไว้ครับ

125
00:09:39,001 --> 00:09:40,681
วิธีแก้ error

126
00:09:40,681 --> 00:09:45,076
นี้คือกลับมาเลือกติ๊กกล่องนั้นใหม่

127
00:09:45,076 --> 00:09:50,634
แล้วรันอีกครั้ง การตั้งค่าก็จะเรียบร้อยครับ

128
00:09:50,634 --> 00:09:55,933
ขั้นถัดไปคือ import ส่วนประกอบต่าง ๆ ครับ

129
00:09:55,933 --> 00:10:01,491
ส่วนประกอบเหล่านี้มาจาก ADK และ library ของ

130
00:10:01,491 --> 00:10:06,532
generative AI ครับ คุณจะเห็นว่ามี Agent

131
00:10:06,532 --> 00:10:12,478
ซึ่งเป็นคลาสของ agent ที่เรา import จาก google

132
00:10:12,478 --> 00:10:15,709
และเรา import search tool

133
00:10:15,709 --> 00:10:20,492
ซึ่งเป็นเครื่องมือค้นหาเข้ามาด้วยครับ

134
00:10:20,492 --> 00:10:24,757
การรันส่วนนี้ปกติจะใช้เวลาสักครู่

135
00:10:24,757 --> 00:10:29,928
เพราะระบบกำลัง import ทุกอย่างเข้ามาครับ

136
00:10:29,928 --> 00:10:35,873
ขั้นต่อมาคือการ define function ครับ ถ้าคุณรัน

137
00:10:35,873 --> 00:10:40,397
snippet นี้นอกสภาพแวดล้อมของ Kaggle

138
00:10:40,397 --> 00:10:44,533
คุณไม่จำเป็นต้องทำขั้นนี้เลยครับ

139
00:10:44,533 --> 00:10:50,221
ขั้นนี้มีไว้เฉพาะสำหรับ Kaggle Notebook ครับ

140
00:10:50,221 --> 00:10:55,391
กดตกลงไป แล้ว output ควรจะขึ้นว่า helper

141
00:10:55,391 --> 00:10:58,235
functions defined ครับ

142
00:10:58,235 --> 00:11:03,793
คุณจะเห็นข้อความยืนยันว่าฟังก์ชันถูก define

143
00:11:03,793 --> 00:11:09,480
แล้วครับ ขั้นถัดไปคือ configure retry option

144
00:11:09,480 --> 00:11:14,392
(ตัวเลือกการลองใหม่) ครับ retry option

145
00:11:14,392 --> 00:11:15,813
คืออะไรกัน?

146
00:11:15,813 --> 00:11:20,854
นี่คือสิ่งที่เราทำเสมอเมื่อทำงานกับ LLM

147
00:11:20,854 --> 00:11:23,957
(โมเดลภาษาขนาดใหญ่) ครับ

148
00:11:23,957 --> 00:11:28,739
เพราะส่วนใหญ่เรามักจะเจอปัญหาชั่วคราว

149
00:11:28,739 --> 00:11:33,004
(transient issue) เช่น rate limit

150
00:11:33,004 --> 00:11:37,658
(ข้อจำกัดจำนวน request) หรือ service

151
00:11:37,658 --> 00:11:40,243
ใช้งานไม่ได้ชั่วคราว

152
00:11:40,243 --> 00:11:48,127
เหมือนที่บางเว็บไซต์อาจล่มไปช่วงหนึ่งแล้วกลับมาใช้ได้อีกครั้ง

153
00:11:48,127 --> 00:11:53,168
อย่างกับ LLM ก็เช่นกันครับ retry option

154
00:11:53,168 --> 00:11:55,236
จะลองส่ง request

155
00:11:55,236 --> 00:12:01,182
ใหม่ให้อัตโนมัติและจัดการกับความล้มเหลวเองครับ

156
00:12:01,182 --> 00:12:07,128
เราจะมี snippet ซึ่งสั่งให้ LLM ลองส่ง request

157
00:12:07,128 --> 00:12:11,523
ใหม่ด้วยรูปแบบ exponential backoff

158
00:12:11,523 --> 00:12:16,951
(การหน่วงเวลาทบต้นแบบเอกซ์โพเนนเชียล) ครับ

159
00:12:16,951 --> 00:12:21,992
ตรงจุดนี้ผมไม่เห็นมีข้อความ print ออกมา

160
00:12:21,992 --> 00:12:24,707
ผมจะเพิ่มคำสั่ง print

161
00:12:24,707 --> 00:12:29,748
เข้าไปเพื่อความชัดเจนครับ เมื่อรันเสร็จ

162
00:12:29,748 --> 00:12:33,496
ก็จะมีข้อความยืนยันขึ้นมาครับ

163
00:12:33,496 --> 00:12:38,020
มาดูความหมายของค่าที่ตั้งไว้กันครับ

164
00:12:38,020 --> 00:12:42,932
ตัวเลขที่เห็นคือจำนวนครั้งของการ retry

165
00:12:42,932 --> 00:12:48,619
ซึ่งเรากำหนดไว้ที่ 5 ครั้งครับ ส่วนตัวคูณของ

166
00:12:48,619 --> 00:12:53,919
exponential backoff กำหนดไว้ที่ 7 เท่าของ

167
00:12:53,919 --> 00:12:59,735
delay ครับ initial delay (ดีเลย์เริ่มต้น) คือ

168
00:12:59,735 --> 00:13:04,905
1 วินาที หมายความว่าก่อนเริ่มลองครั้งแรก

169
00:13:04,905 --> 00:13:10,205
ระบบจะรอ 1 วินาทีก่อน ให้เวลาเว็บไซต์หรือ

170
00:13:10,205 --> 00:13:14,987
service กลับมาใช้งานได้ภายใน 1 วินาที

171
00:13:14,987 --> 00:13:18,865
ไม่เช่นนั้นจะเริ่ม retry ต่อไป

172
00:13:18,865 --> 00:13:21,967
โดยมีจำนวนสูงสุด 5 ครั้ง

173
00:13:21,967 --> 00:13:28,042
ที่ระยะห่างเพิ่มขึ้นแบบเอกซ์โพเนนเชียลที่ตัวคูณ

174
00:13:28,042 --> 00:13:33,600
7 ครับ แล้วสถานการณ์แบบไหนที่ควร retry กัน?

175
00:13:33,600 --> 00:13:39,158
นี่คือ HTTP code ที่เราระบุไว้ครับ ถ้าคุณมี

176
00:13:39,158 --> 00:13:44,845
code เพิ่มเติมที่ต้องการ ก็เพิ่มเข้าไปได้เลย

177
00:13:44,845 --> 00:13:50,016
นี่คือเงื่อนไขที่บอกว่าในสถานการณ์ใด LLM

178
00:13:50,016 --> 00:13:53,635
ควรจะลองส่ง request ใหม่ครับ

179
00:13:53,635 --> 00:13:58,029
ต่อมาถึงส่วนสำคัญคือการสร้าง agent

180
00:13:58,029 --> 00:14:02,424
ตัวแรกของเราครับ ก่อนจะสร้าง agent

181
00:14:02,424 --> 00:14:08,111
เรามาทำความเข้าใจสั้น ๆ กันก่อนว่า agent กับ

182
00:14:08,111 --> 00:14:13,669
model ต่างกันอย่างไรครับ สำหรับ model อย่าง

183
00:14:13,669 --> 00:14:19,357
Gemini สิ่งที่เกิดขึ้นก็คือ ผู้ใช้ส่ง prompt

184
00:14:19,357 --> 00:14:25,173
เข้ามา แล้ว Gemini ส่งข้อความ (text response)

185
00:14:25,173 --> 00:14:30,731
กลับไป เป็นการทำงานตรงไปตรงมาครับ แต่สำหรับ

186
00:14:30,731 --> 00:14:36,160
agent แล้ว AI มีความสามารถในการคิด ลงมือทำ

187
00:14:36,160 --> 00:14:41,072
และสังเกตผล (think, act, observe) ครับ

188
00:14:41,072 --> 00:14:45,466
เมื่อผู้ใช้ส่ง prompt เข้ามา agent

189
00:14:45,466 --> 00:14:48,827
จะคิดวิเคราะห์ prompt นั้น

190
00:14:48,827 --> 00:14:52,058
เข้าใจว่าควรเรียกใช้ tool

191
00:14:52,058 --> 00:14:56,712
ตัวไหนหรือไปที่ไหนเพื่อหาคำตอบที่ใช่

192
00:14:56,712 --> 00:15:02,140
นั่นคือการลงมือทำ (action) ของมัน และเมื่อ

193
00:15:02,140 --> 00:15:06,147
tool ตอบกลับมาพร้อมข้อมูล agent

194
00:15:06,147 --> 00:15:11,188
จะสังเกตข้อมูลนั้น คัดกรองและจัดระเบียบ

195
00:15:11,188 --> 00:15:16,229
แล้วนำเสนอเป็นคำตอบสุดท้ายให้ผู้ใช้ครับ

196
00:15:16,229 --> 00:15:21,658
นี่คือความต่างระหว่าง model กับ agent ครับ

197
00:15:21,658 --> 00:15:26,957
model คือสิ่งที่ตอบกลับมาด้วยข้อความ ส่วน

198
00:15:26,957 --> 00:15:28,056
agent

199
00:15:28,056 --> 00:15:34,002
คือสิ่งที่ตอบกลับมาด้วยการให้บริการเหมือน Siri

200
00:15:34,002 --> 00:15:38,396
ที่คุณขอให้ Siri ตั้งงานให้ได้ครับ

201
00:15:38,396 --> 00:15:43,825
นั่นคือความต่างพื้นฐานครับ ตอนนี้มา define

202
00:15:43,825 --> 00:15:49,642
agent ของเรากันครับ agent ทุกตัวจะมี property

203
00:15:49,642 --> 00:15:54,036
หลักดังนี้ คือ description, model,

204
00:15:54,036 --> 00:16:03,989
instruction และ tools ครับ root agent (agent หลัก) ทุกตัวควรมี name หรือชื่อ,

205
00:16:03,989 --> 00:16:09,676
description หรือคำอธิบาย, model ที่ใช้ข้างใน

206
00:16:09,676 --> 00:16:14,329
พร้อมกับ retry config เพื่อให้ agent

207
00:16:14,329 --> 00:16:20,017
ลองใหม่ได้เมื่อเกิดความล้มเหลวครับ ส่วน name

208
00:16:20,017 --> 00:16:25,704
นั้นมีประโยชน์กับระบบครับ model ที่เราใช้คือ

209
00:16:25,704 --> 00:16:31,262
Gemini โดยเวอร์ชันคือ Gemini 2.5 Flash ครับ

210
00:16:31,262 --> 00:16:35,527
เรายังใส่ retry option เข้าไปด้วย

211
00:16:35,527 --> 00:16:41,085
เพื่อที่ว่าถ้ามีความล่าช้าหรือเจอปัญหา rate

212
00:16:41,085 --> 00:16:46,773
limit agent ก็จะลองใหม่ให้เองครับ เรา define

213
00:16:46,773 --> 00:16:52,331
ชื่อเรียบร้อยแล้ว ต่อมาที่ description ครับ

214
00:16:52,331 --> 00:16:58,276
description มีไว้เพื่อให้พวกเราเข้าใจว่า agent

215
00:16:58,276 --> 00:17:03,705
ตัวนี้เป็น agent เกี่ยวกับอะไร ในที่นี้คือ

216
00:17:03,705 --> 00:17:09,392
agent อย่างง่ายที่ตอบคำถามทั่วไปได้ครับ ส่วน

217
00:17:09,392 --> 00:17:13,529
instruction เป็นสิ่งที่ให้ agent

218
00:17:13,529 --> 00:17:16,631
เข้าใจว่าตัวเองควรทำอะไร

219
00:17:16,631 --> 00:17:23,352
ข้อความในส่วนนี้ระบุว่าคุณเป็นผู้ช่วยที่เป็นประโยชน์

220
00:17:23,352 --> 00:17:28,135
ให้ใช้ Google Search หาข้อมูลปัจจุบัน

221
00:17:28,135 --> 00:17:33,951
ดังนั้นเราจึงกำหนด tool เป็น search ครับ ด้วย

222
00:17:33,951 --> 00:17:39,251
instruction นี้ คำถามใด ๆ ที่ถูกถามเข้ามา

223
00:17:39,251 --> 00:17:44,550
agent จะไปที่ search tool ค้นหาข้อมูลนั้น

224
00:17:44,550 --> 00:17:49,720
แล้วตอบกลับพร้อมข้อมูลที่หาได้ครับ เมื่อ

225
00:17:49,720 --> 00:17:54,115
define agent เสร็จ ลองรัน cell นี้

226
00:17:54,115 --> 00:17:59,156
ระบบจะแจ้งว่า agent ถูก define แล้วครับ

227
00:17:59,156 --> 00:18:04,972
ต่อไปเราจะรัน agent ตัวนี้ครับ ในการรัน agent

228
00:18:04,972 --> 00:18:10,789
เราต้องมีสิ่งที่เรียกว่า runner ครับ ซึ่งเป็น

229
00:18:10,789 --> 00:18:16,476
orchestrator (ตัวประสานงานหลัก) หรือ central

230
00:18:16,476 --> 00:18:21,776
component ภายใน ADK ครับ มันจัดการบทสนทนา

231
00:18:21,776 --> 00:18:27,204
ข้อความต่าง ๆ ทั้งหมด และดูแลการตอบกลับของ

232
00:18:27,204 --> 00:18:32,633
agent ครับ เราจะสร้าง runner แบบ in-memory

233
00:18:32,633 --> 00:18:37,803
ขึ้นมา แล้วบอกให้มันใช้ agent ของเราครับ

234
00:18:37,803 --> 00:18:40,389
เมื่อรันเสร็จ runner

235
00:18:40,389 --> 00:18:44,137
ก็ถูกสร้างขึ้นมาเรียบร้อยครับ

236
00:18:44,137 --> 00:18:49,695
ตอนนี้เราจะเรียกใช้ agent ของเราครับ เราส่ง

237
00:18:49,695 --> 00:18:55,253
prompt เข้าไปโดยใช้ snippet นี้ครับ คุณเห็น

238
00:18:55,253 --> 00:18:59,389
response ซึ่งเท่ากับผลจากการ run

239
00:18:59,389 --> 00:19:02,491
และในเครื่องหมายคำพูดคู่

240
00:19:02,491 --> 00:19:05,464
เราใส่คำถามได้หลายคำถาม

241
00:19:05,464 --> 00:19:10,634
จะถามอะไรก็ได้ตามต้องการครับ โดย default

242
00:19:10,634 --> 00:19:16,192
แล้วคำถามคือ ADK ของ Google คืออะไร และ SDK

243
00:19:16,192 --> 00:19:18,778
นั้นเป็นภาษาอะไรครับ

244
00:19:18,778 --> 00:19:23,043
คลิกรันแล้วดูว่ามันตอบอย่างไรครับ

245
00:19:23,043 --> 00:19:28,084
ระบบแจ้งว่าเป็น session ใหม่ แสดง debug

246
00:19:28,084 --> 00:19:32,996
session ID คำถามของผู้ใช้คือข้อความนี้

247
00:19:32,996 --> 00:19:38,941
และผู้ช่วยที่เป็นประโยชน์ก็ตอบกลับมาแบบนี้ครับ

248
00:19:38,941 --> 00:19:44,112
มันตอบว่า ADK เป็นเครื่องมือ open source

249
00:19:44,112 --> 00:19:49,799
ที่ออกแบบมาเพื่อทำให้การสร้าง deployment และ

250
00:19:49,799 --> 00:19:55,098
orchestration ของเอเจนต์ AI และระบบต่าง ๆ

251
00:19:55,098 --> 00:19:59,622
ง่ายขึ้น พร้อมข้อมูลในลักษณะนี้ครับ

252
00:19:59,622 --> 00:20:05,180
แล้วสำหรับคำถามที่สอง มันก็ตอบเกี่ยวกับ ADK

253
00:20:05,180 --> 00:20:06,990
ได้อย่างดีครับ

254
00:20:06,990 --> 00:20:14,616
ทีนี้มันแนะนำด้วยว่าทำไมคุณไม่ลองถามคำถามของตัวเองดูล่ะครับ

255
00:20:14,616 --> 00:20:18,106
เช่น ถามว่าอากาศเป็นอย่างไร

256
00:20:18,106 --> 00:20:23,664
โดยเปลี่ยนคำถามเป็น what's the weather ครับ

257
00:20:23,664 --> 00:20:29,351
ระบบแจ้งว่า continue session คือเป็นการต่อใน

258
00:20:29,351 --> 00:20:33,358
session เดิมที่เพิ่งเริ่มไปครับ

259
00:20:33,358 --> 00:20:36,460
คำถามคืออากาศเป็นอย่างไร

260
00:20:36,460 --> 00:20:41,889
และคำตอบคือสภาพอากาศปัจจุบันเป็นแบบนี้ครับ

261
00:20:41,889 --> 00:20:44,991
นับเป็นคำตอบที่ดีมากครับ

262
00:20:44,991 --> 00:20:51,066
มันบอกว่าที่เหลือของวันพฤหัสบดีคาดว่าจะมีเมฆมาก

263
00:20:51,066 --> 00:20:54,944
วันศุกร์คาดว่าจะมีฝนลงเล็กน้อย

264
00:20:54,944 --> 00:20:58,951
และพยากรณ์ว่าวันเสาร์จะมีฝนครับ

265
00:20:58,951 --> 00:21:03,992
เราจึงเห็นภาพการทำงานของมันได้ดีมากครับ

266
00:21:03,992 --> 00:21:09,808
ผมมีคำถามจากทางผมเองอีกสองสามข้อ ลองรันดูครับ

267
00:21:09,808 --> 00:21:13,557
เชิญชวนให้คุณลองเล่นกับ agent

268
00:21:13,557 --> 00:21:18,210
ของคุณเองโดยตั้งคำถามที่แตกต่างกันไป

269
00:21:18,210 --> 00:21:22,475
แล้วดูว่าคุณจะเรียนรู้อะไรได้บ้าง

270
00:21:22,475 --> 00:21:29,067
หรือคุณจะตรวจสอบว่าคำตอบถูกต้องหรือไม่ก็ย่อมได้ครับ

271
00:21:29,067 --> 00:21:33,850
ต่อมาถึงขั้นตอนสุดท้ายของแบบฝึกหัดนี้

272
00:21:33,850 --> 00:21:37,728
คือการสร้าง web interface ครับ

273
00:21:37,728 --> 00:21:43,544
หน้าตาจะประมาณนี้ครับ ขั้นแรกเราต้อง generate

274
00:21:43,544 --> 00:21:48,714
sample agent (agent ตัวอย่าง) ของเราก่อน

275
00:21:48,714 --> 00:21:54,272
โดยรันโค้ดนี้ครับ มันจะสร้างโฟลเดอร์ sample

276
00:21:54,272 --> 00:22:00,218
agent ซึ่งบรรจุไฟล์ทั้งหมด รวมถึงไฟล์ agent.py

277
00:22:00,218 --> 00:22:04,096
กับ environment และอื่น ๆ ครับ

278
00:22:04,096 --> 00:22:09,783
ตอนนี้กำลังรันอยู่ และนี่คือช่วงที่คุณจะเห็น

279
00:22:09,783 --> 00:22:13,790
agent ถูกสร้างและแสดงขึ้นมาครับ

280
00:22:13,790 --> 00:22:19,736
ต่อมารันคำสั่งถัดไปครับ จะเห็นสถานะว่ากำลังรัน

281
00:22:19,736 --> 00:22:25,681
เมื่อรันเสร็จ ระบบจะแจ้งว่าพร้อมใช้งานแล้วครับ

282
00:22:25,681 --> 00:22:28,525
เมื่อทุกอย่างเรียบร้อย

283
00:22:28,525 --> 00:22:32,661
มันจะพาเราไปที่หน้าเว็บหน้าหนึ่ง

284
00:22:32,661 --> 00:22:37,056
ซึ่งเปิดมาแล้วเราสามารถเลือก agent

285
00:22:37,056 --> 00:22:41,838
และทดลองถามคำถามผ่านหน้านี้ได้เลยครับ

286
00:22:41,838 --> 00:22:48,043
ผมลองถามคำถามดูแล้วก็ตอบกลับมาเป็นที่น่าพอใจครับ

287
00:22:48,043 --> 00:22:52,437
ผมคิดว่าผมพอใจกับ agent ตัวนี้แล้ว

288
00:22:52,437 --> 00:22:56,832
และหวังว่าคุณก็จะพอใจเช่นกันนะครับ

289
00:22:56,832 --> 00:22:59,934
ขอให้ทุกคนลองทำตามดูครับ

290
00:22:59,934 --> 00:23:05,880
วิดีโอนี้จะจบลงเพียงเท่านี้ ขอบคุณที่รับชมครับ