Bereitstellen eines gehosteten Agents

In diesem Artikel erfahren Sie, wie Sie einen containerisierten Agenten im Foundry Agent Service mithilfe der Azure Developer CLI (azd), des Python SDK oder der REST-API bereitstellen. Wählen Sie eine Bereitstellungsmethode mithilfe der Auswahl oben im Artikel aus. Verwenden Sie die SDK- oder REST-Ansätze, wenn Sie Agent-Bereitstellungen direkt aus Ihren eigenen Anwendungen oder Diensten verwalten möchten.

Wenn Sie erstmals bereitstellen oder eine Schritt-für-Schritt-Anleitung wünschen, lesen Sie den Schnellstart: Erstellen und Bereitstellen eines gehosteten Agent. Die Azure Developer CLI (azd) und VS Code-Erweiterung übernehmen automatisch das Erstellen, Pushen, Versionieren und die RBAC-Konfiguration.

Tipp

Bevorzugen Sie eine dockerlose innere Schleife? Sie können auch einen gehosteten Agenten direkt aus dem Quellcode bereitstellen (Vorschau) – laden Sie ein .zip mit Ihrem Python- oder .NET-Code hoch, und die Plattform erstellt es und hostet es für Sie.

Bereitstellungslebenszyklus

Jede Bereitstellung des gehosteten Agents folgt dieser Sequenz:

  1. Erstellen und pushen – Packen Sie Ihren Agentcode in ein Containerimage, und übertragen Sie ihn an Azure Container Registry.
  2. Erstellen Sie eine Agentversion – Registrieren Sie das Image beim Foundry Agent Service. Die Plattform stellt Infrastruktur bereit und erstellt eine dedizierte Entra-Agent-Identität.
  3. Status abfragen – Warten Sie, bis der Versionsstatus active erreicht.
  4. Invoke – Senden von Anforderungen an den dedizierten Endpunkt des Agents.

Voraussetzungen

Erforderliche Berechtigungen

Sie benötigen auf Projektebene die Rolle Foundry Project Manager, um einen gehosteten Agenten bereitzustellen. Diese Rolle gewährt Berechtigungen auf der Datenebene zum Erstellen und Aktualisieren von Agenten sowie bei Bedarf die Möglichkeit, Rollenzuweisungen für die von der Plattform erstellte Agent-Identität zu erstellen. Eine detaillierte Aufschlüsselung der beteiligten Berechtigungen finden Sie in der Referenz für Berechtigungen gehosteter Agents.

Wichtig

Die Foundry-RBAC-Rollen wurden kürzlich umbenannt. Foundry User, Foundry Owner, Foundry Account Owner und Foundry Project Manager wurden zuvor Azure KI-Benutzer, Azure KI-Besitzer, Azure KI-Kontobesitzer und Azure AI Project Manager benannt. Möglicherweise werden die vorherigen Namen an einigen Stellen weiterhin angezeigt, während der Umbenennungsrollout ausgeführt wird. Die Rollen-IDs und Kernberechtigungen bleiben durch die Umbenennung unverändert.

Die Plattform erstellt bei der Bereitstellung für jeden gehosteten Agent eine dedizierte Microsoft Entra Agent-Identität. Diese Identität ist ein Dienstprinzipal, den Ihr ausgeführter Container zum Aufrufen von Modellen und Tools verwendet. Sie müssen verwaltete Identitäten nicht manuell konfigurieren. Die Agent-Identität kann standardmäßig über den Projektendpunkt und den Sitzungsspeicher auf Modellinferenz zugreifen. Weisen Sie für externe Ressourcen (z. B. Ihre eigene Azure Storage) RBAC-Rollen manuell dem Microsoft Entra ID des Agents zu. Weitere Informationen finden Sie unter Agentzugriff über die Standardeinstellungen hinaus.

Wenn Sie azd oder die VS Code-Erweiterung verwenden, übernimmt das Tooling die meisten RBAC-Zuweisungen automatisch, einschließlich Container Registry Repository Reader für die verwaltete Identität des Projekts (Abrufen von Images).

Weitere Informationen finden Sie unter Authentifizierung und Autorisierung.

