หลักสูตรเร่งรัดเกี่ยวกับ ADK - จากผู้เริ่มต้นสู่ผู้เชี่ยวชาญ

1. สิ่งที่คุณจะได้เรียนรู้

ยินดีต้อนรับสู่ ADK Master Class - เส้นทางสู่ระบบ Multi-Agent

คุณกำลังจะก้าวเข้าสู่โลกที่น่าตื่นเต้นของ AI Agent ลืมแชทบ็อตแบบง่ายๆ ที่ตอบคำถามเท่านั้นไปได้เลย เรากำลังเจาะลึกAgent Development Kit (ADK)เพื่อสร้างระบบอัตโนมัติที่ซับซ้อนซึ่งสามารถให้เหตุผล วางแผน และใช้เครื่องมือเพื่อทำงานที่ซับซ้อนให้สำเร็จ

แผนกลยุทธ์ของหลักสูตร

เมื่อจบบทแนะนำนี้ คุณจะทำสิ่งต่อไปนี้ได้

  • สร้าง AI Agent ตัวแรก: สร้าง Agent ที่ทำงานได้อย่างเต็มรูปแบบตั้งแต่ต้นจนจบ ซึ่งสามารถทำความเข้าใจความต้องการของผู้ใช้ ใช้เครื่องมือต่างๆ เช่น Google Search และสร้างคำตอบที่มีรายละเอียดและเป็นประโยชน์
  • เชี่ยวชาญเครื่องมือที่กำหนดเอง: ปลดล็อกศักยภาพที่แท้จริงของเอเจนต์ด้วยการเชื่อมต่อเอเจนต์กับฟังก์ชันและ API ที่กำหนดเองของคุณ คุณจะสอนให้เอเจนต์ดึงข้อมูลแบบเรียลไทม์ เช่น พยากรณ์อากาศสด
  • สร้างระบบ Multi-Agent: เรียนรู้รูปแบบ "Agent-as-a-Tool" ซึ่งเป็นแนวคิดที่ปฏิวัติวงการที่ Agent มอบหมายงานให้ Agent อื่นๆ ที่มีความเชี่ยวชาญเฉพาะทาง ทำให้เกิดทีมผู้เชี่ยวชาญด้าน AI ที่ทำงานร่วมกัน
  • จัดระเบียบเวิร์กโฟลว์ที่ซับซ้อน: ทำได้มากกว่าการมอบหมายงานแบบง่ายๆ และเชี่ยวชาญรูปแบบขั้นสูง เช่น เราเตอร์, เชนแบบลำดับ, ลูป และการดำเนินการแบบขนาน เพื่อสร้างแอปพลิเคชันที่แข็งแกร่ง มีประสิทธิภาพ และอัจฉริยะ ซึ่งสามารถจัดการคำขอได้เกือบทุกคำขอ
  • ให้ Agent มีความจำ: ทำความเข้าใจบทบาทที่สำคัญของหน่วยความจำในการสนทนา ซึ่งช่วยให้ Agent จัดการคำถามติดตามผล เรียนรู้จากความคิดเห็น และจัดการงานแบบหลายขั้นตอนได้อย่างราบรื่น

มาเริ่มกันเลย 🚀

2. การตั้งค่า: รับคีย์ API

การตั้งค่าคีย์ API ของ Google AI Studio

เราต้องใช้คีย์ Gemini API จาก Google AI Studio เพื่อขับเคลื่อน AI Agent วิธีนี้เป็นวิธีที่เร็วที่สุดในการเริ่มต้นใช้งาน

ขั้นตอนที่ 1 — รับคีย์ Gemini API จาก AI Studio (1 นาที)

  1. เปิด https://aistudio.google.com/app/apikey ในแท็บเบราว์เซอร์ใหม่
  2. ลงชื่อเข้าใช้ด้วยบัญชี Google
  3. คลิก "สร้างคีย์ API" (ด้านขวาบน)
  4. กล่องโต้ตอบจะเปิดขึ้นพร้อมเมนูแบบเลื่อนลงของโปรเจ็กต์
    • หากคุณสร้างโปรเจ็กต์ Google ไว้แล้วก่อนหน้านี้ ให้เลือกโปรเจ็กต์นั้น แล้วคลิก "สร้างคีย์ API ในโปรเจ็กต์ที่มีอยู่"
    • หากไม่อยู่ในรายการ: คลิก "สร้างโปรเจ็กต์"

aistudio

  1. คัดลอกคีย์ API ที่ปรากฏ โดยจะขึ้นต้นด้วย AIza... และมีความยาวประมาณ 40 อักขระ

✏️ วางไว้ในที่ที่ปลอดภัย - คุณจะต้องใช้รหัสนี้สำหรับสมุดบันทึก Colab และการตั้งค่าเว็บ ADK (ในภาคผนวก)

