Composizione Agenti
Costruisci sistemi multi-agente dove gli agenti usano altri agenti come tool.
Questo tutorial esplora come comporre più agenti in sistemi potenti. Goa-AI supporta agent-as-tool, permettendo a un agente di chiamare un altro agente come tool, abilitando specializzazione e delega.
Capire la Composizione Agenti
In molti sistemi, un singolo agente tuttofare non è ideale. Invece, puoi avere agenti specializzati ognuno eccellente in un dominio specifico:
- Agente Coordinatore: comprende richieste e delega
- Agente Esperto Dati: gestisce database e analytics
- Agente Diagnostica: troubleshooting di sistemi
Pattern di Design
package design
import (
. "goa.design/goa-ai/dsl"
. "goa.design/goa/v3/dsl"
)
var _ = Service("assistant", func() {
// Agente coordinatore primario
Agent("coordinator", "Coordina richieste utente", func() {
// Usa un altro agente come tool
UseAgent("data_expert")
UseToolset("general")
})
// Agente esperto dati specializzato
Agent("data_expert", "Specializzato in retrieval e analisi dati", func() {
UseToolset("data_tools")
})
})
Come Funziona
Quando dichiari UseAgent:
- Il runtime crea un child run per l’agente specializzato
- Il child run ha il suo ciclo plan/execute completo
- I risultati tornano al padre collegati tramite
run.Handle - Gli stream di eventi mantengono relazioni padre-figlio per tracciabilità
Benefici Chiave
- Separazione delle responsabilità: Ogni agente si concentra su un singolo dominio
- Planner indipendenti: Gli agenti specializzati operano con il loro contesto
- Tracciabilità: L’albero run completo abilita debug e osservabilità
- Riusabilità: Gli agenti specializzati possono essere usati da più coordinatori