Wichtig

Ob es unterstützt wird, die Azure Container Registry Ihres Hosted-Agents in einem privaten Netzwerk zu platzieren (privater Endpunkt mit deaktiviertem Zugriff über öffentliche Netzwerke), hängt davon ab, wann das Foundry-Projekt erstellt wurde. Projekte, die nach dem 25. Juni 2026 erstellt wurden, unterstützen eine private Registrierung. Projekte, die vor diesem Datum erstellt wurden, erfordern, dass die Registrierung über ihren öffentlichen Endpunkt erreichbar ist, damit die Plattform das Image abrufen kann. Vorhandene Projekte sind nicht betroffen. Eine vollständige Liste der Netzwerkeinschränkungen finden Sie unter "Einschränkungen".

Containeranforderungen

Ihr Container-Image muss die folgenden Anforderungen erfüllen, um auf der Hosted-Agent-Plattform ausgeführt werden zu können.

Wichtig

Die Hostingplattform erfordert x86_64 (linux/amd64) Containerimages. Wenn Sie auf Apple Silicon oder anderen ARM-basierten Computern aufbauen, verwenden Sie docker build --platform linux/amd64 . diese, um zu vermeiden, dass ein inkompatibles ARM-Image erzeugt wird.

Protokollbibliotheken

Gehostete Agents kommunizieren mit dem Foundry-Gateway über Protokollbibliotheken. Wählen Sie das Protokoll aus, das dem Interaktionsmuster Ihres Agents entspricht:

Protokoll Python-Bibliothek .NET-Bibliothek Endpunkt Am besten geeignet für
Antworten azure-ai-agentserver-responses Azure.AI.AgentServer.Responses /responses Unterhaltungs-Chatbots, Streaming, Multi-Turn mit plattformverwalteter Geschichte
Aufrufe azure-ai-agentserver-invocations Azure.AI.AgentServer.Invocations /invocations Webhook-Empfänger, nicht dialogbasierte Verarbeitung, benutzerdefinierte asynchrone Workflows
Aufrufe (WebSocket) azure-ai-agentserver-invocations Azure.AI.AgentServer.Invocations /invocations_ws Bidirektionales Streaming: Echtzeit-Sprach-Agents, interaktive Medien

Das WebSocket-Protokoll verwendet den Bezeichner invocations_ws und wird im selben azure-ai-agentserver-invocations Paket wie die HTTP-Route /invocations ausgeliefert, sodass ein Container beides bedienen kann. Verwenden Sie es, wenn Sie persistentes Vollduplex-Streaming benötigen, z. B. um Mikrofon-PCM an den Agenten zu senden und synthetisierte Audiodaten zurückzuerhalten. Informationen zu VoIP-Szenarien finden Sie unter Erstellen eines VoIP-Agents mit gehosteten Agents.

Ein einzelner Container kann mehrere Protokolle gleichzeitig verfügbar machen, indem sie deklariert werden, wenn Sie den Agent – im protocols Feld des azure.ai.agent Diensts in , einem azure.yamlSDK-Aufruf oder einer REST-API-Anforderung – erstellen und die erforderlichen Bibliotheken importieren. Verwenden Sie die Protokollbibliotheken in Ihrem vorhandenen Framework, unabhängig davon, ob es sich um Microsoft Agent Framework, LangChain oder benutzerdefinierten Code handelt.

Antwortprotokollbibliothek

Die Python- und .NET bibliotheken für das Antwortprotokoll implementieren die AZURE AI-Antwort-API. Importieren Sie das Paket, und implementieren Sie die IResponseHandler Schnittstelle. Die Bibliothek verarbeitet Routing, Streaming mit servergesendeten Ereignissen (SSE), Hintergrundausführung, Abbruch, Zwischenspeichern und Reaktionslebenszyklusverwaltung.

IResponseHandler

IResponseHandler ist die Kernstraktion, die Sie implementieren. Die Bibliothek ruft für jede eingehende Anforderung CreateAsync auf und übermittelt die zurückgegebenen IAsyncEnumerable<ResponseStreamEvent> über SSE an die Clients.