ขั้นตอนที่ 2 - เพิ่มคีย์ API ลงใน Colab (1 นาที)

Notebook แต่ละรายการมีเซลล์การตั้งค่าที่โหลดคีย์ API คุณมี2 ตัวเลือกให้เลือก ดังนี้

ตัวเลือกที่ 1: ข้อมูลลับของ Colab (แนะนำ - คีย์จะยังคงซ่อนอยู่)

  1. ใน Colab Notebook ให้คลิกไอคอนกุญแจ 🔑 ในแถบด้านข้างทางซ้าย
  2. คลิก "เพิ่มข้อมูลลับใหม่"
  3. ตั้งค่าชื่อเป็น GOOGLE_API_KEY
  4. วางคีย์ API (จากขั้นตอนที่ 1) ลงในช่องค่า
  5. สลับสวิตช์"สิทธิ์เข้าถึง Notebook" เป็นเปิด

ข้อมูลลับของ Colab

เมื่อเรียกใช้เซลล์การตั้งค่า ระบบจะเลือกคีย์โดยอัตโนมัติ

 API key loaded from Colab Secrets.

ตัวเลือก ข: วางเมื่อได้รับแจ้ง (รวดเร็วและง่ายดาย)

หากข้าม Colab Secrets และเรียกใช้ codelab1 และ codelab2 โดยตรง สมุดบันทึกจะแจ้งให้คุณป้อนฟิลด์รหัสผ่าน

🔑 Enter your Google AI Studio API key: ••••••••

วางคีย์ API แล้วกด Enter โดยคีย์จะไม่ปรากฏบนหน้าจอ

✅ API key entered manually.

หลังจากเซลล์คีย์ API ทำงานแล้ว เซลล์ถัดไปจะกำหนดค่าสภาพแวดล้อม

✅ API key configured (starts with 'AIzaSy...')
✅ Using Google AI Studio (not Vertex AI).

จุดตรวจสอบ: คุณเห็นข้อความ ✅ ทั้ง 2 รายการด้านบนใน Notebook ระบบได้กำหนดค่าคีย์ API แล้ว และคุณพร้อมที่จะสร้างเอเจนต์แล้ว

3. เซสชันที่ 1: Agent ตัวแรกของคุณด้วย Runner

roadmap1

มาเริ่มที่พื้นฐานกันก่อน ในที่นี้ เราจะสร้าง Agent อย่างง่ายตัวแรกคือ day_trip_agent วัตถุประสงค์ของเอเจนต์นี้คือการสร้างแผนการเดินทางแบบเต็มวันตามคำขอของผู้ใช้ รวมถึงการพิจารณางบประมาณ ตัวอย่างนี้จะแนะนำคอมโพเนนต์หลัก 3 อย่างของการโต้ตอบกับเอเจนต์ใน ADK

  • เอเจนต์: มันสมองหลักของปฏิบัติการ โดยกำหนดจากคำสั่ง (บุคลิกภาพและภารกิจ) โมเดล AI ที่ใช้ (เช่น Gemini) และเครื่องมือที่เข้าถึงได้
  • เซสชัน: หน่วยความจำของบทสนทนา โดยจะจัดเก็บประวัติการโต้ตอบ (ข้อความของผู้ใช้และการตอบกลับของเอเจนต์) เพื่อให้การสนทนาต่อเนื่อง
  • Runner: เครื่องมือที่ดำเนินการงาน โดยจะใช้ Agent และเซสชัน ประมวลผลคำค้นหาของผู้ใช้ใหม่ และจัดลำดับขั้นตอนเพื่อสร้างคำตอบ

➡️ ตำแหน่งของฟีเจอร์ใน Notebook

👉 ซึ่งสอดคล้องกับเซลล์ในส่วนตอนที่ 1: เอเจนต์ตัวแรกของคุณ - จินนี่ผู้ช่วยวางแผนการเดินทางแบบไปเช้าเย็นกลับ 🧞🌟

หุ่นยนต์ตัวแทนกำลังอ่าน

  • คำจำกัดความของเอเจนต์: มองหาฟังก์ชัน create_day_trip_agent() นี่คือส่วนที่กำหนด Agent สังเกตสตริงคำสั่งโดยละเอียด ซึ่งเป็นพรอมต์ที่บอก Agent ว่าควรมีลักษณะการทำงานอย่างไร นอกจากนี้ เรายังมอบเครื่องมือแรกให้แก่ AI นั่นคือ Google Search
  • ฟังก์ชันตัวช่วย: ฟังก์ชันตัวช่วย run_agent_query() มีคำจำกัดความอยู่ที่นี่ เราจะใช้ยูทิลิตี้นี้ตลอดทั้ง Notebook เพื่อลดความซับซ้อนในการเรียกใช้การค้นหา
  • การทดสอบ: ฟังก์ชัน run_day_trip_genie() จะจำลองผู้ใช้ที่ขอทริปแบบไปเช้าเย็นกลับที่ "ราคาไม่แพง" และ "ผ่อนคลาย" Agent จะใช้คำสั่งและเครื่องมือ Google Search เพื่อค้นหาสถานที่ที่เหมาะสมและสร้างแผนการเดินทางในรูปแบบมาร์กดาวน์

