
หลังจากที่ใช้งาน AI Agent for Coding จากที่ต่าง ๆ กันมาเยอะแล้ว
เช่น Claude Code, GitHub Copilot, Codex, Cursor
ดังนั้นว่าง ๆ แนะนำให้ลองกลับมาที่ความรู้พื้นฐาน
ว่า AI Agent นั้นพื้นฐานมันมีอะไรบ้าง ?
โดยเรียนตาม outline จาก course ของ Vercel :: Build Your Own AI Coding Agent Harness
ทำการบันทึกใน Part แรกเอาไว้ก่อน
เพราะว่ามีถึง 11 modules ซึ่งเยอะมาก ๆ ค่อย ๆ เรียนรู้กันไปตามเวลาว่าง
จะมีการอธิบาย และให้โจทย์เพื่อแก้ไขปัญหากันไปเรื่อย ๆ
มาเริ่มต้นกันดีกว่า
เริ่มจาก Module ที่ 1 คือเรื่องของ Agent Loop
โดยเริ่มจากการสร้างระบบแบบง่ายคือ chat-based นั่นเอง
จากการถามตอบเพียงครั้งเดียวแล้วจบ
มาเป็นการจดจำการพูดคุยไว้ จาก short-term memory มาเป็น long-term memory
แน่นอนว่าไม่มี tool ใด ๆ ให้ใช้งาน
จากนั้นก็ค่อย ๆ เพิ่ม tool เข้าไปเพื่อความสามารถเข้ามา
ทั้งการอ่านไฟล์ และ grep หรือ ค้นหาข้อมูลในไฟล์
และการทำงานผ่านทาง bash shell หรือ command line นั่นเอง
และได้เพิ่มเรื่องของการกำหนดให้ run command ที่ปลอดภัยเท่านั้น
รวมทั้ง Human-in-the-loop เพื่อให้คนทำการ approve ก่อนทำงาน
ใน code ตัวอย่างจะใช้งาน Vercel AI SDK เป็นหลัก
พัฒนาด้วยภาษา TypeScript แบบง่าย ๆ
ตั้งแต่ Chat ปกติมาจนถึงเป็น Agent กันเลย
รวมทั้งต้องทำการสมัครสมาชิกเพื่อสร้าง API Key ในส่วนของ Vercel AI Gateway มาใช้
ยกตัวอย่างเช่น
จากนั้นเริ่มให้ทำงานมากกว่า 1 รอบ หรือ turn ในแต่ละ session
และมีการจัดเก็บ memory ของการพูดคุย
ตรงนี้มันคือเรื่องของ Agent loop นั่นเอง
ประกอบไปด้วย ส่วนการทำงานหลักดังนี้
- Agent states เก็บสถานะของ Agent
- Think หรือ reasoning step เพื่อให้ Agent ตัดสินใจว่า จะทำอะไรต่อไป
- Tools หรือ Actions ว่าจะทำอะไรได้บ้าง ไปต่อหรือพอแค่นี้ (done!)
- Execute step หรือ Act ลงมือทำ
- Observation step ให้ Agent จดจำการทำงานต่าง ๆ ที่ผ่านมา (history)
ตัวอย่าง code การทำงานคร่าว ๆ ของ Agent
จาก module ที่ 1 มี code ตัวอย่างของ Agent โดยไม่มี tool ให้ใช้งาน
โดย AI SDK จะมี ToolLoopAgent ให้ใช้งานแบบง่าย ๆ
ทำการกำหนด instruction หรือ system prompt ของ Agent
พร้อมจำนวน max loop ของการทำงาน
จากนั้นทำการเพิ่ม tools ให้ Agent
ตรงนี้เราจะเรียกว่า Tool หรือ function calling นั่นเอง
ตัวอย่าง code ของการเพิ่ม Tools ชื่อว่า read สำหรับการอ่านไฟล์
ทำการสร้าง tool หรือ function ในการอ่านไฟล์
ทำการกำหนดชื่อ และ description รวมทั้งกำหนด input schema หรือโครงสร้างของข้อมูล
ซึ่งมีตำแนะนำให้ใส่ description สั้น ๆ เพื่อดูผลการทำงานก่อน
จากนั้นทำการเปลี่ยนแปลงและดูผล เพื่อปรับปรุงการทำงาน (WHENT TO USE, WHEN NOT TO USE)
เพื่ออ่านไฟล์ไม่เกิน 500 บรรทัด
จากนั้นก็เข้าสู่แบบฝึกหัดให้ทำเพิ่มเติมคือ
เพื่อเพิ่ม tool ต่าง ๆ เข้าไปทั้ง grep และ bash
โดยไม่ให้อ่านจาก node_modules/ และ .git/
ลองทำกันดูครับ
เป็นจุดเริ่มต้นการเรียนรู้แบบพื้นฐานที่ดีมาก ๆ
หรือลองเปลี่ยน library และภาษา program ได้อีก เช่น langchain เป็นต้น