EsempioscriptintermediateEseguibileguided-flow
Dipendenze
Esempio rieseguibile intermediate di tipo script che usa pydantic.
Fatti chiave
- Livello
- intermediate
- Runtime
- Python • Pydantic
- Pattern
- Flusso ispezionabile con confini di sistema visibili
- 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-dependencies.py
python
from datetime import date
import json
from typing import Literal
import nest_asyncio
from pydantic import BaseModel
from pydantic_ai import Agent, RunContext
nest_asyncio.apply()
# --------------------------------------------------------------
# Without dependencies - limited context
# --------------------------------------------------------------
agent = Agent(
"openai:gpt-4o-mini",
instructions="You are a helpful customer service agent.",
)
result = agent.run_sync(user_prompt="What's my account status?")
print(result.output)
# --------------------------------------------------------------
# With dependencies - inject runtime data
# --------------------------------------------------------------
class Customer(BaseModel):
name: str
account_id: str
status: Literal["Active", "Inactive"]
agent = Agent(
"openai:gpt-4o-mini",
deps_type=Customer,
instructions="You are a helpful customer service agent.",
)
@agent.instructions
def add_customer_context(ctx: RunContext[Customer]) -> str:
customer = ctx.deps
return f"Customer: {customer.name} (ID: {customer.account_id}, Status: {customer.status})"
@agent.instructions
def add_current_date() -> str:
return f"Today's date: {date.today()}"
customer = Customer(
name="Alice",
account_id="C001",
status="Active",
)
result = agent.run_sync(user_prompt="What's my account status?", deps=customer)
print(result.output)
# --------------------------------------------------------------
# Different customer, same agent
# --------------------------------------------------------------
another_customer = Customer(
name="Bob",
account_id="C002",
status="Inactive",
)
result = agent.run_sync(user_prompt="What's my account status?", deps=another_customer)
print(result.output)
# --------------------------------------------------------------
# Let's explore the result
# --------------------------------------------------------------
messages = json.loads(result.all_messages_json())
print(json.dumps(messages, indent=2))
# --------------------------------------------------------------
# Why you want type-safe dependencies
# --------------------------------------------------------------
wacky_agent = Agent(
"openai:gpt-4o-mini",
instructions="You are a helpful customer service agent.",
)
@wacky_agent.instructions
def add_customer_context(customer: str) -> str:
return f"Customer: {customer}"
yet_another_customer = "Bob"
result = wacky_agent.run_sync(user_prompt="What's my account status?")
print(result.output) # Results in generic chatbot error that will go unnoticed
Principi correlati
- P4trustApplicare la divulgazione progressiva all'agenzia del sistemaFornire per impostazione predefinita le informazioni minime necessarie, consentendo agli utenti di ispezionare ulteriori dettagli quando è richiesta fiducia, comprensione o intervento.Apri il principio →
- P7trustStabilire fiducia attraverso l'ispezionabilitàGli utenti dovrebbero essere in grado di esaminare come è stato prodotto un risultato quando la fiducia, la responsabilità o la qualità della decisione sono importanti.Apri il principio →
- P8trustRendere espliciti i passaggi, le approvazioni e i blocchiQuando il sistema non può procedere, la ragione dovrebbe essere immediatamente visibile, insieme a qualsiasi azione richiesta dall'utente o da un'altra dipendenza.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 →