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 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:
- 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 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
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.1.0 oder höher
pip install "azure-ai-projects>=2.1.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 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.