➡️ การดำเนินการ: ตรวจสอบพรอมต์คำสั่งสำหรับ day_trip_agent ดูว่าคำขอทริป "ราคาไม่แพง" ในคำค้นหาทดสอบเกี่ยวข้องกับหลักเกณฑ์ของเอเจนต์ที่ระบุว่า "คำนึงถึงงบประมาณ" โดยตรงอย่างไร

4. เซสชันที่ 2: เครื่องมือที่กำหนดเอง 🛠️

roadmap2

แม้ว่า Google Search จะมีประสิทธิภาพ แต่ศักยภาพที่แท้จริงของเอเจนต์ AI จะปลดล็อกได้เมื่อคุณเชื่อมต่อเอเจนต์กับแหล่งข้อมูล, API หรือตรรกะที่กำหนดเองของคุณเอง ในส่วนนี้ เราจะสร้างเครื่องมือที่กำหนดเองจากฟังก์ชัน Python แบบง่าย

ส่วนที่สำคัญที่สุดของเครื่องมือฟังก์ชันคือ Docstring ADK จะแยกวิเคราะห์สตริงเอกสารโดยอัตโนมัติเพื่อทำความเข้าใจว่าเครื่องมือทำอะไร รับพารามิเตอร์ใด (Args) และส่งคืนอะไร (Returns) โมเดลภาษาขนาดใหญ่ (LLM) จะอ่านคำอธิบายนี้เพื่อตัดสินใจว่าจะใช้เครื่องมือเมื่อใดและอย่างไร

➡️ ตำแหน่งของฟีเจอร์ใน Notebook

👉 ซึ่งสอดคล้องกับเซลล์ในส่วน2.1 เครื่องมือฟังก์ชันแบบง่าย: การเรียกใช้ Weather API แบบเรียลไทม์ 🌟

เครื่องมือ adk

  • คำจำกัดความของเครื่องมือ: ฟังก์ชัน get_live_weather_forecast(location: str) เป็นหัวใจหลักของเครื่องมือที่กำหนดเองของเรา โดยจะรับชื่อเมือง เรียกใช้ API สาธารณะของกรมอุตุนิยมวิทยา และแสดงผลพจนานุกรมที่มีอุณหภูมิและการพยากรณ์
  • คำจำกัดความของเอเจนต์: ระบบจะสร้าง weather_agent และติดตั้งเครื่องมือใหม่ของเราโดยส่ง tools=[get_live_weather_forecast] ระหว่างการเริ่มต้น คำสั่งของเอเจนต์จะบอกให้ใช้เครื่องมือนี้อย่างชัดเจนก่อนที่จะแนะนำกิจกรรมกลางแจ้ง
  • การทดสอบ: คำค้นหา "ฉันอยากไปเดินป่าแถวทะเลสาบทาโฮ อากาศเป็นยังไง" จะทริกเกอร์ให้เอเจนต์ใช้เครื่องมือ get_live_weather_forecast โดยตรงเนื่องจากคำสั่งของเครื่องมือกำหนดให้ใช้

➡️ การดำเนินการ: อ่านสตริงเอกสารสำหรับฟังก์ชัน get_live_weather_forecast และคำสั่งสำหรับ weather_agent โปรดสังเกตความสัมพันธ์โดยตรงระหว่างทั้ง 2 อย่าง

5. เซสชันที่ 3: เอเจนต์ในฐานะเครื่องมือ 🧑🍳

roadmap3

ทำไมต้องสร้างเอเจนต์แบบโมโนลิธตัวเดียวในเมื่อคุณสร้างทีมผู้เชี่ยวชาญได้ Agent-as-a-Tool รูปแบบนี้เป็นวิธีที่มีประสิทธิภาพในการสร้างระบบที่ซับซ้อนซึ่งเอเจนต์หลัก (มักเรียกว่า Orchestrator หรือ Router) จะมอบหมายงานให้กับเอเจนต์อื่นๆ ที่มีความเฉพาะเจาะจงมากกว่า

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

➡️ ตำแหน่งของฟีเจอร์ใน Notebook

👉 ซึ่งสอดคล้องกับเซลล์ในส่วน 2.2 Agent ในฐานะเครื่องมือ: การปรึกษาผู้เชี่ยวชาญ 🧑🍳🌟

ข้อมูลการเดินทาง

