EsempioscriptadvancedEseguibilerouting-dag
Livello 2: Catene di prompt e routing — DAG deterministici
Più chiamate LLM in una sequenza fissa. È il codice a controllare il flusso, non il modello.
Fatti chiave
- Livello
- advanced
- Runtime
- Python • Pydantic + Python Dotenv
- Pattern
- Deterministic routing with explicit stage-by-stage visibility
- Interazione
- Sandbox live • Script
- Aggiornato
- 14 marzo 2026
Naviga questo esempio
Libreria
Sfoglia gli esempiRiapri la libreria completa per confrontare pattern vicini e percorsi collegati.Interazione
Esegui ora nel sandboxProva l'interazione direttamente nella superficie guidata di questo esempio.Sorgente
Apri codice completoLeggi l'implementazione reale, i punti evidenziati e i requisiti runtime.MCP
Chiama via MCPUsa la stessa risorsa dentro agenti, export deterministici e setup MCP.
Principi collegati
2-prompt-chains.py
python
"""
Level 2: Prompt Chains & Routing — Deterministic DAGs
Multiple LLM calls in a fixed sequence. Code controls the flow, not the model.
"""
from enum import Enum
from pydantic import BaseModel
from pydantic_ai import Agent
from dotenv import load_dotenv
import nest_asyncio
load_dotenv()
nest_asyncio.apply()
# --- Models ---
class Category(str, Enum):
BILLING = "billing"
TECHNICAL = "technical"
GENERAL = "general"
class TicketClassification(BaseModel):
category: Category
confidence: float
class Resolution(BaseModel):
response: str
escalate: bool
# --- Agents (each is a single focused LLM call) ---
classifier = Agent(
"anthropic:claude-sonnet-4-6",
output_type=TicketClassification,
system_prompt="Classify the customer ticket into a category. Be precise.",
)
billing_handler = Agent(
"anthropic:claude-sonnet-4-6",
output_type=Resolution,
system_prompt=(
"You handle billing issues. Generate a resolution. "
"Set escalate=true if a refund over $100 is needed."
),
)
technical_handler = Agent(
"anthropic:claude-sonnet-4-6",
output_type=Resolution,
system_prompt=(
"You handle technical issues. Generate a resolution. "
"Set escalate=true if the issue requires engineering intervention."
),
)
general_handler = Agent(
"anthropic:claude-sonnet-4-6",
output_type=Resolution,
system_prompt="You handle general inquiries. Be helpful and concise.",
)
# --- DAG: classify → route → handle → validate ---
HANDLERS = {
Category.BILLING: billing_handler,
Category.TECHNICAL: technical_handler,
Category.GENERAL: general_handler,
}
def process_ticket(ticket: str) -> Resolution:
classification = classifier.run_sync(ticket)
print(
f"Classified as: {classification.output.category} ({classification.output.confidence:.0%})"
)
handler = HANDLERS[classification.output.category]
result = handler.run_sync(ticket)
if result.output.escalate:
print("Escalating to human agent")
return result.output
if __name__ == "__main__":
ticket = (
"I was charged twice for my subscription last month. "
"Order ID: #12345. The duplicate charge was $49.99."
)
resolution = process_ticket(ticket)
print(f"\nResponse: {resolution.response}")
Principi correlati
- P1delegationProgettare per la delega piuttosto che per la manipolazione direttaProgettare esperienze attorno all'assegnazione del lavoro, l'espressione dell'intento, l'impostazione dei vincoli e la revisione dei risultati, piuttosto che richiedere agli utenti di eseguire manualmente ogni passaggio.Apri il principio →
- P5delegationSostituire la magia implicita con modelli mentali chiariIl prodotto dovrebbe aiutare gli utenti a comprendere cosa il sistema può fare, cosa sta facendo attualmente, cosa non può fare e quali condizioni governano il suo comportamento.Apri il principio →
- P9orchestrationRappresentare il lavoro delegato come un sistema, non solo come una conversazioneDove il lavoro coinvolge più passaggi, agenti, dipendenze o attività concorrenti, dovrebbe essere rappresentato come un sistema strutturato piuttosto che solo come un flusso di messaggi.Apri il principio →
- P10delegationOttimizzare per la guida, non solo per l'inizioIl sistema dovrebbe supportare gli utenti non solo nell'avvio dei compiti, ma anche nella guida, nel perfezionamento, nella riprioritizzazione e nella correzione del lavoro mentre è in corso.Apri il principio →