public class EchoHandler : ResponseHandler
{
    public override IAsyncEnumerable<ResponseStreamEvent> CreateAsync(
        CreateResponse request,
        ResponseContext context,
        CancellationToken cancellationToken)
    {
        return new TextResponse(context, request,
            createText: async ct =>
            {
                var input = await context.GetInputTextAsync(cancellationToken: ct);
                return $"Echo: {input}";
            });
    }
}

ResponseEventStream

ResponseEventStream verwaltet sequenceNumber, outputIndex, contentIndex, itemId und den vollständigen Lebenszyklus von Response automatisch. Jedes yield return stimmt eins zu eins mit einem SSE-Ereignis überein, sodass Sie diesen Zustand nicht selbst nachverfolgen müssen.

Streaming- und Hintergrundmodi

  • Streamingmodus (Standard): SSE-Ereignisse werden in Echtzeit an den verbundenen Client übermittelt.
  • Hintergrundmodus: Der Handler läuft bis zum Abschluss, auch ohne einen verbundenen SSE-Client. Ereignisse werden gepuffert und stehen für die Wiedergabe über GET /responses/{id}.

Antwortlebenszyklus

Die Bibliothek koordiniert den vollständigen Antwortlebenszyklus: created - ->in_progress>completed (oder ).failedcancelled Die Bibliothek verwaltet auch die Abbruch-, Fehlerbehandlungs- und Terminalereignisgarantien automatisch.

Threadsicherheit

Alle Dienstinstanzen, die über AddResponsesServer() registriert wurden, sind threadsicher. Handler-Instanzen sind im Kontext einer Anforderung definiert.

Ausführliche Anleitungen zur Implementierung von Handlern finden Sie im Handlerimplementierungshandbuch. Für ausführbare Beispiele siehe die Responses-Protokollbeispiele.

Gesundheitsendpunkte

Die Protokollbibliotheken machen automatisch einen /readiness Endpunkt für Plattformintegritätsprüfungen verfügbar. Sie müssen dies nicht selbst implementieren.

Hafen

Container bedienen lokal den Datenverkehr auf Port 8088. Im Produktivbetrieb übernimmt das Foundry-Gateway das Routing – Ihr Container muss keinen öffentlichen Port freigeben.

Plattforminjizierte Umgebungsvariablen

Die Plattform des gehosteten Agents fügt Umgebungsvariablen automatisch zur Laufzeit in Ihren Container ein. Ihr Code kann diese Variablen lesen, ohne sie in der env Zuordnung des azure.ai.agent Diensts in azure.yaml oder in den Einstellungen der SDK- und REST-Umgebungsvariablen zu deklarieren. Das FOUNDRY_* Präfix ist für die Plattformverwendung reserviert.

Variable Zweck
FOUNDRY_PROJECT_ENDPOINT Url des Gießereiprojektendpunkts
FOUNDRY_PROJECT_ARM_ID ARM-Ressourcen-ID des Foundry-Projekts
FOUNDRY_AGENT_NAME Name des laufenden Agents
FOUNDRY_AGENT_VERSION Version des laufenden Agents
FOUNDRY_AGENT_SESSION_ID Sitzungs-ID für die aktuelle Anforderung (nur gehostete Container)
APPLICATIONINSIGHTS_CONNECTION_STRING Verbindungszeichenfolge von Application Insights für die Telemetrie

Deklarieren Sie in azure.yaml keine von der Plattform eingefügten Variablen erneut – sie werden automatisch gesetzt.

Variablen, die Sie selbst deklarieren, wie MODEL_DEPLOYMENT_NAME oder Toolbox-MCP-Endpunkte, gehören in die env-Map des azure.ai.agent-Dienstes in azure.yaml oder in den SDK-Aufruf create_version.

Wichtig