ตัวอย่างนี้สร้างระบบ Agent ที่ซับซ้อนหลายชั้น

  • ผู้เชี่ยวชาญ:
    • food_critic_agent: เอเจนต์ที่มีความเชี่ยวชาญสูงซึ่งให้คำแนะนำเกี่ยวกับร้านอาหารเท่านั้น
    • db_agent: เอเจนต์จำลองที่แสร้งว่าค้นหาข้อมูลโรงแรมในฐานข้อมูล
    • concierge_agent: ตัวแทนระดับกลางที่ทำหน้าที่เป็นเจ้าหน้าที่อำนวยความสะดวกที่สุภาพ ที่สำคัญคือมี food_critic_agent เป็นเครื่องมือของตัวเอง
  • Orchestrator (trip_data_concierge_agent): นี่คือเอเจนต์ระดับบนสุดที่ผู้ใช้โต้ตอบด้วย คำสั่งของโมเดลทำให้โมเดลกลายเป็น "ผู้วางแผนการเดินทางหลัก" และได้รับเครื่องมือ 2 อย่างที่เรียกเอเจนต์อื่นๆ ได้ ดังนี้
    • call_db_agent: ฟังก์ชันที่เรียกใช้ db_agent
    • call_concierge_agent: ฟังก์ชันที่เรียกใช้ concierge_agent
  • โฟลว์: การทดสอบที่ทำงานใน run_trip_data_concierge() แสดงให้เห็นถึงห่วงโซ่การมอบสิทธิ์ทั้งหมด
    • ผู้ใช้ขอโรงแรมและร้านอาหารใกล้เคียงจากตัวจัดสรร
    • คำสั่งของ Orchestrator บอกให้ใช้เครื่องมือ call_db_agent เพื่อรับข้อมูลโรงแรมก่อน
    • จากนั้น Orchestrator จะใช้call_concierge_agentเครื่องมือเพื่อรับคำแนะนำ
    • เมื่อได้รับคำขอ concierge_agent จะใช้เครื่องมือของตัวเอง ซึ่งก็คือ food_critic_agent เพื่อหาไอเดียร้านอาหาร

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

➡️ การดำเนินการ: ติดตามโฟลว์การดำเนินการในการทดสอบภายใต้ run_trip_data_concierge() สังเกตว่าTOOL CALLEDเอกสารที่พิมพ์ออกมาแสดงห่วงโซ่การมอบสิทธิ์จากผู้ประสานงานลงไปจนถึงผู้เชี่ยวชาญอย่างไร นี่คือลำดับชั้นการบังคับบัญชา

6. เซสชันที่ 4: หน่วยความจำของเอเจนต์ 🧠

roadmap4

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

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

➡️ ตำแหน่งของฟีเจอร์ใน Notebook

👉 ซึ่งสอดคล้องกับเซลล์ในส่วนที่ 3: เอเจนต์ที่มีหน่วยความจำ - เครื่องมือวางแผนแบบปรับเปลี่ยนได้ 🗺️ 🌟

ความทรงจำของ Agent

  • คำจำกัดความของ Agent: create_multi_day_trip_agent() ฟังก์ชันนี้กำหนด Agent ที่ออกแบบมาเพื่อวางแผนการเดินทางแบบค่อยเป็นค่อยไป คำแนะนำของโมเดลนี้เน้นการจดจำบริบท การจัดการความคิดเห็น และการวางแผนทีละวัน

สถานการณ์ 3a: เอเจนต์ที่มีหน่วยความจำ (✅)

การทดสอบนี้จะทำงานในฟังก์ชัน run_adaptive_memory_demonstration()

  • ระบบจะสร้าง trip_session เพียงครั้งเดียวและนำกลับมาใช้ใหม่ใน 3 เทิร์นติดต่อกัน
  • เทิร์นที่ 1: ผู้ใช้เริ่มวางแผนการเดินทาง 2 วัน
  • เทิร์นที่ 2: ผู้ใช้แสดงความคิดเห็น ("ฉันไม่ได้ชอบปราสาทมากนัก") เนื่องจากเอเจนต์มีหน่วยความจำของเทิร์นที่ 1 จึงเข้าใจว่าควรเปลี่ยนแผนส่วนใดและเสนอทางเลือกอื่น
  • เทิร์นที่ 3: ผู้ใช้ยืนยันการเปลี่ยนแปลงและขอขั้นตอนถัดไป เอเจนต์จะจดจำทุกอย่างและวางแผนวันที่ 2 ต่อ

สถานการณ์ 3b: เอเจนต์ที่ไม่มีหน่วยความจำ (❌)

การทดสอบนี้จะทำงานในฟังก์ชัน run_memory_failure_demonstration()

ซึ่งแสดงให้เห็นถึงความสำคัญของการจัดการเซสชันด้วยการจงใจทำผิดพลาด ระบบจะสร้างเซสชันใหม่สำหรับแต่ละรอบ

  • เทิร์นที่ 1: ผู้ใช้เริ่มการเดินทางใน session_one ตัวแทนตอบกลับอย่างถูกต้อง
  • เทิร์นที่ 2: ผู้ใช้ขอวางแผนวันที่ 2 แต่ระบบจะส่งคำค้นหาใน session_two ใหม่ เนื่องจากเซสชันใหม่นี้ไม่มีประวัติ ตัวแทนจึงสับสน มันเป็นโรคความจำเสื่อม และไม่ทราบว่ากำลังวางแผนการเดินทางใด

การดำเนินการ: เปรียบเทียบคำตอบของตัวแทนใน run_adaptive_memory_demonstration() และ run_memory_failure_demonstration() แนวคิดที่สำคัญที่สุดใน Notebook นี้คือการสนทนาต่อเนื่อง 1 รายการต้องใช้เซสชันต่อเนื่อง 1 รายการ

7. เซสชันที่ 5: ตัวแทนเราเตอร์ 🚏

roadmap5

ตัวแทนคนเดียวอาจทำได้เพียงบางอย่างเท่านั้น เราต้องมีทีมตัวแทนผู้เชี่ยวชาญเพื่อจัดการคำขอของผู้ใช้ที่ซับซ้อนอย่างแท้จริง แต่เราจะทราบได้อย่างไรว่าควรใช้เอเจนต์ใดสำหรับการค้นหาที่กำหนด ซึ่ง Router Agent จะเข้ามาช่วยในเรื่องนี้

Router Agent จะทำหน้าที่เป็นเอเจนต์ "หลัก" หรือผู้จัดส่ง โดยมีวัตถุประสงค์เพียงอย่างเดียวคือการวิเคราะห์คำค้นหาของผู้ใช้ที่เข้ามาและตัดสินใจว่าเอเจนต์ผู้เชี่ยวชาญ (หรือเวิร์กโฟลว์ของเอเจนต์) รายใดเหมาะสมกับงานมากที่สุด โดยจะไม่ตอบคำค้นหาด้วยตัวเอง แต่จะส่งคำค้นหาไปยังตัวแทนปลายทางที่ถูกต้อง

เช่น คำค้นหาเกี่ยวกับ "ซูชิที่ดีที่สุด" ควรไปที่ foodie_agent ส่วนคำถามเกี่ยวกับ "คอนเสิร์ตสุดสัปดาห์นี้" ควรได้รับการจัดการโดย weekend_guide_agent

➡️ วิธีค้นหาใน Notebook

👉 แนวคิดนี้เป็นหัวใจสำคัญของ Notebook ทั้งหมด แต่จะมีการแนะนำเป็นครั้งแรกในส่วนที่ 1: ความวุ่นวายของหลายเอเจนต์ - เวิร์กโฟลว์แบบลำดับ 🧠→🤖→🤖 🌟

Router Agent

  • คำจำกัดความของ Agent: เซลล์โค้ดจะกำหนด Agent ผู้เชี่ยวชาญหลายราย (day_trip_agent, foodie_agent, transportation_agent) และที่สำคัญที่สุดคือ router_agent โปรดใส่ใจกับพรอมต์คำสั่งสำหรับ router_agent อย่างใกล้ชิด เนื่องจากมีการระบุอย่างชัดเจนว่าให้แสดงเฉพาะชื่อของเอเจนต์ที่ดีที่สุดสำหรับงานนั้นๆ
  • ตรรกะการดำเนินการ: ฟังก์ชัน run_sequential_app แสดงวิธีเรียกใช้ router_agent ก่อนเพื่อรับการตัดสินใจ (chosen_route) แล้วใช้การตัดสินใจนั้นในบล็อก if/elif เพื่อเรียกใช้เอเจนต์ผู้เชี่ยวชาญที่เหมาะสม

8. เซสชันที่ 6: SequentialAgent ⛓️

roadmap6

งานบางอย่างต้องทำหลายขั้นตอนตามลำดับที่เฉพาะเจาะจง เช่น "หาร้านซูชิที่ดีที่สุดในพาโลอัลโตให้หน่อย แล้วบอกวิธีไปที่นั่นด้วย" โดยมีกระบวนการ 2 ขั้นตอน ได้แก่ ขั้นตอนแรก ค้นหาร้านอาหาร และขั้นตอนที่สอง ขอเส้นทาง

ADK มีวิธีที่สะอาดและมีประสิทธิภาพในการจัดการเรื่องนี้ด้วย SequentialAgent นี่คือ Agent เวิร์กโฟลว์พิเศษที่เรียกใช้รายการ Agent ย่อยตามลำดับที่กำหนดไว้ล่วงหน้า

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

➡️ วิธีค้นหาใน Notebook

👉 เราจะพูดถึงเรื่องนี้ในส่วนที่ 2 (วิถี ADK): ความวุ่นวายของหลายเอเจนต์ด้วย SequentialAgent 🧠→⛓️→🤖 🌟

