🧠 Mixture of Agents — มันคืออะไร? ทำไมต้องใช้หลายโมเดล?
ปกติเวลาเราใช้ AI เราจะเลือกโมเดลใดโมเดลนึงมาตอบคำถามเรา เช่น Claude, GPT, DeepSeek, Kimi, MiMo — แต่ละตัวมีจุดเด่นต่างกัน แต่เราใช้ได้แค่ตัวเดียว
Mixture of Agents (MoA) คือฟีเจอร์ในตัวของ Hermes Agent ที่ให้คุณเอาโมเดลหลายตัวมา ช่วยกันคิด ก่อนที่จะตอบคำถามเดียว โดยแบ่งเป็น 2 บทบาท:
- 📋 Reference Models (ที่ปรึกษา) — โมเดล 1-8 ตัว รันพร้อมกัน วิเคราะห์ปัญหาและให้คำแนะนำสั้นๆ (parallel)
- 🎯 Aggregator (คนลงมือทำ) — โมเดล 1 ตัวที่อ่านคำแนะนำจาก Reference ทั้งหมดแล้วตัดสินใจ + เรียก tools + เขียนคำตอบจริง
Reference models ไม่ได้เรียก tools ไม่ได้เขียนโค้ด — แค่อ่าน conversation และให้ความเห็น จากนั้น Aggregator เป็นคนทำงานจริง
ก่อนอื่นต้องเข้าใจ concept ก่อนครับ MoA ไม่ใช่ระบบ voting หรือ averaging — มันคือการให้โมเดลที่ปรึกษาหลายตัว วิเคราะห์ ปัญหาก่อน แล้วให้ Aggregator รวบรวมและตัดสินใจ อีกที เหมือนคุณมี senior dev 2-3 คนช่วย review solution ก่อนคุณลงมือเขียนโค้ด
จุดสำคัญ: Reference models จะ comment ทุก iteration ที่ Aggregator ต้องคิด (ถ้าตั้งค่า default fanout: per_iteration) — นั่นหมายความว่าถ้าต้องเรียก tool 5 รอบ Reference ก็ comment 5 รอบ แต่ถ้าตั้ง fanout: user_turn จะ comment แค่รอบแรกของ user turn นั้น
และ prompt cache ไม่แตก! เพราะ reference outputs ถูก append ต่อท้าย user message ทำให้ cached prefix ยังใช้งานได้ปกติ
ตกลง MoA เลือกโมเดลที่อยากใช้เองได้ใช่มั้ย? แล้วใช้แค่ตัวถูกๆ ได้รึเปล่า? เพราะพี่เค้า budget จำกัด 😅
ได้หมดครับ! MoA ไม่ได้สุ่มเลือกโมเดล — คุณเลือกเองทุกตัว ผ่าน config.yaml หรือ CLI: hermes moa configure
ตัวอย่าง preset แบบประหยัด — ใช้ DeepSeek Flash + MiMo + Kimi เป็นที่ปรึกษา (รวมกัน ~$0.50/M input) แล้วใช้ Flash ตัวเดียวเป็น Aggregator:
moa:
presets:
budget-moa:
reference_models:
- provider: openrouter
model: deepseek/deepseek-v4-flash # $0.09/$0.18
- provider: openrouter
model: xiaomi/mimo-v2.5 # $0.11/$0.28
- provider: openrouter
model: moonshotai/kimi-k2.5 # $0.38/$2.03
aggregator:
provider: openrouter
model: deepseek/deepseek-v4-flash # ตัวเดียวกับที่ใช้อยู่
reference_max_tokens: 600
max_tokens: 4096
enabled: true
แล้วถ้าอยากลอง ฟรี เลยล่ะ? มีตัวที่เสียตังค์ 0 บาทมั้ย? 🤔
มีครับ! OpenRouter มีโมเดลฟรีหลายตัว — แต่ต้องเข้าใจข้อจำกัดก่อน:
| โมเดลฟรี | OpenRouter ID | ข้อควรรู้ |
|---|---|---|
| 🔮 Nemotron 3 Nano | nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free | โมเดลที่พี่ใช้อยู่ตอนนี้ |
| 🔮 Gemma 4 | google/gemma-4-26b-a4b-it:free | Google ล่าสุด |
| 🔮 Qwen3 Next | qwen/qwen3-next-80b-a3b-instruct:free | 80B parameter |
| 🔮 Nemotron 3 Ultra | nvidia/nemotron-3-ultra-550b-a55b:free | 550B ใหญ่สุดฟรี |
| ⚠️ openrouter/free | openrouter/free | route ไป free models อัตโนมัติ แต่ consistency ไม่แน่นอน |
ข้อสำคัญ: Reference models ไม่ได้เรียก tools — แค่อ่าน text และให้ความเห็น ดังนั้นใช้โมเดลฟรีเป็น Reference ได้สบาย ไม่ต้องสนว่ามัน support tool calling หรือเปล่า
โอเค แล้ว /moa ใช้บน Telegram ได้มั้ย? เพราะพี่ใช้ Hermes ผ่าน Telegram เป็นหลัก
ได้ครับ! ✅ — /moa ทำงานบนทุก platform ที่ Hermes รองรับ รวมถึง Telegram, Discord, Desktop, CLI, TUI
วิธีใช้บน Telegram:
/moa ช่วยออกแบบโครงสร้าง database สำหรับระบบร้านค้าหน่อย
Hermes จะ:
- อ่าน default MoA preset จาก config.yaml
- เรียก Reference models (ที่ปรึกษา) พร้อมกัน
- ให้ Aggregator รวบรวมและตอบ
- คืนค่าโมเดลเดิม ให้คุณหลังจากจบ turn นั้น
แต่ถ้าอยากใช้ยาวๆ ทั้ง session — ใช้:
/model budget-moa --provider moa
หรือเลือกจาก model picker ใน Telegram — MoA presets จะขึ้นเป็น "Mixture of Agents" provider
แล้วราคาจริงๆ เวลาใช้ MoA มันประมาณไหน? เสี่ยงมั้ยว่า Reference ดันไปใช้โมเดลแพงโดยไม่รู้ตัว?
ไม่ต้องกังวลครับ — คุณกำหนดเองทุกตัว! MoA ไม่มี magic ไม่มี hidden cost ถ้าคุณไม่ตั้ง Claude Opus ใน config ก็ไม่มีทางที่ MoA จะใช้ Claude Opus โดยไม่บอก
ตัวอย่างเปรียบเทียบค่าใช้จ่ายต่อ 1 turn (input ~2K tokens, output ~500 tokens ต่อ Reference):
| Preset | Reference (3 ตัว) | Aggregator | รวม/รอบ |
|---|---|---|---|
| 🔥 Budget (Flash+MiMo+Kimi) | ~$0.001 | ~$0.0002 (Flash) | ~$0.0012 |
| ❌ Default (Opus+GPT+DeepSeek) | ~$0.005 | ~$0.03 (Opus) | ~$0.035 |
| 🆓 ฟรีล้วน (Nemotron+Gemma+Qwen) | $0 | ~$0.0002 (Flash) | ~$0.0002 |
Budget preset ถูกกว่าค่า Default ~29 เท่า!
แต่พี่บอกว่าถ้าตั้ง fanout เป็น per_iteration (default) Reference จะ comment ทุกรอบ tool iteration — 5 รอบก็ 5 ครั้ง งั้นราคาก็คูณ 5 สิ? 😱
ถูกต้อง! แต่มีสิ่งที่ช่วยลด cost ได้ครับ:
- Prompt caching — Reference models มักได้ cache hit บน prefix ทำให้ราคา input ถูกลงมาก (OpenRouter ลด ~50-90%)
- reference_max_tokens: 600 — จำกัดให้ Reference ตอบสั้นๆ แค่ ~600 tokens
- fanout: user_turn — ตั้งให้ Reference comment แค่ รอบแรกของ user turn รอบถัดไป Aggregator ทำงานคนเดียว
moa:
presets:
budget-efficient:
reference_models:
- provider: openrouter
model: deepseek/deepseek-v4-flash
- provider: openrouter
model: moonshotai/kimi-k2.5
aggregator:
provider: openrouter
model: deepseek/deepseek-v4-flash
reference_max_tokens: 600
fanout: user_turn # ← แค่รอบแรก, ประหยัดกว่า
max_tokens: 4096
enabled: true
ด้วยการตั้งค่านี้ MoA จะเสียค่าใช้จ่ายเพิ่มจากปกติประมาณ +50-100% ต่อ user turn (ไม่ใช่ x5) เพราะ Reference ทำงานแค่รอบแรก
โอเค — สรุปให้หน่อย ใครควรใช้ MoA? และข้อควรระวัง?
✅ ควรใช้เมื่อ:
- งานซับซ้อนที่ต้อง reasoning หลายมุมมอง (architecture, debugging, code review)
- อยาก leverage จุดแข็งของแต่ละโมเดลโดยไม่ต้องเลือกเอง
- ใช้ Reference models ราคาถูก / ฟรี เพื่อเพิ่ม quality โดยไม่เพิ่ม cost มาก
- พร้อมจ่ายเพิ่ม ~50-100% ต่อ user turn เพื่อคุณภาพที่ดีขึ้น
❌ ไม่ควรใช้เมื่อ:
- งานง่ายๆ ถาม-ตอบ — single model ก็พอ
- ต้องการ response เร็วที่สุด — MoA ช้ากว่าเพราะรอ Reference models เสร็จ
⚠️ ข้อควรรู้:
- Reference models ไม่ได้ ได้ system prompt ของ Hermes — พวกมันได้ system prompt พิเศษที่บอกให้ทำตัวเป็น "analyst" (ที่ปรึกษา) ดังนั้นมันจะไม่พยายามเรียก tools หรือทำตัวเป็น agent
- Aggregator เป็นโมเดลที่เรียก tools + เขียนคำตอบจริงเท่านั้น
- Recursive MoA (MoA ซ้อน MoA) ถูก block ที่ระดับ code — ป้องกัน infinite loop
- โมเดลฟรี (Nemotron, Gemma ฯลฯ) ใช้เป็น Reference ได้สบาย แต่ Aggregator ควรเป็นโมเดลที่ support tool calling เช่น DeepSeek Flash
สุดท้าย — ถ้าพี่ใช้ Hermes ผ่าน Telegram และใช้ DeepSeek Flash หลักๆ อยู่ ควรทำยังไงให้ลอง MoA โดยไม่เสียงบ? 🧐
แนะนำตามนี้ครับ:
ขั้นตอนที่ 1: เพิ่ม Config ใน config.yaml:
moa:
presets:
budget-moa:
reference_models:
- provider: openrouter
model: nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free
- provider: openrouter
model: deepseek/deepseek-v4-flash
aggregator:
provider: openrouter
model: deepseek/deepseek-v4-flash
reference_max_tokens: 800
fanout: user_turn
max_tokens: 4096
enabled: true
ขั้นตอนที่ 2: ทดสอบบน Telegram — แค่พิมพ์:
/moa ออกแบบโครงสร้างระบบจัดการ inventory
คิดราคาต่อ turn แบบ worst case:
| Layer | Model | ราคา |
|---|---|---|
| Reference #1 | Nemotron Nano (ฟรี) | $0 |
| Reference #2 | DeepSeek Flash | $0.09/M input → ~$0.00018 |
| Aggregator | DeepSeek Flash | ~$0.0005 (output 2K tokens) |
| รวม | ~$0.0007/turn |
ใช้ 1000 รอบต่อเดือน → $0.70 หรือประมาณ 25 บาท — ถือว่าน่าลองมากครับ!
📚 แหล่งอ้างอิง
- เอกสารทางการ Hermes MoA:
hermes-agent/website/docs/user-guide/features/mixture-of-agents.md - Source code gateway:
gateway/run.py— /moa handling ใน Telegram และ platform อื่นๆ - Source code runtime:
agent/moa_loop.py— parallel reference fan-out + aggregator injection - Config:
hermes_cli/moa_config.py— default presets, normalization - CLI:
hermes_cli/moa_cmd.py—hermes moa configure