Wenn Sie Ihren gehosteten Agent im Foundry Agent Service bereitstellen, fügt die Plattform automatisch eine Application Insights-Verbindungszeichenfolge als Umgebungsvariable in Ihren Agentcontainer ein, wodurch die OpenTelemetry-Ablaufverfolgung standardmäßig aktiviert wird. Um verteilte Ablaufverfolgungen, Anforderungen und Abhängigkeiten anzuzeigen, öffnen Sie die Application Insights-Ressource, die während des Setups im Azure-Portal bereitgestellt wurde, und navigieren Sie zur Untersuchung > der Transaktionssuche oder -leistung. Verwenden Sie azd ai agent monitor für Live-Konsolenprotokolle. Wenn AppInsights aktiviert ist, protokolliert dieses Projekt Ablaufverfolgungen, um Interaktionen auf Benutzerebene mit Agents zu überwachen und auszuwerten. Projektmitglieder, denen in AppInsights die Log Analytics Reader-Rolle zugewiesen wurde, können Nachverfolgungsdaten anzeigen, die personenbezogene Daten und/oder Kundeninhalte enthalten können. Wenn die zugrunde liegenden Log Analytics-Tabellen geschützt sind, benötigen Mitglieder stattdessen die Rolle Privileged Monitoring Data Reader, um diese Ablaufverfolgungsdaten anzuzeigen. Überprüfen Sie, welche Nachverfolgungsdaten erfasst werden und wer diese Daten einsehen und nutzen kann. Weitere Azure Monitor App Insights-Preise können angewendet werden. Erfahren Sie mehr.

Verweisen auf Projektverbindungen in Umgebungsvariablen

Anstatt Geheimnisse (API-Schlüssel, Token, Endpunkte) fest in azure.yaml oder Ihr Image einzucodieren, beziehen Sie sie beim Start der Sandbox aus einer Foundry-Projektverbindung. Jeder Wert, den Sie als Umgebungsvariable deklarieren, kann ein Platzhalterausdruck sein, der von der Plattform aufgelöst wird, bevor der Container gestartet wird.

Platzhaltersyntax

Ein Platzhalter weist das Formular ${{connections.<name>.<path>}} auf, wobei <name> der Ressourcenname der Verbindung ist (im Portal unter Project Details sichtbar>Verbindete Ressourcen) und <path> ist eine der folgenden:

Pfad Aufgelöst in
credentials.<field> Ein geheimes Feld auf der Verbindung
target Die target-Eigenschaft der Verbindung (z. B. eine Endpunkt-URL)
metadata.<field> Ein Feld unter metadata der Verbindung

Der zu verwendende Feldname hängt von der Verbindungskategorie ab:

Verbindungskategorie Feldname im Platzhalter
ApiKey, AppInsights Immer key--z. B. credentials.key
CustomKeys Der Schlüsselname, den Sie beim Erstellen der Verbindung angegeben haben , z. B. credentials.github_token

Beispiel

Erstellen Sie zunächst eine CustomKeys Verbindung für das Projekt, die den geheimen Schlüssel enthält. Siehe Eine neue Verbindung in Microsoft Foundry hinzufügen. Anschließend kann man in der env-Karte im azure.ai.agent-Dienst in azure.yaml darauf zugreifen:

services:
  my-agent:
    host: azure.ai.agent
    env:
      MODEL_DEPLOYMENT_NAME: gpt-5-mini
      GITHUB_TOKEN: ${{connections.agent-secrets.credentials.github_token}}

Im Sandkastenstart löst Foundry den Platzhalter auf und fügt den aufgelösten Wert als einfache Umgebungsvariable ein. Ihr Code liest ihn wie jeder andere env var:

import os
token = os.environ["GITHUB_TOKEN"]

Ein GET für die Agentversion gibt den Literaltext ${{...}} zurück– der aufgelöste geheime Schlüssel wird niemals über die Verwaltungs-API zurückgegeben.

Considerations

  • Erstellen Sie die Verbindung, bevor Sie die Version bereitstellen. Wenn die Verbindung oder das referenzierte Feld beim Sandkastenstart fehlt, wird der Platzhalter nicht aufgelöst, und die Variable ist leer.
  • Geheimnisse können nur geschrieben werden. GET für eine Verbindung gibt zurück credentials: null. Überprüfen Sie die korrekte Auflösung, indem Sie die Umgebungsvariable innerhalb Ihres laufenden Containers auslesen, nicht durch Überprüfen der Verbindung.
  • Notieren Sie Feldnamen CustomKeys selbst. Die Verwaltungs-API gibt sie nach der Erstellung nie wieder zurück. Bewahren Sie sie direkt bei Ihrer Agent-Quelle auf (z. B. in IaC-Vorlagen oder neben azure.yaml), damit Sie später Platzhalter anlegen können, ohne raten zu müssen.
  • Foundry verwaltet den zugrunde stehenden geheimen Namen. Wenn Sie die Verbindung erstellen, speichert Foundry den Wert in Key Vault unter einem von ihr ausgewählten Namen – Sie können nicht auf ein bereits vorhandenes Key Vault Geheimnis anhand des Namens verweisen. Informationen dazu, wie Sie Ihren eigenen Key Vault als zugrunde liegenden Speicher einbinden, finden Sie unter Set up a Key Vault connection.

Paketieren und testen Sie Ihren Agenten lokal

Überprüfen Sie vor der Bereitstellung in Foundry, ob Ihr Agent lokal mithilfe der Protokollbibliothek funktioniert. Der Container dient denselben Endpunkten lokal wie in der Produktion.

Testen des Antwortprotokolls

POST http://localhost:8088/responses
Content-Type: application/json

{
    "input": "Where is Seattle?",
    "stream": false
}

Das Aufrufprotokoll testen

POST http://localhost:8088/invocations
Content-Type: application/json

{
    "message": "Hello!"
}

Bereitstellen mithilfe der Azure Developer CLI oder VS Code

Die Azure Developer CLI (azd) und das Microsoft Foundry Toolkit für Visual Studio Code automatisieren den vollständigen Bereitstellungslebenszyklus: Erstellen des Containers, Pushen auf Azure Container Registry, Erstellen der Agentversion und Zuweisen von RBAC-Rollen. Eine geführte erste exemplarische Vorgehensweise finden Sie in der Schnellstartanleitung: Erstellen und Bereitstellen eines gehosteten Agents.

Mit einem Befehl bereitstellen

Stellen Sie in einem einzigen Schritt aus Ihrem Agent-Projektverzeichnis die Infrastruktur bereit und führen Sie die Bereitstellung durch:

azd up

azd up kombiniert azd provision, die das Foundry-Projekt erstellt, Modellbereitstellung, Containerregistrierung, Application Insights und verwaltete Identität, mit azd deploy. Verwenden Sie sie für erstmalige Bereitstellungen oder wann immer Sie sowohl Infrastruktur- als auch Agentcode ändern.

Nur Codeänderungen bereitstellen

Wenn Sie Ihre Azure Ressourcen bereits bereitgestellt haben und nur eine neue Agent-Version übertragen müssen:

azd deploy

Während azd deploy führt die CLI Folgendes aus:

  1. Erstellt Ihr Containerimage remote in Azure Container Registry, sodass Sie keine lokale Docker-Installation benötigen.
  2. Pushen des Images in die Registrierung
  3. Erstellt eine gehostete Agent-Version im Foundry Agent Service.
  4. Erstellt eine dedizierte Microsoft Entra Agentidentität und weist die RBAC-Rollen zu, die der Agent für den Zugriff auf Modelle und Tools benötigt.

Versionen verwalten

Jede azd deploy erstellt eine neue Version des Agents. Die CLI behält frühere Versionen bei, und die neueste Version ist standardmäßig aktiv.

Überprüfen Sie die Bereitstellung

azd ai agent show

Die Ausgabe enthält den Agentnamen, die Version, Protokolle, Containerressourcen, Umgebungsvariablen und den Zeitstempel der Erstellung. Verwenden Sie --output table für eine Zusammenfassungsansicht.

Lokales Erstellen von Images

azd erstellt standardmäßig Containerimages remote in Azure Container Registry. Wenn Sie Bilder lokal erstellen möchten, legen Sie es remoteBuild: false fest in azure.yaml. Lokale Builds erfordern Docker Desktop.

Um Prompts und Antworten anhand einer Inhaltssicherheitsrichtlinie zu prüfen, fügen Sie Ihrem Agenten eine Leitplanke für die Inhaltssicherheit hinzu.

Bereitstellen mithilfe des Python SDK

Verwenden Sie das SDK, wenn Sie Agentbereitstellungen direkt aus Python Code verwalten möchten.

Zusätzliche Voraussetzungen

  • Python 3.10 oder höher

  • Ein Containerimage in Azure Container Registry

  • Rolle Container Registry-Repository-Writer oder AcrPush in der Containerregistrierung (zum Pushen von Images)

  • Azure AI Projects SDK, Version 2.1.0 oder höher

    pip install "azure-ai-projects>=2.1.0"
    

Erstellen und Pushen Ihres Container-Images

  1. Erstellen Sie Ihr Docker-Image:

    docker build --platform linux/amd64 -t myagent:v1 .
    

    Beispiele für Dockerfiles für Python und C#.

  2. Push zur Azure Container Registry:

    az acr login --name myregistry
    docker tag myagent:v1 myregistry.azurecr.io/myagent:v1
    docker push myregistry.azurecr.io/myagent:v1
    

Tipp

Verwenden Sie eindeutige Imagetags anstelle :latest für reproduzierbare Bereitstellungen.

Konfigurieren von Containerregistrierungsberechtigungen

Gewähren Sie den verwalteten Identitätszugriff Ihres Projekts, um Bilder abzurufen:

  1. Wechseln Sie im portal Azure zu Ihrer Findry-Projektressource.

  2. Wählen Sie "Identität" aus, und kopieren Sie die Objekt-ID (Prinzipal-ID) unter "System zugewiesen".

  3. Weisen Sie dieser Identität in Ihrer Container-Registry die Rolle „Container-Registry-Repository-Leser“ zu. Siehe Azure Container Registry Rollen und Berechtigungen.

Erstellen einer gehosteten Agent-Version

Wenn Sie eine Version erstellen, stellt die Plattform automatisch den Agent fest. Es gibt keinen separaten Startschritt. Die Plattform erstellt einen Container-Snapshot und macht den Agenten bereit, Anfragen zu bearbeiten.

from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import HostedAgentDefinition, ProtocolVersionRecord, AgentEndpointProtocol, ContainerConfiguration
from azure.identity import DefaultAzureCredential

# Format: "https://resource_name.services.ai.azure.com/api/projects/project_name"
PROJECT_ENDPOINT = "your_project_endpoint"

# Create project client
credential = DefaultAzureCredential()
project = AIProjectClient(
    endpoint=PROJECT_ENDPOINT,
    credential=credential,
    allow_preview=True,
)

# Create a hosted agent version
agent = project.agents.create_version(
    agent_name="my-agent",
    definition=HostedAgentDefinition(
        protocol_versions=[
            ProtocolVersionRecord(protocol=AgentEndpointProtocol.RESPONSES, version="1.0.0")
        ],
        cpu="1",
        memory="2Gi",
        container_configuration=ContainerConfiguration(
            image="your-registry.azurecr.io/your-image:tag"
        ),
        environment_variables={
            "MODEL_DEPLOYMENT_NAME": "gpt-5-mini"
        }
    )
)

print(f"Agent created: {agent.name}, version: {agent.version}")

Um beide Protokolle verfügbar zu machen, geben Sie beide Protokolle in protocol_versions an.

protocol_versions=[
    ProtocolVersionRecord(protocol=AgentEndpointProtocol.RESPONSES, version="1.0.0"),
    ProtocolVersionRecord(protocol=AgentEndpointProtocol.INVOCATIONS, version="1.0.0"),
    ProtocolVersionRecord(protocol=AgentEndpointProtocol.INVOCATIONS_WS, version="1.0.0"),
],

Schlüsselparameter:

Parameter Beschreibung
agent_name Eindeutiger Name (alphanumerisch mit Bindestrichen, max. 63 Zeichen)
container_configuration.image Vollständige Azure Container Registry Image-URL mit Tag
cpu CPU-Zuordnung (z. B "1". )
memory Speicherzuweisung (z. B. "2Gi")
protocol_versions Protokolle, die der Container verfügbar macht (responses, invocationsoder beides)

Abfragen des Versionsstatus

Führen Sie nach der Erstellung einer Version eine Abfrage aus, bis der Status active ist, bevor Sie den Agent aufrufen. Die Bereitstellung dauert in der Regel je nach Bildgröße weniger als eine Minute.

import time

# Poll until the agent version is active
while True:
    version_info = project.agents.get_version(
        agent_name="my-agent",
        agent_version=agent.version
    )
    status = version_info["status"]
    print(f"Status: {status}")

    if status == "active":
        print("Agent is ready!")
        break
    elif status == "failed":
        print(f"Provisioning failed: {version_info['error']}")
        break

    time.sleep(5)

Versionsstatuswerte:

Status Beschreibung
creating Die Bereitstellung der Infrastruktur wird fortgesetzt.
active Agent ist bereit, Anfragen zu bearbeiten
failed Bereitstellung fehlgeschlagen - das error Feld auf Details überprüfen
deleting Version wird bereinigt
deleted Die Version wurde vollständig entfernt.

Agenten aufrufen

Nachdem die Version den Status active erreicht hat, verwenden Sie get_openai_client, um einen OpenAI-Client zu erstellen, der an den Endpunkt des Agenten gebunden ist.

Für das Antwortprotokoll :

# Create an OpenAI client bound to the agent endpoint
openai_client = project.get_openai_client(agent_name="my-agent")

response = openai_client.responses.create(
    input="Hello! What can you do?",
)

print(response.output_text)

Rufen Sie für das Aufrufprotokoll den Aufrufendpunkt direkt auf:

import requests

token = credential.get_token("https://ai.azure.com/.default").token
url = f"{PROJECT_ENDPOINT}/agents/my-agent/endpoint/protocols/invocations"

response = requests.post(url, headers={
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json",
    "Foundry-Features": "HostedAgents=V1Preview"
}, params={"api-version": "v1"}, json={
    "message": "Process this task"
})

print(response.json())

Ausführlichere Beispiele finden Sie in den Beispielen für gehostete Agent.

Bereitstellen mithilfe der REST-API

Verwenden Sie die REST-API für direkte HTTP-basierte Bereitstellungen oder bei der Integration in benutzerdefinierte Tools.

Bevor Sie beginnen, erstellen Sie Ihr Containerimage, und übertragen Sie es in Azure Container Registry, und weisen Sie der verwalteten Identität des Projekts für die Registrierung die Rolle Container Registry Repository Reader zu.

Einrichten von Variablen

BASE_URL="https://{account}.services.ai.azure.com/api/projects/{project}"
API_VERSION="v1"
TOKEN=$(az account get-access-token --resource https://ai.azure.com --query accessToken -o tsv)

Erstellen eines Agents

curl -X POST "$BASE_URL/agents?api-version=$API_VERSION" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-agent",
    "definition": {
      "kind": "hosted",
      "container_configuration": {
        "image": "myacr.azurecr.io/my-agent:v1"
      },
      "cpu": "1",
      "memory": "2Gi",
      "protocol_versions": [
        {"protocol": "responses", "version": "1.0.0"}
      ],
      "environment_variables": {
        "MODEL_DEPLOYMENT_NAME": "gpt-5-mini"
      }
    }
  }'

Durch das Erstellen eines Agents wird auch die Version 1 erstellt und die Bereitstellung ausgelöst.

Um Prompts und Antworten anhand einer Inhaltssicherheitsrichtlinie zu prüfen, fügen Sie ein rai_config-Objekt in definition ein. Siehe auch Fügen Sie einem gehosteten Agent eine Content Safety-Sicherheitsbarriere für Inhalte hinzu.

Abfragen des Versionsstatus

Überprüfen Sie den Versionsendpunkt wiederholt, bis statusactive ist.

while true; do
  STATUS=$(curl -s -X GET "$BASE_URL/agents/my-agent/versions/1?api-version=$API_VERSION" \
    -H "Authorization: Bearer $TOKEN" | jq -r '.status')
  echo "Status: $STATUS"
  [ "$STATUS" = "active" ] && echo "Ready!" && break
  [ "$STATUS" = "failed" ] && echo "Provisioning failed." && exit 1
  sleep 5
done

Agenten aufrufen

Verwenden Sie den dedizierten Endpunkt des Agents, um Anforderungen zu senden. Setzen Sie "stream": true, um Server-gesendete Ereignisse zu empfangen.

Antwortprotokoll:

curl -X POST "$BASE_URL/agents/my-agent/endpoint/protocols/openai/responses?api-version=$API_VERSION" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Hello! What can you do?",
    "store": true
  }'

Aufrufprotokoll:

curl -X POST "$BASE_URL/agents/my-agent/endpoint/protocols/invocations?api-version=$API_VERSION" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Foundry-Features: HostedAgents=V1Preview" \
  -d '{
    "message": "Process this task"
  }'

Erstellen einer neuen Version

Stellen Sie aktualisierten Code oder die aktualisierte Konfiguration bereit, indem Sie eine neue Version erstellen:

curl -X POST "$BASE_URL/agents/my-agent/versions?api-version=$API_VERSION" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "definition": {
      "kind": "hosted",
      "container_configuration": {
        "image": "myacr.azurecr.io/my-agent:v2"
      },
      "cpu": "1",
      "memory": "2Gi",
      "protocol_versions": [
        {"protocol": "responses", "version": "1.0.0"}
      ],
      "environment_variables": {
        "MODEL_DEPLOYMENT_NAME": "gpt-5-mini"
      }
    }
  }'

Bereinigen von Ressourcen

Um Gebühren zu vermeiden, bereinigen Sie Ressourcen, nachdem Sie fertig sind. Agenten-Berechnung wird nach 15 Minuten Inaktivität abgebaut, wodurch keine Kosten anfallen, wenn ein Agent keine Anforderungen bedient.

Azure Entwickler-CLI-Bereinigung

azd down

SDK-Bereinigung

Löschen einer einzelnen Version:

project.agents.delete_version(agent_name="my-agent", agent_version=agent.version)

Oder löschen Sie den gesamten Agent und alle zugehörigen Versionen:

project.agents.delete(agent_name="my-agent")

REST-API-Bereinigung

Löschen einer einzelnen Version:

curl -X DELETE "$BASE_URL/agents/my-agent/versions/1?api-version=$API_VERSION" \
  -H "Authorization: Bearer $TOKEN"

Oder löschen Sie den gesamten Agent:

curl -X DELETE "$BASE_URL/agents/my-agent?api-version=$API_VERSION" \
  -H "Authorization: Bearer $TOKEN"

Warnung

Durch das Löschen eines Agents werden alle zugehörigen Versionen entfernt und aktive Sitzungen beendet. Diese Aktion kann nicht rückgängig gemacht werden.

Problembehandlung

Bereitstellungsfehler werden auf den error.code und error.message Feldern des Versionsobjekts angezeigt. Überprüfen Sie den Versionsstatus nach der Erstellung, um Probleme zu identifizieren.

Fehlercode HTTP-Code Lösung
image_pull_failed 400 Überprüfen Sie die URI des Bildes. Überprüfen Sie, ob die vom Projekt verwaltete Identität über die Berechtigung Container Registry-Repositoryleser im ACR verfügt und ob der Richtlinienstatus azureADAuthenticationAsArmPolicy der Registrierung enabled lautet
SubscriptionIsNotRegistered 400 Registrieren des Abonnementanbieters
InvalidAcrPullCredentials 401 Korrektur verwaltete Identität oder Registrierung RBAC
UnauthorizedAcrPull 403 Geben Sie korrekte Zugangsdaten oder Identität an.
AcrImageNotFound 404 Korrigieren des Bildnamens/Tags oder Veröffentlichen eines Bilds
RegistryNotFound 400/404 DNS- oder Netzwerk-Erreichbarkeit der Registry beheben

Wenden Sie sich für 5xx-Fehler an Microsoft Support.

Detaillierte RBAC-Anforderungen und Berechtigungsprobleme finden Sie unter der Referenz zu Berechtigungen für gehostete Agenten.

Nächste Schritte