Sequential Agent

  • การปรับโครงสร้าง Agent: ในเซลล์โค้ดแรกของส่วนนี้ ให้สังเกตการเปลี่ยนแปลงที่สำคัญใน foodie_agent และ transportation_agent ดังนี้
    • ตอนนี้ foodie_agent มี output_key="destination" แล้ว ซึ่งจะบอกให้ ADK บันทึกคำตอบสุดท้ายลงในตัวแปรชื่อ destination ในสถานะที่แชร์
    • ตอนนี้ transportation_agent มีตัวยึดตำแหน่ง {destination} ในพรอมต์คำสั่งแล้ว ADK จะแทรกค่าจากสถานะที่แชร์ลงในตัวยึดตำแหน่งนี้โดยอัตโนมัติ
  • การกำหนดเวิร์กโฟลว์: find_and_navigate_agent ได้รับการกำหนดเป็น SequentialAgent โดยตั้งค่า sub_agents เป็น [foodie_agent, transportation_agent] เพื่อให้มั่นใจว่าเอเจนต์จะทำงานตามลำดับที่กำหนด
  • การดำเนินการที่ง่ายขึ้น: ดูฟังก์ชัน run_sequential_app ในส่วนนี้ เราได้นำตรรกะที่ซับซ้อนของ if/elif ออกแล้ว ตอนนี้ระบบจะถือว่า find_and_navigate_agent เป็นหน่วยเดียวที่เรียกใช้ได้ และ ADK จะจัดการขั้นตอนตามลำดับภายในโดยอัตโนมัติ

9. เซสชันที่ 7: LoopAgent 🔁

roadmap7

ปัญหาบางอย่างไม่ได้มีวิธีแก้ที่ตรงไปตรงมาและทำได้ในครั้งเดียว บางครั้งเราต้องเสนอวิธีแก้ปัญหา วิพากษ์วิจารณ์ และปรับปรุงวิธีแก้ปัญหาจนกว่าจะตรงตามข้อจำกัดที่เฉพาะเจาะจง

โดย ADK มี LoopAgent สำหรับการดำเนินการนี้ Agent เวิร์กโฟลว์นี้จะเรียกใช้ลำดับของ Agent ย่อยซ้ำๆ จนกว่าจะเป็นไปตามเงื่อนไขที่เฉพาะเจาะจง ซึ่งเหมาะอย่างยิ่งสำหรับการสร้างเอเจนต์ที่ "สมบูรณ์แบบ" ซึ่งสามารถวางแผน วิจารณ์ และปรับปรุงงานของตนเองได้

แผนภาพแสดงPlanner Agentการสร้างแผนก่อน จากนั้นเราก็เข้าสู่ LoopAgent Critic Agent ตรวจสอบแผน หากไม่สมบูรณ์ Refiner Agent จะสร้างเวอร์ชันใหม่และวนซ้ำ หากแผนดี Refiner Agent จะเรียกใช้เครื่องมือ exit_loop และส่งคืนแผนสุดท้ายที่ผ่านการตรวจสอบแล้ว

Agent แบบวน

➡️ วิธีค้นหาใน Notebook

👉 อธิบายไว้ในการสร้างไอเดียซ้ำๆ ด้วย LoopAgent 🧠→🔁→🤖 🌟

  • Agent หลัก: เวิร์กโฟลว์ใช้ planner_agent, critic_agent และ refiner_agent
  • คำจำกัดความของลูป: refinement_loop จะกำหนดเป็น LoopAgent ที่จัดระเบียบ critic_agent, refiner_agent และ sets max_iterations=3
  • เงื่อนไขการออก: ลูปจะสิ้นสุดเมื่อ critic_agent อนุมัติแผน ซึ่งจะทำให้ refiner_agent เรียกใช้เครื่องมือ exit_loop ที่กำหนดเอง

10. เซสชันที่ 8: ParallelAgent ⚡️

roadmap8

ประสิทธิภาพเป็นสิ่งสำคัญ หากผู้ใช้ขอข้อมูลหลายรายการที่ไม่เกี่ยวข้องพร้อมกัน การค้นหาข้อมูลเหล่านี้ทีละรายการจะช้า

ParallelAgent คือวิธีแก้ปัญหา เอเจนต์เวิร์กโฟลว์นี้จะเรียกใช้รายการเอเจนต์ย่อยพร้อมกัน เมื่อดำเนินการแบบขนานทั้งหมดเสร็จแล้ว ระบบจะรวบรวมผลลัพธ์และสังเคราะห์เป็นคำตอบที่ครอบคลุมเพียงคำตอบเดียว

