ระบบที่รวม **ความฉลาดของโมเดล AI** เข้ากับการ **เข้าถึงเครื่องมือ (Tools)** เพื่อดำเนินการแทนเรา .
ADK คือ open-source framework ที่ยืดหยุ่นและเป็นแบบโมดูลสำหรับการพัฒนาและปรับใช้ AI agents .
`LlmAgent` เปรียบเสมือน "ส่วนที่ใช้คิด" ของแอปพลิเคชัน :
Identity เป็นส่วนสำคัญในการสร้างความร่วมมือระหว่างเอเจนต์ :
ตัวระบุสตริงที่ไม่ซ้ำกัน ใช้สำหรับการเรียกใช้ภายในและการส่งต่องาน .
สรุปความสามารถที่เอเจนต์ *อื่น* จะใช้ตัดสินใจว่าควรส่งงานมาให้เอเจนต์ตัวนี้หรือไม่ .
ระบุ LLM ที่จะขับเคลื่อนการให้เหตุผล เช่น `"gemini-2.5-flash"` .
`instruction` คือพารามิเตอร์ที่สำคัญที่สุดในการกำหนดพฤติกรรมของ `LlmAgent` :
*Tip: ใช้ Markdown เพื่อเพิ่มความชัดเจน และใส่ตัวอย่าง (Few-shot) เพื่อผลลัพธ์ที่แม่นยำ .*
เครื่องมือช่วยให้เอเจนต์โต้ตอบกับโลกภายนอกได้ :
ในงาน Data Science เรามักต้องการข้อมูลที่มีโครงสร้าง (Structured Data) :
* ADK มักใช้ Pydantic (Python) หรือ Zod (JS) ในการนิยาม Schema .*
ADK ใช้รูปแบบ **ReAct (Reason + Action)** ในการทำงานแบบวนรอบ :
เอเจนต์วิเคราะห์เป้าหมายและวางแผนขั้นต่อไป .
เรียกใช้เครื่องมือ (Tool Call) ตามที่วางแผนไว้ .
รับผลลัพธ์จากเครื่องมือและนำเข้าสู่บริบทเพื่อคิดต่อ .
ใช้ความสามารถ "ความคิด" (Thinking) ภายในของ Gemini (เช่นในโมเดล 2.0 Flash) เพื่อแก้ปัญหายากๆ .
บังคับให้เอเจนต์เขียน Plan, Action, และ Reasoning อย่างชัดเจน เหมาะกับโมเดลที่ไม่มีระบบคิดในตัว .
"การวางแผนที่ดีช่วยลดข้อผิดพลาดและอาการหลอน (Hallucination) ของ AI" .
รันเอเจนต์ย่อยตามลำดับที่แน่นอน โดยส่งผลลัพธ์ของตัวแรกเป็นอินพุตให้ตัวถัดไป .
รันงานที่อิสระจากกันพร้อมกันเพื่อประสิทธิภาพสูงสุด เช่น การดึงข้อมูลจากหลายแหล่ง .
รันงานวนซ้ำจนกว่าจะบรรลุเงื่อนไข เช่น การปรับจูนโค้ดจนกว่าจะผ่านการทดสอบ .
ใช้เมื่อต้องการควบคุม Logic แบบ Hard-coded ที่ LLM ทำไม่ได้ :
ใช้คำสั่ง `adk web` เพื่อเปิดหน้าจอ Playground ในเครื่อง :
adk web --port 8000
*ใช้สำหรับพัฒนาและทดสอบเท่านั้น ไม่ควรใช้จริงใน Production .*
ใช้จัดการบริบทปัจจุบันของการสนทนา .
บันทึกข้อมูลสำคัญข้ามเซสชันผ่าน Vertex AI Memory Bank .
ADK ช่วยให้เรา "Resume" หรือ "Replay" เซสชันที่บันทึกไว้เป็น JSON ได้ .
เชื่อมต่อเอเจนต์กับเอกสารภายในบริษัทเพื่อให้ตอบคำถามตามข้อเท็จจริง .
เข้าถึงข้อมูลล่าสุด, มีการอ้างอิงแหล่งที่มา (Citations), และลดอาการหลอน .
"Grounding คือหัวใจของความน่าเชื่อถือในเอเจนต์ระดับองค์กร" .
ADK มีระบบประเมินผลในตัวเพื่อตรวจสอบประสิทธิภาพ :
ในการทำแล็บวันนี้ ให้นักศึกษาใช้ AI (ChatGPT/Copilot) เป็น "ผู้ช่วยพัฒนา" :
"เตรียมตัวพบกับภาคปฏิบัติในสไลด์ถัดไป!"
ภารกิจ: พัฒนา Agent ที่สามารถสืบค้นข้อมูลจาก UCI ML Repository และประมวลผลผ่านคำสั่ง (Commands) :
ติดตั้งชุดเครื่องมือสำหรับพัฒนาเอเจนต์และไลบรารีเชื่อมต่อข้อมูล :
*Personalized Learning: หากพบปัญหา Installation Error ให้ส่ง Log ให้ AI ช่วยวิเคราะห์วิธีแก้ .*
ทดสอบฟังก์ชันการดึงข้อมูลเพื่อนำไปสร้างเป็น Tool ให้เอเจนต์ :
from ucimlrepo import fetch_ucirepo
# ดึงข้อมูลเบาหวาน (Diabetes ID=225)
diabetes = fetch_ucirepo(id=225)
# ตรวจสอบ Metadata ที่จะส่งให้ Agent
print(diabetes.metadata.additional_info.summary)
print(diabetes.variables[['name', 'role', 'type']])
*Metadata เหล่านี้จะทำหน้าที่เป็น Context ให้ Agent เข้าใจบริบทของชุดข้อมูล .*
ADK บังคับให้ต้องใช้ **Type Hints** และ **Docstring** เพื่อให้ LLM รู้วิธีเรียกใช้เครื่องมือ :
def get_uci_metadata(dataset_id: int) -> dict:
"""สืบค้นข้อมูล Metadata ของชุดข้อมูลจาก UCI Repo โดยใช้ ID"""
from ucimlrepo import fetch_ucirepo
data = fetch_ucirepo(id=dataset_id)
return {
"name": data.metadata.name,
"instances": data.metadata.num_instances,
"summary": data.metadata.additional_info.summary
}
LLM จะใช้คำอธิบายใน Docstring เพื่อตัดสินใจเรียกใช้ Tool เมื่อผู้ใช้ถาม .
กำหนดคุณลักษณะ (Identity) และเป้าหมายการทำงาน (Instructions) :
ใช้คำสั่ง **ADK Web** เพื่อเปิด Playground สำหรับทดสอบ logic :
ให้นักศึกษาใช้ AI (ChatGPT/Gemini) ปรับปรุงคุณภาพของ Agent :
Action: นำคำแนะนำของ AI มาอัปเดตค่า `instruction` ในโค้ด และสั่ง Restart `adk web` เพื่อดูผลลัพธ์ที่เปลี่ยนไป .
"ยินดีด้วย! คุณได้สร้าง Data Agent ตัวแรกที่สามารถสืบค้นข้อมูลจริงได้แล้ว"