Un agente che sceglie da solo il prossimo passo può essere utile. Ma se i passi sono già noti, quella libertà aggiunge variabilità, costo e superficie di errore. La prima decisione tecnica è scegliere quanta autonomia concedere.

Richiesta, classificazione, scelta tra workflow e agente, validazione finale
Il punto centrale è il gate di classificazione. La validazione finale resta necessaria in entrambi i percorsi.

Una matrice prima del framework

La scelta si può rendere esplicita in una matrice. Non è un classificatore universale: serve a costringere il team a dichiarare le condizioni in cui un pattern è ammesso.

CondizionePercorsoControllo decisivo
Passi stabili, rischio bassoWorkflowTest per ogni stato e uscita
Passi variabili, rischio bassoAgente limitatoStrumenti consentiti, budget, timeout
Scrittura o impatto altoRevisione umanaAutorizzazione prima dell'effetto

Il codice sotto riceve un Task già classificato da logica applicativa affidabile. Non chiede al modello di autovalutare il proprio rischio.

01 / Selezione del percorsoPython 3 · libreria standard
from dataclasses import dataclass
from enum import Enum

class Path(Enum):
    WORKFLOW = "workflow"
    BOUNDED_AGENT = "bounded_agent"
    HUMAN_REVIEW = "human_review"

@dataclass(frozen=True)
class Task:
    steps_known: bool
    writes_external_state: bool
    risk: str  # assigned by trusted application logic

def choose_path(task: Task) -> Path:
    if task.risk not in {"low", "high"}:
        raise ValueError("unknown risk level")
    if task.writes_external_state or task.risk == "high":
        return Path.HUMAN_REVIEW
    if task.steps_known:
        return Path.WORKFLOW
    return Path.BOUNDED_AGENT

assert choose_path(Task(True, False, "low")) is Path.WORKFLOW
assert choose_path(Task(False, False, "low")) is Path.BOUNDED_AGENT
assert choose_path(Task(False, True, "high")) is Path.HUMAN_REVIEW

Esempio eseguibile: la funzione sceglie il percorso, non implementa un agente. La classificazione del rischio, l'autorizzazione e l'esecuzione restano responsabilità separate.

Cosa significa “agente limitato”

Se il percorso è variabile, l'agente non dovrebbe ricevere accesso indiscriminato ai tool. Definirei almeno una allowlist di strumenti, uno schema validato per gli argomenti, limiti di iterazioni e costo, timeout e una condizione di uscita. Per un'azione con effetti esterni aggiungerei un gate applicativo e, dove necessario, approvazione umana.

SceltaIl routing è una decisione osservabile, non un prompt implicito.
LimiteL’agente opera entro strumenti e budget espliciti.
ProvaLog di percorso, motivazione e risultato per ogni caso.

Il test che farei per primo

Preparerei casi con lo stesso obiettivo ma caratteristiche diverse: passaggi noti, informazione mancante, richiesta di scrittura, rischio alto. Il test non deve soltanto controllare la risposta: deve verificare che ciascun caso venga indirizzato al percorso previsto e che un input sconosciuto fallisca in modo esplicito.

Nel libro sviluppo queste scelte insieme ai pattern di orchestrazione: dal Prompt Chaining al Routing, fino a Planner-Executor ed Evaluator-Optimizer. Il valore del pattern emerge quando sappiamo dire anche quando non usarlo.

Se questi temi ti interessano, li approfondisco in Architetture Agentiche, con pattern, casi guida, scelte di progetto, metriche e modalità di guasto.

Scopri il libro su Amazon ↗