แผนภาพนี้แสดงParallelAgentการใช้การค้นหาเดียวและแยกงานออกเป็น 3 เส้นทางที่ทำงานพร้อมกัน museum_finder, concert_finder และ restaurant_finder จะทำงานพร้อมกัน เมื่อทั้ง 3 อย่างเสร็จสิ้นแล้ว ระบบจะรวมผลลัพธ์แต่ละรายการ (บันทึกไว้ในสถานะที่แชร์) และส่งไปยังตัวแทนการสังเคราะห์ขั้นสุดท้าย ซึ่งจะรวมผลลัพธ์เหล่านั้นเป็นคำตอบเดียว

➡️ วิธีค้นหาใน Notebook

👉 เวิร์กโฟลว์นี้มีรายละเอียดอยู่ในส่วนParallel Power with ParallelAgent 🧠→⚡️→🤖🤖🤖 🌟

Parallel Agent

  • ตัวแทนผู้เชี่ยวชาญ: มีตัวแทนผู้เชี่ยวชาญ 3 คน โดยแต่ละคนจะมี output_key ที่ไม่ซ้ำกัน (เช่น museum_result)
  • เวิร์กโฟลว์แบบขนาน: ระบบจะกำหนดให้ parallel_research_agent เป็น ParallelAgent โดยมี Finder Agent ทั้ง 3 รายการเป็น sub_agents
  • ขั้นตอนการสังเคราะห์: หลังจากขั้นตอนแบบคู่ขนานแล้ว synthesis_agent ขั้นสุดท้ายจะรวบรวมข้อมูลทั้งหมดจากสถานะที่แชร์โดยใช้ตัวยึดตำแหน่ง ({museum_result}, {concert_result} ฯลฯ) เพื่อจัดรูปแบบสรุปที่กระชับ

11. ภาคผนวก: ADK Web - 🍎 สำหรับ Mac/Linux

roadmap9

คู่มือนี้จะแนะนำการตั้งค่าและการเรียกใช้ Agent วางแผนการเดินทางแบบไปเช้าเย็นกลับของ ADK ในเครื่องของคุณ

ข้อกำหนดเบื้องต้น

  • Python 3.8 ขึ้นไป
    • Python 3.9 ขึ้นไป: ติดตั้ง google-adk==1.5.0 (เวอร์ชันล่าสุดที่มีฟีเจอร์ครบถ้วน)
    • Python 3.8: ติดตั้ง google-adk==0.3.0 (เวอร์ชันที่เข้ากันได้)
  • คีย์ API ของ Google AI Studio (จากขั้นตอนการตั้งค่าด้านบน)
  • การเชื่อมต่ออินเทอร์เน็ต

ขั้นตอนที่ 1: โคลนที่เก็บ

เปิด Terminal แล้วเรียกใช้คำสั่งต่อไปนี้

git clone https://github.com/cuppibla/ADK_Basic.git
cd ADK_Basic

ขั้นตอนที่ 2: ตั้งค่าสภาพแวดล้อมเสมือนและติดตั้งการอ้างอิง

ตัวเลือก A: การตั้งค่าอัตโนมัติ (แนะนำ)

# Run the setup script
chmod +x setup_venv.sh
./setup_venv.sh

ตัวเลือก ข: การตั้งค่าด้วยตนเอง

# Create virtual environment
python3 -m venv .adk_env

# Activate virtual environment
source .adk_env/bin/activate

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

ขั้นตอนที่ 3: 🔥 สำคัญ - สร้างตัวแปรสภาพแวดล้อม

⚠️ อย่าข้ามขั้นตอนนี้ สร้างไฟล์ .env ในไดเรกทอรี agent/ โดยทำดังนี้

# Create the .env file
touch agent/.env

# Open it in your default text editor
open agent/.env

เพิ่มบรรทัดต่อไปนี้ลงในไฟล์

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=your_actual_api_key_here

🚨 สำคัญ: แทนที่ your_actual_api_key_here ด้วยคีย์ API จริงจากขั้นตอนการตั้งค่า: รับคีย์ API

ขั้นตอนที่ 4: เปิดใช้งานสภาพแวดล้อมเสมือน (หากยังไม่ได้เปิดใช้งาน)

source .adk_env/bin/activate

คุณควรเห็น (.adk_env) ที่จุดเริ่มต้นของพรอมต์เทอร์มินัล

ขั้นตอนที่ 5: เรียกใช้เว็บอินเทอร์เฟซของ ADK

adk web

