Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du distribuerar en containerbaserad agent till Foundry Agent Service med hjälp av Azure Developer CLI (azd), Python SDK eller REST API. Välj en distributionsmetod med hjälp av väljaren längst upp i artikeln. Använd SDK- eller REST-metoderna när du vill hantera agentdistributioner direkt från dina egna program eller tjänster.
Om du distribuerar för första gången eller vill ha en guidad genomgång läser du Snabbstart: Skapa och distribuera en värdbaserad agent. Tillägget Azure Developer CLI (azd) och VS Code hanterar automatiskt skapande, push-överföring, versionshantering och RBAC-konfiguration.
Tips
Föredrar du en Docker-mindre inre loop? Du kan också distribuera en värdbaserad agent direkt från källkoden – ladda upp en .zip av dina Python eller .NET kod och plattformen bygger och är värd för den åt dig.
Om du använder en kodningsagent som GitHub Copilot kan Microsoft Foundry Skill hjälpa dig att planera containerdistributionsflödet, förbereda azd kommandon och ansluta SDK- eller REST-stegen till projektet.
Distributionslivscykel
Varje distribution av värdbaserad agent följer den här sekvensen:
- Skapa och skicka – Paketera agentkoden i en containeravbildning och push-överför den till Azure Container Registry.
- Skapa en agentversion – Registrera avbildningen med Foundry Agent Service. Plattformen etablerar infrastrukturen och skapar en dedikerad Entra-agentidentitet.
-
Sök efter status – Vänta tills versionsstatusen har nått
active. - Invoke – Skicka begäranden till agentens dedikerade slutpunkt.
Förutsättningar
- Ett Microsoft Foundry-projekt.
- Agentkod med ett ramverk som stöds.
- Docker Desktop installerat för utveckling av lokala containrar.
- Azure CLI version 2.80 eller senare.
Nödvändiga behörigheter
Du behöver rollen Foundry Project Manager på projektnivå för att driftsätta en hostad agent. Den här rollen ger dataplanet behörighet att skapa och uppdatera agenter, plus möjligheten att skapa rolltilldelningar för den plattformsskapade agentidentiteten om det behövs. En detaljerad beskrivning av de behörigheter som berörs finns i Referens för värdbaserade agentbehörigheter.
Viktigt
Foundrys RBAC-roller har nyligen namnändrats. Foundry User, Foundry Owner, Foundry Account Owner och Foundry Project Manager hette tidigare Azure AI-användare, Azure AI-ägare, Azure AI-kontoägare och Azure AI Project Manager. Du kanske fortfarande ser de tidigare namnen på vissa platser medan namnbytet distribueras. Roll-ID:na och kärnbehörigheterna ändras inte av namnbytet.
Plattformen skapar en dedikerad Microsoft Entra agentidentitet för varje värdbaserad agent vid distributionstillfället. Den här identiteten är ett tjänstehuvudnamn som din körande container använder för att anropa modeller och verktyg. Du behöver inte konfigurera hanterade identiteter manuellt. Agentidentiteten kan komma åt modellinferenser via projektets slutpunkt och sessionslagring som standard. För externa resurser (till exempel din egen Azure Storage) tilldelar du RBAC-roller manuellt till agentens Microsoft Entra ID. Mer information finns i Agentåtkomst utöver standardvärden.
Om du använder azd eller VS Code-tillägget hanterar verktygen de flesta RBAC-tilldelningar automatiskt, inklusive Container Registry Repository Reader för projektets hanterade identitet (avbildningshämtningar).
Mer information finns i Autentisering och auktorisering.
Viktigt
Stöd för att placera värdbaserad agentens Azure Container Registry bakom ett privat nätverk (privat slutpunkt med åtkomst till offentligt nätverk inaktiverad) beror på när Foundry-projektet skapades. Projekt som skapats efter den 25 juni 2026 stöder ett privat register. Projekt som skapades före det datumet kräver att registret kan nås via dess offentliga slutpunkt så att plattformen kan hämta avbildningen. Befintliga projekt påverkas inte. En fullständig lista över nätverksbegränsningar finns i Begränsningar.
Containerkrav
Din containeravbild måste uppfylla följande krav för att kunna köras på Hosted agent-plattformen.
Viktigt
Värdplattformen kräver x86_64 (linux/amd64) containeravbildningar. Om du bygger på Apple Silicon eller andra ARM-baserade datorer kan du använda docker build --platform linux/amd64 . för att undvika att skapa en inkompatibel ARM-avbildning.
Protokollbibliotek
Värdbaserade agenter kommunicerar med Foundry-gatewayen via protokollbibliotek. Välj det protokoll som matchar agentens interaktionsmönster:
| Protokollet | Python bibliotek | .NET bibliotek | Slutpunkt | Bäst för |
|---|---|---|---|---|
| Svaren | azure-ai-agentserver-responses |
Azure.AI.AgentServer.Responses |
/responses |
Konversationschattrobotar, strömning, multi-turn med plattformshanterad historik |
| Anrop | azure-ai-agentserver-invocations |
Azure.AI.AgentServer.Invocations |
/invocations |
Webhook-mottagare, icke-konversationsbearbetning, anpassade asynkrona arbetsflöden |
| Anrop (WebSocket) | azure-ai-agentserver-invocations |
Azure.AI.AgentServer.Invocations |
/invocations_ws |
Dubbelriktad direktuppspelning: röstagenter i realtid, interaktiva medier |
WebSocket-protokollet använder identifieraren invocations_ws och levereras i samma azure-ai-agentserver-invocations paket som HTTP-vägen /invocations , så att en container kan hantera båda. Använd den när du behöver beständig direktuppspelning med full duplex – till exempel genom att skicka mikrofon-PCM till agenten och ta emot syntetiserat ljud tillbaka. För röstscenarier, se Skapa en röstagent med värdbaserade agenter.
En enda container kan exponera flera protokoll samtidigt genom att deklarera dem när du skapar agenten – i protocols fältet azure.ai.agent för tjänsten i azure.yaml, ett SDK-anrop eller en REST API-begäran – och importera de bibliotek som krävs. Använd protokollbiblioteken inom ditt befintliga ramverk, oavsett om det är Microsoft Agent Framework, LangChain eller anpassad kod.
Protokollbibliotek för svar
Biblioteken Python och .NET för protokollet Svar implementerar API:et Azure AI-svar. Importera paketet och implementera en svarshanterare. Biblioteket hanterar routning, strömning med serverutskickade händelser (SSE), bakgrundskörning, annullering, cachelagring och livscykelhantering för svar.
Implementera en hanterare
Hanteraren är den kärnabstraktion som du implementerar. Biblioteket anropar den för varje inkommande begäran och levererar de returnerade händelserna till klienter via SSE. I Python dekorerar du en asynkron funktion med @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}")
Automatisk händelse- och livscykelhantering
Biblioteket hanterar händelsesekvensen – sekvensnummer, utdata- och innehållsindex och objekt-ID:t – och hela svarslivscykeln automatiskt, så att du inte spårar det här tillståndet själv. Varje händelse som din hanterare genererar motsvarar exakt en SSE-händelse, som värdplattformen hanterar åt dig.
Strömnings- och bakgrundslägen
- Strömningsläge (standard): SSE-händelser levereras i realtid till den anslutna klienten.
-
Bakgrundsläge: Hanteraren körs till slutförande utan en ansluten SSE-klient. Händelser är buffrade samt tillgängliga för uppspelning via
GET /responses/{id}.
Svarslivscykel
Biblioteket samordnar hela svarslivscykeln: created - ->in_progress>completed (eller ).failedcancelled Biblioteket hanterar även annullering, felhantering och terminalhändelsegarantier automatiskt.
Trådsäkerhet
Hanterarinstanser begränsas per begäran, så tillstånd per begäran läcker inte mellan begäranden. Biblioteket hanterar samtidiga begäranden på ett säkert sätt.
Körbara exempel finns i Python bring-your-own-exempel.
Hälsoslutpunkter
Protokollbiblioteken exponerar automatiskt en /readiness slutpunkt för plattformshälsokontroller. Du behöver inte implementera detta själv.
Port
Containrar hanterar trafik på port 8088 lokalt. I produktionsmiljö hanterar Foundry-gatewayen dirigeringen – containern behöver inte exponera en offentlig port.
Plattformsinmatade miljövariabler
Plattformen för värdbaserade agenter injicerar automatiskt miljövariabler i din container under körning. Koden kan läsa dessa variabler utan att deklarera dem i env kartan över azure.ai.agent tjänsten i azure.yaml eller i SDK- och REST-miljövariabelinställningarna. Prefixet FOUNDRY_* är reserverat för plattformsanvändning.
| Variabel | Syfte |
|---|---|
FOUNDRY_PROJECT_ENDPOINT |
Endpoint-URL för Foundry-projekt |
FOUNDRY_PROJECT_ARM_ID |
Gjuteriprojektet – ARM-resurs-ID |
FOUNDRY_AGENT_NAME |
Namn på den körande agenten |
FOUNDRY_AGENT_VERSION |
Version av agenten som körs |
FOUNDRY_AGENT_SESSION_ID |
Sessions-ID för den aktuella begäran (endast värdbaserade containrar) |
APPLICATIONINSIGHTS_CONNECTION_STRING |
Telemetri-anslutningssträng för Application Insights |
Omdeklarera inte plattformsinmatade variabler i azure.yaml – de anges automatiskt.
Variabler som du deklarerar själv, till exempel MODEL_DEPLOYMENT_NAME eller MCP-slutpunkter för verktygslådan, finns på env kartan över azure.ai.agent tjänsten i azure.yaml eller SDK-anropet create_version .
Viktigt
När du distribuerar din värdbaserade agent till Foundry Agent Service matar plattformen automatiskt in en Application Insights-reťazec pripojenia i din agentcontainer som en miljövariabel, vilket aktiverar OpenTelemetry-spårning som standard. Om du vill visa distribuerade spårningar, begäranden och beroenden öppnar du Application Insights-resursen som etablerades under installationen i Azure-portalen och går till Undersök > transaktionssökning eller prestanda. Använd azd ai agent monitor för livekonsol-loggar. När AppInsights är aktiverat loggar det här projektet spårningar för att övervaka och utvärdera interaktioner på användarnivå med agenter. Projektmedlemmar som har tilldelats rollen Log Analytics Reader i AppInsights kan visa spårdata, som kan innehålla personuppgifter och/eller kundinnehåll. Om de underliggande Log Analytics tabellerna skyddas behöver medlemmarna i stället rollen Privileged Monitoring Data Reader för att kunna visa dessa spårningsdata. Granska vilka spårningsdata som samlas in och vem som kan visa och använda dessa data. Ytterligare Azure Monitor App Insights-prisinformation kan gälla.
Läs mer.
Referera till projektanslutningar i miljövariabler
I stället för att hårdkoda hemligheter (API-nycklar, token, slutpunkter) till azure.yaml eller din bild kan du hämta dem från en Foundry-projektanslutning vid sandbox-start. Alla värden som du deklarerar som miljövariabler kan vara platshållaruttryck som plattformen löser ut innan containern startar.
Syntax för platshållare
En platshållare har formuläret ${{connections.<name>.<path>}}, där <name> är anslutningens resursnamn (visas i portalen under Hantera>Project information>Anslutna resurser) och <path> är något av:
| Sökväg | Löser till |
|---|---|
credentials.<field> |
Ett hemligt fält på anslutningen |
target |
Anslutningens egenskap (till exempel en slutpunkts-URL target ) |
metadata.<field> |
Ett fält under anslutningen metadata |
Vilket fältnamn som ska användas beror på anslutningskategorin:
| Anslutningskategori | Fältnamn i platshållaren |
|---|---|
ApiKey, AppInsights |
Always key– till exempel credentials.key |
CustomKeys |
Det nyckelnamn som du angav när du skapade anslutningen– till exempel credentials.github_token |
Example
Skapa först en CustomKeys anslutning för projektet som innehåller hemligheten. Se Lägg till en ny anslutning i Microsoft Foundry. Referera sedan till den från kartan env i azure.ai.agent tjänsten i azure.yaml:
services:
my-agent:
host: azure.ai.agent
env:
MODEL_DEPLOYMENT_NAME: gpt-5-mini
GITHUB_TOKEN: ${{connections.agent-secrets.credentials.github_token}}
Vid sandbox-start löser Foundry platshållaren och matar in det lösta värdet som en vanlig miljövariabel. Koden läser den som alla andra miljövariabler:
import os
token = os.environ["GITHUB_TOKEN"]
En GET på agentversionen returnerar literaltexten ${{...}} – den lösta hemligheten upprepas aldrig via hanterings-API:et.
Considerations
- Skapa anslutningen innan du distribuerar versionen. Om anslutningen eller det refererade fältet saknas vid sandbox-start löses inte platshållaren och variabeln är tom.
- Hemligheter är skrivskyddade. GET för en anslutning returnerar
credentials: null. Kontrollera lösningen genom att läsa env var inifrån containern som körs, inte genom att inspektera anslutningen. - Anteckna
CustomKeysfältnamn själv. Hanterings-API:t returnerar dem aldrig efter att de har skapats. Behåll dem intill agentens källfiler (till exempel i IaC-mallar eller tillsammans medazure.yaml) så att du senare kan konstruera platshållare utan att behöva gissa. - Foundry hanterar namnet på den underliggande hemligheten. När du skapar anslutningen lagrar Foundry värdet i Key Vault under ett namn som det väljer – du kan inte referera till en befintlig Key Vault hemlighet efter namn. Om du vill ansluta ditt eget Key Vault som bakomliggande lagringsplats, se Konfigurera en anslutning till Key Vault.
Paketera och testa din agent lokalt
Innan du distribuerar till Foundry kontrollerar du att agenten fungerar lokalt med hjälp av protokollbiblioteket. Containern hanterar samma slutpunkter lokalt som i produktion.
Testa svarprotokollet
POST http://localhost:8088/responses
Content-Type: application/json
{
"input": "Where is Seattle?",
"stream": false
}
Testa anropsprotokollet
POST http://localhost:8088/invocations
Content-Type: application/json
{
"message": "Hello!"
}
Distribuera med hjälp av Azure Developer CLI eller VS Code
AZURE Developer CLI (azd) och Microsoft Foundry Toolkit för Visual Studio Code automatisera hela distributionslivscykeln: skapa containern, push-överföra den till Azure Container Registry, skapa agentversionen och tilldela RBAC-roller. En guidad genomgång för första gången finns i Snabbstart: Skapa och distribuera en värdbaserad agent.
Distribuera med ett kommando
Från din agentprojektkatalog etablerar du infrastruktur och distribuerar i ett enda steg:
azd up
azd up kombinerar azd provision, som skapar Foundry-projektet, modelldistributionen, containerregistret, Application Insights och den hanterade identiteten med azd deploy. Använd den för första gången distributioner eller när du ändrar både infrastruktur och agentkod.
Endast distribuera kodändringar
Om du redan har etablerat dina Azure resurser och bara behöver skicka en ny agentversion:
azd deploy
Under azd deploy kommer CLI:n att:
- Skapar containeravbildningen via fjärranslutning i Azure Container Registry, så du behöver inte lokal Docker.
- Skickar avbilden till registret.
- Skapar en värdbaserad agentversion på Foundry Agent Service.
- Skapar en dedikerad Microsoft Entra agentidentitet och tilldelar de RBAC-roller som agenten behöver för att komma åt modeller och verktyg.
Hantera versioner
Varje azd deploy skapar en ny version av agenten. CLI bevarar tidigare versioner och den senaste versionen är aktiv som standard.
Verifiera driftsättningen
azd ai agent show
Utdata innehåller agentnamn, version, protokoll, containerresurser, miljövariabler och tidsstämpel för skapande. Använd --output table för sammanfattningsvy.
Skapa avbildningar lokalt
Som standard bygger azd containeravbilder på distans i Azure Container Registry. Om du vill skapa avbildningar lokalt anger du remoteBuild: false i azure.yaml. Lokala versioner kräver Docker Desktop.
För att granska uppmaningar och svar mot en policy för innehållssäkerhet lägger du till ett skyddsräcke för innehållssäkerhet i din agent.
Distribuera med hjälp av Python SDK
Använd SDK när du vill hantera agentdistributioner direkt från Python kod.
Ytterligare förutsättningar
En containeravbildning i Azure Container Registry
Container Registry Repository Writer eller AcrPush-rollen i containerregistret (för att skicka avbildningar)
Azure AI Projects SDK version 2.3.0 eller senare
pip install "azure-ai-projects>=2.3.0"
Skapa och push-överföra containeravbildningen
Skapa docker-avbildningen:
docker build --platform linux/amd64 -t myagent:v1 .Push-överför till Azure Container Registry:
az acr login --name myregistry docker tag myagent:v1 myregistry.azurecr.io/myagent:v1 docker push myregistry.azurecr.io/myagent:v1
Tips
Använd unika avbildningstaggar istället för :latest i reproducerbara distribueringar.
Konfigurera behörigheter för containerregister
Ge projektets hanterade identitet åtkomst för att hämta bilder:
I Azure-portalen går du till din Foundry-projektresurs.
Välj Identitet och kopiera objekt-ID (huvudnamn) under Systemtilldelad.
Tilldela rollen Container Registry Repository Reader till den här identiteten i containerregistret. Se Azure Container Registry roller och behörigheter.
Skapa en värdbaserad agentversion
När du skapar en version etablerar plattformen automatiskt agenten. Det finns inget separat startsteg. Plattformen skapar en ögonblicksbild av containern och gör agenten redo att hantera begäranden.
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}")
Om du vill exponera båda protokollen skickar du båda i protocol_versions:
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"),
],
Nyckelparametrar:
| Parameter | Beskrivning |
|---|---|
agent_name |
Unikt namn (alfanumeriskt med bindestreck, högst 63 tecken) |
container_configuration.image |
Fullständig URL för Azure Container Registry-avbild med tagg |
cpu |
CPU-allokering (till exempel "1") |
memory |
Minnesallokering (till exempel "2Gi") |
protocol_versions |
Protokoll som containern exponerar (responses, invocationseller båda) |
Information om hur du anger när sessionsberäkningen blir inaktiv finns i Hantera sessionsinaktivitet.
Sök efter versionsstatus
När du har skapat en version, kontrollera regelbundet tills statusen är active innan du anropar agenten. Konfigureringen tar vanligtvis mindre än en minut beroende på bildstorleken.
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)
Versionsstatusvärden:
| Status | Beskrivning |
|---|---|
creating |
Infrastrukturetablering pågår |
active |
Agenten är redo att hantera begäranden |
failed |
Etablering misslyckades - kontrollera fältet error för detaljer |
deleting |
Versionen håller på att rensas upp |
deleted |
Versionen har tagits bort helt |
Anropa agenten
När versionen har nått active status använder du get_openai_client för att skapa en OpenAI-klient som är bunden till agentens slutpunkt.
För protokollet Svar :
# 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)
För protokollet Anrop anropar du slutpunkten för anrop direkt:
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())
Mer fullständiga exempel finns i exemplen på värdbaserad agent.
Distribuera med JavaScript/TypeScript SDK
Använd SDK när du vill hantera agentdistributioner direkt från Node.js kod. SDK-anroparen körs i Node.js, men själva containeravbildningen kör fortfarande din Python- eller .NET agentkod som skapats med protokollbiblioteken Svar eller anrop – det finns ingen Node.js värdbaserad agentkörning.
Ytterligare förutsättningar
En containeravbildning i Azure Container Registry
Container Registry Repository Writer eller AcrPush-rollen i containerregistret (för att skicka avbildningar)
Paketen
@azure/ai-projectsoch@azure/identitynpm install @azure/ai-projects @azure/identity
Innan du börjar skapar och överför du containeravbildningen till Azure Container Registry (se fliken Python för exempel på Docker-kommandon) och beviljar projektets hanterade identitet rollen Container Registry Repository Reader på registret.
Skapa en värdbaserad agentversion
När du skapar en version etablerar plattformen automatiskt agenten. Det finns inget separat startsteg. Plattformen skapar en ögonblicksbild av containern och gör agenten redo att hantera begäranden.
import { AIProjectClient } from "@azure/ai-projects";
import { DefaultAzureCredential } from "@azure/identity";
// Format: "https://resource_name.services.ai.azure.com/api/projects/project_name"
const projectEndpoint =
process.env["FOUNDRY_PROJECT_ENDPOINT"] || "your_project_endpoint";
const agentName = "my-agent";
const project = new AIProjectClient(
projectEndpoint,
new DefaultAzureCredential(),
);
// Create a hosted agent version
const agent = await project.agents.createVersion(agentName, {
kind: "hosted",
cpu: "1",
memory: "2Gi",
container_configuration: {
image: "your-registry.azurecr.io/your-image:tag",
},
protocol_versions: [{ protocol: "responses", version: "1.0.0" }],
environment_variables: { MODEL_DEPLOYMENT_NAME: "gpt-5-mini" },
});
console.log(`Agent created: ${agent.name}, version: ${agent.version}`);
Om du vill exponera båda protokollen skickar du båda i protocol_versions:
protocol_versions: [
{ protocol: "responses", version: "1.0.0" },
{ protocol: "invocations", version: "1.0.0" },
{ protocol: "invocations_ws", version: "1.0.0" },
],
Sök efter versionsstatus
När du har skapat en version, kontrollera regelbundet tills statusen är active innan du anropar agenten. Konfigureringen tar vanligtvis mindre än en minut beroende på bildstorleken.
function sleep(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
// Poll until the agent version is active
for (;;) {
const versionInfo = await project.agents.getVersion(
agentName,
agent.version,
);
console.log(`Status: ${versionInfo.status}`);
if (versionInfo.status === "active") {
break;
}
if (versionInfo.status === "failed") {
console.log(`Provisioning failed: ${versionInfo.error}`);
break;
}
await sleep(5_000);
}
Dirigera agentslutpunkten och anropa den
Dirigera agentslutpunkten till den version som du skapade och bind sedan en OpenAI-klient till slutpunkten.
För protokollet Svar :
await project.agents.patchAgentObject(agentName, {
agentEndpoint: {
version_selector: {
version_selection_rules: [
{
type: "FixedRatio",
agent_version: agent.version,
traffic_percentage: 100,
},
],
},
protocol_configuration: { responses: {} },
},
});
// Create an OpenAI client bound to the agent endpoint
const openAIClient = project.getOpenAIClient({
azureConfig: { allowPreview: true, agentName },
});
const response = await openAIClient.responses.create({
input: "Hello! What can you do?",
});
console.log(response.output_text);
För protokollet Anrop anropar du slutpunkten för anrop direkt:
const credential = new DefaultAzureCredential();
const token = await credential.getToken("https://ai.azure.com/.default");
if (!token) {
throw new Error("Failed to acquire an access token.");
}
const url = `${projectEndpoint}/agents/my-agent/endpoint/protocols/invocations`;
const response = await fetch(`${url}?api-version=v1`, {
method: "POST",
headers: {
Authorization: "Bearer " + token.token,
"Content-Type": "application/json",
},
body: JSON.stringify({ message: "Process this task" }),
});
console.log(await response.json());
Referens: AIProjectClient
Distribuera med REST API:et
Använd REST-API:et för direkta HTTP-baserade distributioner eller när du integrerar med anpassade verktyg.
Innan du börjar, bygg och pusha din containeravbildning till Azure Container Registry och tilldela projektets hanterade identitet rollen Container Registry Repository Reader för registret.
Konfigurera variabler
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)
Skapa en agent
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"
}
}
}'
När du skapar en agent skapas även version 1 och provisionering initieras.
Information om hur du anger när sessionsberäkningen blir inaktiv finns i Hantera sessionsinaktivitet.
Om du vill skärma uppmaningar och svar mot en innehållssäkerhetsprincip inkluderar du ett rai_config objekt i definition. Se Lägga till ett skyddsräcke för innehåll till en värdbaserad agent.
Sök efter versionsstatus
Kontrollera versionsslutpunkten tills status är active:
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
Anropa agenten
Använd agentens dedikerade slutpunkt för att skicka begäranden. Ange "stream": true för att ta emot server-skickade händelser.
Svarsprotokoll:
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
}'
Anropsprotokoll:
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"
}'
Skapa en ny version
Distribuera uppdaterad kod eller konfiguration genom att skapa en ny version:
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"
}
}
}'
Rensa resurser
Rensa resurser när du är klar för att förhindra avgifter. Plattformen avetablerar agentens beräkningsresurser efter den konfigurerade tidsgränsen för inaktivitet, som standard 15 minuter, så det uppstår ingen kostnad när en agent inte betjänar förfrågningar.
Azure CLI-rensning för utvecklare
azd down
SDK-rensning
Ta bort en enskild version:
project.agents.delete_version(agent_name="my-agent", agent_version=agent.version)
Eller ta bort hela agenten och alla dess versioner. Använd force=True för att ta bort aktiva sessioner, till exempel direkt efter att du anropat agenten. Utan det misslyckas anropet med ett konfliktfel medan sessioner är aktiva:
project.agents.delete(agent_name="my-agent", force=True)
SDK-rensning
Ta bort en enskild version:
await project.agents.deleteVersion("my-agent", agent.version);
Eller ta bort hela agenten och alla dess versioner:
await project.agents.delete("my-agent", { force: true });
Referens: AIProjectClient
REST API-rensning
Ta bort en enskild version:
curl -X DELETE "$BASE_URL/agents/my-agent/versions/1?api-version=$API_VERSION" \
-H "Authorization: Bearer $TOKEN"
Eller ta bort hela agenten:
curl -X DELETE "$BASE_URL/agents/my-agent?api-version=$API_VERSION" \
-H "Authorization: Bearer $TOKEN"
Varning
Om du tar bort en agent tas alla dess versioner bort och aktiva sessioner avslutas. Det går inte att ångra den här åtgärden.
Felsökning
Etableringsfel visas på versionsobjektets error.code och error.message-fältet. Kontrollera versionsstatusen när du har skapat den för att identifiera problem.
| Felkod | HTTP-kod | Lösning |
|---|---|---|
image_pull_failed |
400 | Verifiera avbildningens URI. Bekräfta att den projekthanterade identiteten har Container Registry Repository Reader på ACR och att registrets azureADAuthenticationAsArmPolicy principstatus är enabled |
SubscriptionIsNotRegistered |
400 | Registrera prenumerationsprovidern |
InvalidAcrPullCredentials |
401 | Åtgärda hanterad identitet eller registeret-RBAC |
UnauthorizedAcrPull |
403 | Ange rätt autentiseringsuppgifter eller identitet |
AcrImageNotFound |
404 | Korrigera bildnamn/tagg eller publicera bild |
RegistryNotFound |
400/404 | Åtgärda register-DNS eller nätverkstillgänglighet |
Kontakta supporten för Microsoft för 5xx-fel.
Detaljerade RBAC-krav och behörighetsfelsökning finns i Referens för värdbaserade agentbehörigheter.