← nitronium.dev

Agent routing kararını LLM'e bırak: SelectorGroupChat pattern

2026-06-12
Hardcoded if domain === "hukuk" → hukukAgent yerine routing kararını LLM'e ver. AutoGen'in SelectorGroupChat'inden gelen fikir.

`typescript
const AGENT_POOL = [
{ name: "hukuk", description: "Türk hukuku, mevzuat, mahkeme kararları" },
{ name: "marka", description: "TÜRKPATENT araştırması, benzerlik analizi" },
{ name: "teknik", description: "Yazılım mimarisi, kod analizi" },
];

async function selectAgent(task: string, context: string): Promise<string> {
const res = await client.messages.create({
model: "claude-haiku-4-5-20251001",
max_tokens: 10,
messages: [{
role: "user",
content: `Görev: "${task}"\nÖnceki bağlam: ${context || "yok"}\n\nAjan havuzu:\n${
AGENT_POOL.map(a => - ${a.name}: ${a.description}).join("\n")
}\n\nSadece ajan adını yaz.`,
}],
});
return res.content[0].type === "text" ? res.content[0].text.trim() : "teknik";
}
`

Yeni bir uzman eklemek için AGENT_POOL'a bir satır eklemen yeterli. Routing kodu hiç değişmiyor.

Hardcoded routing'den farkı: bu yaklaşım konuşma geçmişini dikkate alıyor. Önceki tur "hukuk" verdiyse ve kullanıcı şimdi "bunu koda dökelim" diyorsa model "teknik" seçebiliyor.

Routing maliyeti: max_tokens=10 ile Haiku çağrısı, pratikte ihmal edilebilir.

Çoklu tur için history dizisini büyüterek her turda farklı agent seçilebilir, ya da agent "TASK_COMPLETE" döndürdüğünde döngü kesilebilir.