Claude Platform Docs
Managed AgentsDelegare il lavoro al tuo agente

Avviare una sessione

Crea una sessione per eseguire il tuo agente e iniziare a svolgere attività.

Una sessione è un'istanza di agente all'interno di un ambiente. Ogni sessione fa riferimento a un agente e a un ambiente (entrambi creati separatamente) e mantiene la cronologia della conversazione attraverso più interazioni. Le sessioni seguono un ciclo di vita in due fasi: prima crea la sessione, poi invia un evento utente per avviare il lavoro. Puoi anche unire entrambe le fasi in un'unica chiamata con initial_events.

Creare una sessione

Una sessione richiede un ID agent e un ID environment. Gli agenti sono risorse con versioni; passare l'ID agent come stringa crea la sessione con l'ultima versione dell'agente.

session = client.beta.sessions.create(
    agent=agent.id,
    environment_id=environment.id,
)

Per vincolare una sessione a una versione specifica dell'agente, passa un oggetto. Questo ti consente di controllare esattamente quale versione viene eseguita e di distribuire gradualmente le nuove versioni in modo indipendente.

pinned_session = client.beta.sessions.create(
    agent={"type": "agent", "id": agent.id, "version": 1},
    environment_id=environment.id,
)

Inizializzare la sessione con eventi iniziali

Puoi creare una sessione e avviarne il lavoro in un'unica chiamata. initial_events è un array opzionale di eventi iniziali da inviare alla sessione al momento della creazione, elaborati in ordine. Supporta gli eventi user.message e user.define_outcome e accetta un massimo di 50 eventi. Un elenco non vuoto avvia il ciclo dell'agente nella stessa chiamata: la sessione viene creata direttamente nello stato running, senza ulteriori richieste.

L'esempio seguente crea una sessione con un singolo user.message in initial_events:

seeded_session = client.beta.sessions.create(
    agent=agent.id,
    environment_id=environment.id,
    initial_events=[
        {
            "type": "user.message",
            "content": [
                {"type": "text", "text": "List the files in the working directory."}
            ],
        },
    ],
)
# gli initial_events non vengono restituiti nella risposta di creazione; rileggili
# dall'elenco eventi della sessione.
for event in client.beta.sessions.events.list(seeded_session.id):
    if event.type == "user.message":
        for block in event.content:
            if block.type == "text":
                print(f"Seeded event: {block.text}")

Nessun altro tipo di evento è accettato. Gli eventi che rispondono a un turno dell'agente (user.tool_confirmation, user.tool_result e user.custom_tool_result) non sono accettati perché non esiste ancora alcun turno dell'agente, e user.interrupt non è accettato perché non c'è alcun turno da interrompere. A differenza di initial_events in un deployment pianificato, gli initial_events di una sessione non accettano system.message.

Ogni evento in initial_events viene convalidato e salvato prima che venga restituita la risposta di creazione, nell'ordine dell'elenco, con un ID assegnato dal server, esattamente come se lo avessi inviato all'endpoint di invio eventi subito dopo la creazione. Anche le regole sul contenuto di ciascun evento sono le stesse di quell'endpoint. Un elenco vuoto equivale a omettere il campo. La convalida è del tipo tutto o niente: se un qualsiasi evento non supera la convalida, l'intera richiesta viene rifiutata e nessuna sessione viene creata.

La richiesta di creazione viene rifiutata nei seguenti casi:

CondizioneStato
Più di un evento user.define_outcome400
Un evento user.define_outcome senza rubric400
Più di 100 blocchi di contenuto document provenienti da file nell'intero elenco400
Un corpo della richiesta superiore a 32 MB413

Un evento user.define_outcome in initial_events viene accettato alle stesse condizioni previste per l'invio a una sessione esistente; consulta Definire i risultati.

Sovrascrivere la configurazione dell'agente per una sessione

Puoi passare agent in tre forme: una stringa con l'ID dell'agente, un oggetto con versione vincolata (type: "agent") oppure un oggetto di override. La forma con override modifica parti della configurazione dell'agente per una singola sessione. Usala per provare un modello diverso o concedere uno strumento aggiuntivo in una sessione senza creare una nuova versione dell'agente. Per la forma con override, imposta type su agent_with_overrides e passa l'id dell'agente e, facoltativamente, una version (ometti version per usare l'ultima versione dell'agente). Quindi includi uno qualsiasi tra model, system, tools, mcp_servers o skills con i valori che la sessione deve usare.

Ogni campo sovrascrivibile segue le stesse tre regole:

  • Ometti il campo: la sessione eredita il valore dalla versione dell'agente a cui fa riferimento.
  • Imposta il campo su null, o su un array vuoto per i campi di tipo elenco: la sessione viene eseguita con quel campo svuotato. Questa regola si applica integralmente a system e skills. Ci sono tre eccezioni:
    • model non può mai essere svuotato. Una sessione ha sempre bisogno di un modello, quindi model: null restituisce un errore 400 agent_model_required.
    • Svuotare tools restituisce un errore 400 quando le skills effettive della sessione non sono vuote, perché le skill richiedono lo strumento read. Altrimenti, tools: null e tools: [] svuotano il campo.
    • Svuotare mcp_servers restituisce un errore 400 quando i tools effettivi della sessione contengono ancora un mcp_toolset che fa riferimento a uno dei server dell'agente. Sovrascrivi tools nella stessa richiesta per rimuovere quelle voci mcp_toolset, quindi svuota mcp_servers.
  • Imposta il campo su un valore: il valore sostituisce integralmente quello dell'agente. Gli override non vengono mai uniti alla configurazione dell'agente, quindi un override di tools deve elencare ogni strumento che la sessione deve avere. Allo stesso modo, un override di model sostituisce integralmente l'oggetto model dell'agente, quindi l'effort proprio dell'agente non viene mantenuto. Per eseguire la sessione a un livello di effort specifico, imposta effort all'interno dell'oggetto model dell'override. Un livello non supportato dal modello restituisce un errore 400, e un override di model senza effort viene eseguito al livello di effort predefinito di quel modello.

Gli override si applicano solo alla sessione che crei. Non modificano la risorsa agente né creano una nuova versione dell'agente, quindi le altre sessioni che fanno riferimento allo stesso agente non sono interessate.

Nella risposta, l'oggetto agent riflette la configurazione con cui la sessione viene eseguita dopo l'applicazione degli override. Il suo id e la sua version identificano comunque l'agente e la versione a cui vengono applicati gli override. Questo ti consente di risalire dalla sessione al suo agente di base.

L'esempio seguente avvia una sessione che sovrascrive il modello e svuota il prompt di sistema:

override_session = client.beta.sessions.create(
    agent={
        "type": "agent_with_overrides",
        "id": agent.id,
        "model": {"id": "claude-sonnet-5-5"},
        "system": None,  # clear the agent's system prompt for this session
    },
    environment_id=environment.id,
)
# L'agente nella risposta è lo snapshot risolto con gli override applicati.
print(f"Model: {override_session.agent.model.id}")
print(f"System: {override_session.agent.system}")

Vincolare l'area geografica di inferenza per una sessione

Poiché un override di model sostituisce integralmente l'oggetto model dell'agente, imposta o rimuove anche il vincolo dell'"inference geo" (area geografica di inferenza) del modello per la sessione: un override che include inference_geo vincola l'area geografica che serve le richieste al modello della sessione, mentre uno che lo omette rimuove il vincolo dell'agente, così la sessione segue il default_inference_geo del workspace. Il valore sovrascritto viene convalidato rispetto agli allowed_inference_geos del workspace al momento della creazione della sessione.

L'esempio seguente avvia una sessione da un agente il cui modello non ha alcun vincolo geografico, vincola le richieste al modello della sessione all'inferenza negli Stati Uniti includendo inference_geo nell'override di model e stampa il valore restituito in agent.model nella risposta:

session = client.beta.sessions.create(
    agent={
        "type": "agent_with_overrides",
        "id": agent.id,
        # Sostituisce interamente il `model` dell'agente: ripeti `id`, aggiungi `inference_geo` per fissare.
        "model": {"id": "claude-opus-5-5", "inference_geo": "us"},
    },
    environment_id=environment.id,
)
print(f"Inference geo: {session.agent.model.inference_geo}")

Impostare un budget per la sessione

Per limitare quanto può spendere una sessione, passa l'oggetto opzionale budget quando la crei. Un budget è un tetto massimo rigido sul costo di listino della sessione: la piattaforma calcola il prezzo di tutto ciò che la sessione consuma alle tariffe di listino pubbliche, e la sessione smette di inviare nuove richieste al modello quando il totale progressivo raggiunge max_list_cost. Imposta type su limit e assegna a max_list_cost un amount e una currency. amount è un numero intero di centesimi di dollaro statunitense scritto come stringa, ad esempio "125" per $1,25. L'API accetta una stringa anziché un numero, così non viene mai applicato alcun arrotondamento in virgola mobile. USD è attualmente l'unica valuta supportata. Quando la sessione raggiunge il limite, si mette in pausa e diventa inattiva con il motivo di arresto budget_reached. Il limite viene applicato tra una richiesta al modello e l'altra, quindi la richiesta che lo supera viene completata prima e il costo di listino finale della sessione può risultare leggermente superiore al limite. Un budget può essere associato solo al momento della creazione: puoi modificarlo o rimuoverlo in seguito, ma non puoi aggiungerne uno a una sessione creata senza.

L'esempio seguente crea una sessione con un budget di $1,25:

session = client.beta.sessions.create(
    agent=agent.id,
    environment_id=environment.id,
    budget={
        "type": "limit",
        "max_list_cost": {"amount": "125", "currency": "USD"},
    },
)
print(session.id, session.budget.max_list_cost.amount)  # sesn_01... 125

Consulta Budget delle sessioni per scoprire come funziona l'applicazione del limite, cosa concorre al costo di listino e come si comportano i budget nelle sessioni multiagente.

Autenticazione MCP tramite vault

Se il tuo agente usa strumenti MCP che richiedono autenticazione, passa vault_ids alla creazione della sessione per fare riferimento a un vault contenente credenziali OAuth memorizzate. Anthropic gestisce il rinnovo dei token per tuo conto. Consulta Autenticarsi con i vault per scoprire come creare vault e registrare credenziali.

vault_session = client.beta.sessions.create(
    agent=agent.id,
    environment_id=environment.id,
    vault_ids=[vault.id],
)

Avviare la sessione

Creare una sessione senza initial_events registra la sessione ma non avvia alcun lavoro; la sandbox dell'ambiente inizia il provisioning non appena la sessione viene creata, quindi la prima chiamata a uno strumento non deve attenderla. Per delegare un'attività, invia eventi alla sessione usando un evento utente. Per fornire invece il primo evento nella richiesta di creazione, consulta Inizializzare la sessione con eventi iniziali. La sessione funziona come una macchina a stati che tiene traccia dei progressi, mentre gli eventi guidano l'esecuzione effettiva.

client.beta.sessions.events.send(
    session.id,
    events=[
        {
            "type": "user.message",
            "content": [
                {"type": "text", "text": "List the files in the working directory."}
            ],
        },
    ],
)

Consulta Flusso di eventi della sessione per scoprire come eseguire lo streaming delle risposte dell'agente e gestire le conferme degli strumenti.

Consulta Stati della sessione per gli stati attraverso cui passa una sessione.

Passaggi successivi

Recupera, elenca, aggiorna, archivia ed elimina le sessioni di Claude Managed Agents.

Invia eventi, esegui lo streaming delle risposte e interrompi o reindirizza la tua sessione durante l'esecuzione.

Crea e gestisci deployment con la Claude API: esegui un agente secondo una pianificazione cron ricorrente e ispeziona la cronologia delle sue esecuzioni.

Was this page helpful?