ขั้นตอนที่ 6: เปิดเบราว์เซอร์

  1. เปิดเบราว์เซอร์ แล้วไปที่ URL ที่แสดงในเทอร์มินัล (โดยปกติคือ http://localhost:8000)
  2. เลือก agent ในเมนูแบบเลื่อนลงด้านซ้ายบน
  3. เริ่มแชทกับตัวแทนวางแผนทริปแบบไปเช้าเย็นกลับได้เลย

คุณจะเห็นการสนทนาในลักษณะต่อไปนี้ ตัวอย่าง ADK Web UI

การปิดใช้งานสภาพแวดล้อม

เมื่อทำงานกับโปรเจ็กต์เสร็จแล้ว ให้ทำดังนี้

deactivate

คำสั่งนี้ทำงานเหมือนกันทั้งใน Mac/Linux และ Windows คุณจะเห็นว่าคำนำหน้า (.adk_env) หายไปจากพรอมต์เทอร์มินัล

การแก้ปัญหาเกี่ยวกับ Mac

  • ไม่พบ Python: ใช้ python3 แทน python
  • สิทธิ์ถูกปฏิเสธ: เรียกใช้ chmod +x setup_venv.sh ก่อนเรียกใช้สคริปต์

12. ภาคผนวก: ADK Web - 🪟 สำหรับผู้ใช้ Windows

roadmap9

คู่มือนี้จะแนะนำการตั้งค่าและการเรียกใช้ Agent วางแผนการเดินทางแบบไปเช้าเย็นกลับของ ADK ในเครื่องของคุณ

ข้อกำหนดเบื้องต้น

  • Python 3.8 ขึ้นไป
    • Python 3.9 ขึ้นไป: ติดตั้ง google-adk==1.5.0 (เวอร์ชันล่าสุดที่มีฟีเจอร์ครบถ้วน)
    • Python 3.8: ติดตั้ง google-adk==0.3.0 (เวอร์ชันที่เข้ากันได้)
  • คีย์ API ของ Google AI Studio (จากขั้นตอนการตั้งค่าด้านบน)
  • การเชื่อมต่ออินเทอร์เน็ต

ขั้นตอนที่ 1: โคลนที่เก็บ

เปิด Command Prompt หรือ PowerShell แล้วเรียกใช้คำสั่งต่อไปนี้

git clone https://github.com/cuppibla/ADK_Basic.git
cd ADK_Basic

ขั้นตอนที่ 2: ตั้งค่าสภาพแวดล้อมเสมือนและติดตั้งการอ้างอิง

ตัวเลือก A: การตั้งค่าอัตโนมัติ (แนะนำ)

# Run the setup script in Command Prompt
setup_venv.bat

ตัวเลือก ข: การตั้งค่าด้วยตนเอง

สำหรับ Command Prompt

# Create virtual environment
python -m venv .adk_env

# Activate virtual environment
.adk_env\Scripts\activate

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

สำหรับ PowerShell:

# Create virtual environment
python -m venv .adk_env

# Activate virtual environment
.adk_env\Scripts\Activate.ps1

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

ขั้นตอนที่ 3: 🔥 สำคัญ - สร้างตัวแปรสภาพแวดล้อม

⚠️ อย่าข้ามขั้นตอนนี้ สร้างไฟล์ .env ในไดเรกทอรี agent/ โดยทำดังนี้

# Create the .env file
type nul > agent\.env

# Open it in Notepad
notepad agent\.env

เพิ่มบรรทัดต่อไปนี้ลงในไฟล์

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=your_actual_api_key_here

🚨 สำคัญ: แทนที่ your_actual_api_key_here ด้วยคีย์ API จริงจากขั้นตอนการตั้งค่า: รับคีย์ API

ขั้นตอนที่ 4: เปิดใช้งานสภาพแวดล้อมเสมือน (หากยังไม่ได้เปิดใช้งาน)

Command Prompt:

.adk_env\Scripts\activate

PowerShell:

.adk_env\Scripts\Activate.ps1

คุณควรเห็น (.adk_env) ที่จุดเริ่มต้นของพรอมต์

ขั้นตอนที่ 5: เรียกใช้เว็บอินเทอร์เฟซของ ADK

adk web

ขั้นตอนที่ 6: เปิดเบราว์เซอร์

  1. เปิดเบราว์เซอร์ แล้วไปที่ URL ที่แสดงในเทอร์มินัล (โดยปกติคือ http://localhost:8000)
  2. เลือก agent ในเมนูแบบเลื่อนลงด้านซ้ายบน
  3. เริ่มแชทกับตัวแทนวางแผนทริปแบบไปเช้าเย็นกลับได้เลย

การแก้ปัญหาใน Windows

  • ข้อผิดพลาดเกี่ยวกับนโยบายการดำเนินการ PowerShell: เรียกใช้ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

คุณจะเห็นการสนทนาในลักษณะต่อไปนี้ ตัวอย่าง ADK Web UI

การปิดใช้งานสภาพแวดล้อม

เมื่อทำงานกับโปรเจ็กต์เสร็จแล้ว ให้ทำดังนี้

deactivate

คำสั่งนี้ทำงานเหมือนกันทั้งใน Mac/Linux และ Windows คุณจะเห็นว่าคำนำหน้า (.adk_env) หายไปจากพรอมต์เทอร์มินัล