Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo articolo, si distribuisce un agente ospitato a esecuzione prolungata che supporta la gestione: quando arriva un secondo turno nella stessa conversazione mentre il primo è ancora in esecuzione, la piattaforma accoda il nuovo turno e annulla in modo cooperativo quello in corso anziché rifiutarlo con 409 conversation_locked.
L'esempio è un agente del protocollo Responses che abilita la resilienza e l'instradamento con due opzioni. Usa un flusso di modelli simulato, in modo da poterlo eseguire senza credenziali del modello.
Annotazioni
Gli agenti a esecuzione prolungata sono in anteprima. Le API e le versioni dei pacchetti sono soggette a modifiche.
Prerequisiti
- Una sottoscrizione di Azure con accesso a Microsoft Foundry.
- Python 3.13.
- L'interfaccia della riga di comando Azure Developer (
azd) con l'estensione Foundry Agents. -
interfaccia della riga di comando di Azure (
az) ecurlper chiamare l'agente distribuito.
Ottenere l'esempio
In una directory vuota inizializzare l'agente di gestione resiliente dal relativo manifesto azure.yaml:
azd auth login
azd ai agent init -m https://github.com/microsoft-foundry/foundry-samples/blob/main/samples/python/hosted-agents/bring-your-own/responses/resilient-steering/azure.yaml
Il comando scarica il codice sorgente di esempio, ne adotta il relativo azure.yaml, crea un ambiente azd e lo collega al progetto Foundry selezionato.
L'agente consente resilienza e gestione durante la creazione dell'host:
options = ResponsesServerOptions(
resilient_background=True,
steerable_conversations=True,
)
app = ResponsesAgentServerHost(options=options)
Usando steerable_conversations=True, un secondo turno in una conversazione già occupata viene accodato e l'handler in esecuzione viene annullato in modo cooperativo, anziché restituire 409 conversation_locked.
Provisioning e distribuzione
Effettuare il provisioning del progetto e distribuire l'agente. Quando viene richiesta una località, seleziona una regione che supporta gli agenti ospitati.
azd up
azd up mostra l'endpoint di risposte e un link al playground.
Gestire l'agente distribuito
azd up visualizza l'endpoint Responses. Salvarlo, rimuovere la stringa di query e ottenere un token di accesso:
ENDPOINT="<responses-endpoint-from-azd-up>"
RESPONSES_ENDPOINT="${ENDPOINT%%\?*}"
TOKEN=$(az account get-access-token --resource https://ai.azure.com --query accessToken -o tsv)
Lo steering richiede risposte in background memorizzate (store: true e background: true). Avviare il primo turno e prendere nota dell'ID conversation nella risposta:
curl -sS -X POST "$RESPONSES_ENDPOINT?api-version=2025-11-15-preview" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"input": "Explain quantum computing in detail, including its history, principles, algorithms, hardware, error correction, and applications.", "store": true, "background": true}'
Mentre il primo turno è ancora in corso, inviare immediatamente una nuova istruzione nella stessa conversazione in modo che gestisca il turno in corso:
curl -sS -X POST "$RESPONSES_ENDPOINT?api-version=2025-11-15-preview" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"input": "Instead, explain relativity and focus on practical examples.", "conversation": "<conversation-id-from-turn-1>", "store": true, "background": true}'
La prima iterazione rileva l'input in coda e termina nel successivo punto sicuro. Il turno in coda viene quindi eseguito fino al completamento. Trasmetti in streaming una delle due risposte con il relativo id per vedere il passaggio:
curl -sS "$RESPONSES_ENDPOINT/<response-id>?api-version=2025-11-15-preview" \
-H "Authorization: Bearer $TOKEN"
Pulizia
azd down