Google ปล่อย ADK Go 2.0 — ยกเครื่องเป็น 'กราฟ workflow': เขียน multi-agent เป็นโหนดต่อเส้น มี human-in-the-loop และ retry ในตัว
เมื่อวันที่ 30 มิถุนายน 2026 Google ปล่อย ADK Go 2.0 — เวอร์ชันใหญ่ของ Agent Development Kit สำหรับภาษา Go ที่ยกเครื่องแกนกลางจาก executor แบบลำดับชั้น (hierarchical) มาเป็น เครื่องยนต์ workflow แบบกราฟ (graph-based Workflow Runtime) แนวคิดหลักคือให้นักพัฒนา “อธิบายรูปทรงของแอป” เป็น กราฟของโหนด (nodes) ที่เชื่อมกันด้วยเส้น (edges) แทนที่จะเขียน control flow แบบเฉพาะกิจกระจัดกระจายไปทั่วโค้ด
สำหรับทีมที่สร้างระบบ multi-agent บน Go ในโปรดักชัน นี่คือการเปลี่ยนโมเดลการเขียนโปรแกรมครั้งใหญ่ — จาก “เรียกเอเจนต์ต่อ ๆ กันด้วยมือ” ไปสู่การประกาศ workflow เป็นโครงสร้างข้อมูลที่ runtime จัดการ resilience, การหยุดพัก และ telemetry ให้เอง
กราฟของโหนด: โหนดคือหน่วยงาน เส้นคือเงื่อนไข
ในโมเดลใหม่ ทุกอย่างเป็น “โหนด” ได้:
- โหนด แทนหน่วยงานหนึ่ง ๆ — ฟังก์ชันธรรมดา, เอเจนต์ LLM, ทูล หรือแม้แต่ sub-workflow ทั้งอัน
- เส้น (edges) พก “เงื่อนไขการ routing” ทำให้รองรับได้ทั้งลำดับต่อเนื่อง (sequential chain), การแตกกิ่งตามเงื่อนไข (conditional branch), การกระจายงานแล้วรวมกลับ (fan-out / fan-in) และ ลูป
- การประกอบเป็นสิ่งที่เป็น first-class — workflow หนึ่งฝังเป็นโหนดในกราฟที่ใหญ่กว่าได้ ทำให้ประกอบระบบซับซ้อนขึ้นเป็นชั้น ๆ
โค้ดตัวอย่างจากประกาศแสดงความเรียบง่ายของ API:
upper := workflow.NewFunctionNode("upper", upperFn, cfg)
suffix := workflow.NewFunctionNode("suffix", suffixFn, cfg)
edges := workflow.Chain(workflow.Start, upper, suffix)
กราฟที่ได้จะรันเป็น agent.Agent ตัวหนึ่งเลย — ไม่ต้องมี harness พิเศษมาครอบ
Human-in-the-loop และ orchestration แบบไดนามิก
สองฟีเจอร์ที่ตอบโจทย์งานโปรดักชันจริงคือ:
Human-in-the-loop (HITL) — โหนดใด ๆ สามารถ “หยุดพัก” เพื่อขออินพุตจากคนได้ พร้อม schema validation รองรับสองโหมดการกลับมาทำต่อ คือ handoff (ส่งคำตอบไปยังโหนดถัดไป) และ re-entry (โหนดที่หยุดไว้ทำงานต่อด้วยคำตอบที่ได้) ที่สำคัญคือมัน ทนต่อการรีสตาร์ต process ได้ เพราะสร้างสถานะกลับคืนจาก session-state — เหมาะกับ workflow ที่รอมนุษย์อนุมัติเป็นชั่วโมงหรือเป็นวัน
Dynamic orchestration — ลำดับการรันจริงถูกกำหนดโดยโค้ด Go ผ่านการเรียก RunNode(...) ทำให้ใส่ตรรกะเงื่อนไข ลูป และ fan-out ที่ขึ้นกับข้อมูล ได้โดยไม่ต้องนิยามโครงสร้างล่วงหน้าทั้งหมด
Resilience และ runtime เดียวสำหรับทุกอย่าง
ADK Go 2.0 ฝัง ความทนทาน (resilience) ไว้ในตัวโดยไม่ต้องพึ่ง dependency ภายนอก:
- นโยบาย retry ต่อโหนด แบบ exponential backoff + jitter
- timeout ต่อโหนด และเพดาน concurrency ระดับทั้งกราฟ
และรวมโมเดลการรันให้เป็นหนึ่งเดียว — เอเจนต์เดี่ยวกับกราฟทั้งก้อนรันบน runtime เดียวกัน ให้ telemetry สม่ำเสมอทุกรูปแบบการทำงาน และใช้ context type เดียว (agent.Context) สำหรับทูล, callback และโหนด ซึ่งเป็นหนึ่งใน breaking change หลักจาก 1.x ที่ต้อง migrate: เดิมมี InvocationContext, ToolContext, CallbackContext แยกกัน เวอร์ชันนี้ยุบเหลือ agent.Context ตัวเดียว และ session.NewEvent ต้องรับ context.Context เป็นอาร์กิวเมนต์แรกแล้ว
มุมมอง AI Curator
การมาของ ADK Go 2.0 ตอกย้ำเทรนด์ที่เห็นชัดขึ้นเรื่อย ๆ ในปี 2026: framework เอเจนต์กำลังบรรจบกันที่โมเดล “กราฟ” LangGraph จุดกระแสด้วยแนวคิด state graph, CrewAI เพิ่งเปิด declarative flows, และตอนนี้ ADK ก็ย้ายมาเป็น graph runtime เต็มตัว — เพราะ workflow แบบกราฟจับ pattern ที่เอเจนต์จริงต้องใช้ (ลูป, แตกกิ่ง, รอคน, retry) ได้ตรงกว่าการไล่เรียกฟังก์ชันต่อ ๆ กัน
จุดที่ ADK Go 2.0 ต่างและน่าสนใจคือมันเลือก Go เป็นภาษาหลัก ไม่ใช่ Python สวนทางกับกระแสหลักของวงการ AI ที่ Python ครองอยู่ นี่คือการเดิมพันกับทีม backend/แพลตฟอร์มที่ต้องการรันเอเจนต์เป็นบริการที่ทนทาน คอนเคอร์เรนต์สูง และ deploy เป็น binary เดียว — ซึ่งเป็นจุดแข็งดั้งเดิมของ Go พอดี ประกอบกับที่ ADK รองรับโปรโตคอล A2A อยู่แล้ว (เราเคยเล่าเรื่องเอเจนต์ Python คุยกับ validator ภาษา Go ข้าม A2A) ภาพที่ Google วาดจึงชัด: Python สำหรับงาน ML/prototyping, Go สำหรับ agent service ที่ต้องอยู่ในโปรดักชันจริง แล้วให้สองฝั่งคุยกันผ่าน A2A
สำหรับนักพัฒนาไทยที่ทีมใช้ Go เป็นหลักอยู่แล้ว (สาย fintech, e-commerce, แพลตฟอร์มที่เน้น throughput) นี่เป็นสัญญาณดีว่าไม่จำเป็นต้องยก stack ไป Python เพื่อสร้างระบบเอเจนต์ระดับโปรดักชัน แต่ข้อควรระวังคือ 2.0 มี breaking change เยอะ — ใครที่ลงทุนกับ 1.x ไว้ต้องวางแผน migration โดยเฉพาะเรื่องการยุบ context type และซิกเนเจอร์ของ event ก่อนอัปเกรด
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog