Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 einen gehosteten Agenten auch direkt aus dem Quellcode bereitstellen – laden Sie ein .zip Ihres Python- oder .NET-Codes hoch, und die Plattform erstellt und hostet ihn für Sie.
Wenn Sie einen Codierungs-Agent wie GitHub Copilot verwenden, können Sie mit dem Microsoft Foundry Skill den Containerbereitstellungsablauf planen, Befehle vorbereiten azd und die SDK- oder REST-Schritte mit Ihrem Projekt verbinden.
Bereitstellungslebenszyklus
Jede Bereitstellung des gehosteten Agents folgt dieser Sequenz:
- Erstellen und pushen – Packen Sie Ihren Agentcode in ein Containerimage, und übertragen Sie ihn an Azure Container Registry.
- 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.
-
Status abfragen – Warten Sie, bis der Versionsstatus
activeerreicht. - Invoke – Senden von Anforderungen an den dedizierten Endpunkt des Agents.
Voraussetzungen
- Ein Microsoft Foundry-Projekt.
- Agentcode mit einem unterstützten Framework.
- Docker Desktop für die entwicklung lokaler Container installiert.
- Azure CLI Version 2.80 oder höher.
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 einen Antworthandler. Die Bibliothek verarbeitet Routing, Streaming mit servergesendeten Ereignissen (SSE), Hintergrundausführung, Abbruch, Zwischenspeichern und Reaktionslebenszyklusverwaltung.
Einen Handler implementieren
Der Handler ist die zentrale Abstraktion, die Sie implementieren. Die Bibliothek ruft sie für jede eingehende Anforderung auf und übermittelt die zurückgegebenen Ereignisse über SSE an Clients. In Python schmücken Sie eine asynchrone Funktion mit @app.response_handler:
from azure.ai.agentserver.responses import (
CreateResponse,
ResponseContext,
ResponsesAgentServerHost,
TextResponse,
)
app = ResponsesAgentServerHost()
@app.response_handler
async def handler(
request: CreateResponse,
context: ResponseContext,
_cancellation_signal,
):
user_input = await context.get_input_text() or ""
return TextResponse(context, request, text=f"Echo: {user_input}")
Automatische Ereignis- und Lebenszyklusverwaltung
Die Bibliothek verwaltet die Ereignissequenz – Sequenznummern, Ausgabe- und Inhaltsindizes und Element-IDs – und den vollständigen Antwortlebenszyklus automatisch, sodass Sie diesen Zustand nicht selbst nachverfolgen. Jedes Ereignis, das Ihr Handler erzeugt, entspricht genau einem SSE-Ereignis, das vom Host-Framework für Sie verwaltet wird.
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
Handlerinstanzen sind auf die jeweilige Anfrage beschränkt, sodass zustandsbezogene Daten nicht zwischen Anfragen durchsickern. Die Bibliothek verarbeitet gleichzeitige Anforderungen sicher.
Ausführbare Beispiele finden Sie unter Python-„Bring-Your-Own“-Beispielen.
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 hat die Form ${{connections.<name>.<path>}}, wobei <name> der Ressourcenname der Verbindung ist (im Portal unter Verwalten>Projektdetails>Verbundene Ressourcen sichtbar) und <path> für eines der folgenden Elemente steht:
| 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 jede andere Umgebungsvariable:
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
CustomKeysselbst. 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 nebenazure.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:
- Erstellt Ihr Containerimage remote in Azure Container Registry, sodass Sie keine lokale Docker-Installation benötigen.
- Pushen des Images in die Registrierung
- Erstellt eine gehostete Agent-Version im Foundry Agent Service.
- 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
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.3.0 oder höher
pip install "azure-ai-projects>=2.3.0"
Erstellen und Pushen Ihres Container-Images
Erstellen Sie Ihr Docker-Image:
docker build --platform linux/amd64 -t myagent:v1 .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:
Wechseln Sie im portal Azure zu Ihrer Findry-Projektressource.
Wählen Sie "Identität" aus, und kopieren Sie die Objekt-ID (Prinzipal-ID) unter "System zugewiesen".
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 (
AgentEndpointProtocol,
ContainerConfiguration,
HostedAgentDefinition,
ProtocolVersionRecord,
)
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,
)
# 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) |
Informationen zum Festlegen, wann die Sitzungsberechnung im Leerlauf läuft, finden Sie unter Verwalten der Sitzungs-Leerlauf.
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",
}, 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.
Informationen zum Festlegen, wann die Sitzungsberechnung im Leerlauf läuft, finden Sie unter Verwalten der Sitzungs-Leerlauf.
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" \
-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. Die Plattform gibt die Rechenressourcen des Agenten nach dem konfigurierten Leerlaufzeitlimit frei, das standardmäßig 15 Minuten beträgt, sodass keine Kosten anfallen, wenn ein Agent keine Anfragen bearbeitet.
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. Verwenden Sie force=True, um alle aktiven Sitzungen kaskadierend zu löschen, z. B. unmittelbar nachdem Sie den Agenten aufgerufen haben; ohne force=True schlägt der Aufruf mit einem Konfliktfehler fehl, solange Sitzungen aktiv sind:
project.agents.delete(agent_name="my-agent", force=True)
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.