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 gehostete Agents aus der ersten öffentlichen Vorschau zur neuesten Version des Foundry Agent Service migrieren. Die neueste Version führt ein neues Hosting-Back-End, Protokollbibliotheken, Identitätsmodell und Verwaltungs-APIs ein.
Important
Das anfängliche öffentliche Vorschauhosting-Back-End wird eingestellt. Sie müssen Ihre Agents erneut bereitstellen, indem Sie das in diesem Artikel beschriebene neue Modell verwenden. Vorhandene Agentbereitstellungen im alten Back-End werden nicht automatisch migriert und nur bis zum 20. August 2026 unterstützt.
Dieses Handbuch gilt für Sie, wenn Sie einen gehosteten Agent vor April 2026 mit den azure-ai-agentserver-agentframework Oder azure-ai-agentserver-langgraph Paketen oder benutzerdefinierten Code bereitgestellt haben, der die anfänglichen Vorschauhosting-APIs verwendet hat.
Wenn Sie einen Codierungs-Agent wie GitHub Copilot verwenden, kann die Microsoft Foundry Skill Ihre vorhandene Vorschaubereitstellung dem neuesten Hostingmodell zuordnen und Befehle oder Code aktualisieren.
Was sich geändert hat
Die neueste Version erweitert die bestehende Plattform um ein sitzungsbasiertes Sandbox-Modell. Wichtige Änderungen:
- Automatischer Computelebenszyklus – Keine manuelle Start-, Stopp- oder Replikatverwaltung. Die Plattform stellt Computeressourcen bereit, wenn eine Anfrage eingeht, und gibt die Computeressourcen nach dem konfigurierten Leerlauftimeout (standardmäßig 15 Minuten) wieder frei. Siehe CLI-Befehlszuordnung.
-
Sitzungsbasierte Isolation – Jede Sitzung erhält eine eigene Sandbox mit persistentem
$HOMEund/filesSpeicher, der über Runden und Leerlaufzeiten hinweg bestehen bleibt. -
Protokollbibliotheken ersetzen Frameworkadapter – Die frameworkspezifischen Adapterpakete (
azure-ai-agentserver-agentframework,azure-ai-agentserver-langgraph) werden durch protokollspezifische Bibliotheken (azure-ai-agentserver-responses,azure-ai-agentserver-invocations) ersetzt. Siehe Protokollbibliothek und Frameworkmigration. - Dedizierte Agentidentität bei der Bereitstellung – Jeder Agent erhält seine eigene Entra-Identität bei der Erstellung und ersetzt das gemeinsam genutzte projektverwaltete Identitätsmodell. Siehe Identitäts- und RBAC-Änderungen.
-
Dedizierter Agent-Endpunkt – Jeder Agent erhält eine eigene Endpunkt-URL (z. B
{project_endpoint}/agents/{name}/endpoint/protocols/openai/responses. ). Das Routing erfolgt nicht mehr über einen freigegebenen Projektendpunkt mitagent_referenceim Anforderungstext. Siehe Agent-Aufrufänderungen. - Neue Protokolle – Aufrufe, Aktivitäts- und A2A-Protokolle werden mit dem vorhandenen Antwortprotokoll verknüpft. Ein einzelner Agent kann mehrere Protokolle gleichzeitig verfügbar machen.
- REST-API für den vollständigen Lebenszyklus – vollständige REST-Abdeckung für Agent-, Versions-, Sitzungs- und Dateivorgänge. Siehe SDK-Methodenänderungen.
- Die Erstellung von Capability Hosts wurde entfernt – Die Plattform übernimmt die automatische Bereitstellung der Infrastruktur. Sie müssen keinen Fähigkeits-Host auf Kontoebene mehr erstellen. Siehe Entfernte APIs.
Voraussetzungen
Azure AI Projects SDK Version 2.3.0 oder höher (war 2.0.0).
Azure Developer CLI , Version 1.23.0 oder höher mit der aktualisierten Foundry Agents-Erweiterung:
azd ext install azure.ai.agents
Migrationsschritte auf einen Blick
Die folgenden Schritte fassen die End-to-End-Migration zusammen. Jeder verbindet mit dem detaillierten Abschnitt.
- Aktualisieren Sie Protokollbibliotheken und Agentcode – Ersetzen Sie Frameworkadapter durch die neuen Protokollbibliotheken, und aktualisieren Sie ihren Agent-Einstiegspunkt. Wählen Sie Ihren Pfad aus: Agent Framework, LangGraph oder custom/BYO.
- Aktualisieren von API-, CLI- und SDK-Aufrufen – Entfernen Sie eingestellte CLI-Befehle, aktualisieren Sie SDK-Methoden, und wechseln Sie zum dedizierten Agentendpunkt. Siehe Entfernte APIs, CLI-Befehlszuordnung, SDK-Methodenänderungen und Agent-Aufrufänderungen.
- Aktualisierung von Identität und RBAC – Gewähren des nachgeschalteten Ressourcenzugriffs auf die dedizierte Entra-Identität des Agents. Siehe Identitäts- und RBAC-Änderungen.
-
Aktualisieren Sie die Azure Developer CLI-Tools – Installieren Sie die neueste
azdFoundry-Agents-Erweiterung und aktualisieren Sieazure.yaml. Siehe Änderungen der Azure Developer CLI. -
Erneutes Bereitstellen und Überprüfen – Erstellen Sie Ihr Container-Image, stellen Sie mit
azd upoder dem SDK bereit, und bestätigen Sie, dass die Version denactive-Status erreicht.
Eine Aufgaben-nach-Vorgang-Zusammenfassung finden Sie in der Migrationsprüfliste am Ende dieses Artikels.
Protokollbibliothek und Frameworkmigration
Die anfängliche Vorschau verwendet frameworkspezifische Adapterpakete (azure-ai-agentserver-agentframework, azure-ai-agentserver-langgraph), die Ihren Agentcode umschlossen. Die neueste Version ersetzt diese Pakete durch protokollspezifische Bibliotheken und aktualisierte Framework-Integrationspakete.
Ihr Migrationspfad hängt davon ab, welches Framework Sie verwenden:
-
Microsoft Agent Framework – Verwenden Sie die aktualisierten Agent Framework-Pakete mit der
ResponsesHostServerBrücke. -
LangGraph – Verwenden Sie die
azure-ai-agentserver-responsesProtokollbibliothek direkt mitResponsesAgentServerHost. -
CrewAI, Semantischer Kernel oder benutzerdefinierter Code – Verwenden Sie die Protokollbibliotheken direkt (
azure-ai-agentserver-responsesoderazure-ai-agentserver-invocations).
Paketänderungen
Protokollbibliotheken (alle Benutzer)
| Anfängliches Vorschaupaket | Ersetzung durch die neueste Version |
|---|---|
azure-ai-agentserver-core |
azure-ai-agentserver-core 2.0.0b1 – noch erforderlich, jetzt automatisch als Abhängigkeit der Protokollpakete installiert |
azure-ai-agentserver-agentframework |
Entfernt – siehe Pfade zu Agent Framework oder Protokollbibliotheken unten |
azure-ai-agentserver-langgraph |
Entfernt – Verwenden Sie azure-ai-agentserver-responses oder azure-ai-agentserver-invocations direkt |
Azure.AI.AgentServer.Core(.NET) |
Azure.AI.AgentServer.Core 1.0.0-beta.21 – noch als Abhängigkeit erforderlich |
Azure.AI.AgentServer.AgentFramework(.NET) |
Azure.AI.AgentServer.Responses 1.0.0-beta.1 oder Azure.AI.AgentServer.Invocations 1.0.0-beta.1 |
Agent Framework-Pakete (nur Agent Framework-Benutzer)
Die Agent Framework-Pakete werden auch für die neueste Version aktualisiert:
| Erste Vorschau | Neueste Version |
|---|---|
agent-framework (einzelnes Paket) |
agent-framework-core
agent-framework-openai
agent-framework-foundry
agent-framework-orchestrations
|
AzureAIAgentClient |
FoundryChatClient (von agent_framework.foundry) |
ChatAgent |
Agent (von agent_framework) |
@ai_function Dekorateur |
@tool Dekorator mit approval_mode Parameter |
| Nicht verfügbar |
agent-framework-foundry-hosting — Brücke zwischen Agent-Framework und der Protokollbibliothek |
Migrieren von Agent Framework-Agents
Wenn Ihr Agent das Microsoft Agent Framework verwendet, verwenden Sie die ResponsesHostServer Brücke von agent-framework-foundry-hosting. Dieser Ansatz behält Ihren Agent Framework-Code (Agentdefinition, Tools, Anweisungen) bei der Verwendung der neuen Protokollbibliothek unter der Haube intakt.
Erste Vorschau:
from azure.ai.agentserver.agentframework import from_agent_framework
from agent_framework import ai_function, ChatAgent
from agent_framework.azure import AzureAIAgentClient
client = AzureAIAgentClient(
project_endpoint=PROJECT_ENDPOINT,
model_deployment_name="gpt-4.1",
credential=DefaultAzureCredential(),
)
@ai_function
def get_weather(location: str) -> str:
"""Get the weather for a location."""
return f"The weather in {location} is sunny."
agent = ChatAgent(
chat_client=client,
instructions="You are a helpful assistant.",
tools=[get_weather],
)
if __name__ == "__main__":
from_agent_framework(agent).run()
Neueste Version:
import os
from agent_framework import Agent, tool
from agent_framework.foundry import FoundryChatClient
from agent_framework_foundry_hosting import ResponsesHostServer
from azure.identity import DefaultAzureCredential
from pydantic import Field
from typing_extensions import Annotated
client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["MODEL_DEPLOYMENT_NAME"],
credential=DefaultAzureCredential(),
)
@tool(approval_mode="never_require")
def get_weather(
location: Annotated[str, Field(description="The location to get the weather for.")],
) -> str:
"""Get the weather for a location."""
return f"The weather in {location} is sunny."
agent = Agent(
client=client,
instructions="You are a helpful assistant.",
tools=[get_weather],
default_options={"store": False},
)
server = ResponsesHostServer(agent)
server.run()
Wichtige Unterschiede:
-
AzureAIAgentClient->FoundryChatClient(vonagent_framework.foundry). -
ChatAgent->Agent(vonagent_framework). -
@ai_function->@tool(approval_mode="never_require")mitAnnotatedTyphinweisen für Parameterbeschreibungen. -
from_agent_framework(agent).run()->ResponsesHostServer(agent).run(). - Fügen Sie
default_options={"store": False}hinzu, da der Unterhaltungsverlauf von der Hostingplattform verwaltet wird.
Verwenden Sie client.get_mcp_tool() für MCP-Tools anstelle der Definition von Tools in der create_version API:
mcp_tool = client.get_mcp_tool(
name="GitHub",
url="https://api.githubcopilot.com/mcp/",
headers={"Authorization": f"Bearer {github_pat}"},
approval_mode="never_require",
)
agent = Agent(client=client, tools=[mcp_tool], ...)
Beispiele finden Sie in den Beispielen des vom Agent Framework gehosteten Agents.
Note
Bei der Migration des .NET (C#) Agent Frameworks wird das Muster verwendet, das AddFoundryResponses und MapFoundryResponses ASP.NET-Erweiterungen anstelle von ResponsesHostServer nutzt. Vollständige Beispiele finden Sie unter .NET Agent Framework-Beispielen für gehostete Agents.
Migrieren von LangGraph-Agents
Wenn Ihr Agent LangGraph verwendet, ersetzen Sie den azure-ai-agentserver-langgraph Adapter durch die azure-ai-agentserver-responses Protokollbibliothek. Ihre LangGraph-Agentlogik (Graphdefinition, Tools, LLM-Konfiguration) bleibt unverändert – nur der Einstiegspunkt für das Hosting ändert sich.
Erste Vorschau:
from azure.ai.agentserver.langgraph import from_langgraph
from langchain_openai import AzureChatOpenAI
from langgraph.prebuilt import create_react_agent
llm = AzureChatOpenAI(azure_endpoint=ENDPOINT, azure_deployment="gpt-4o", ...)
tools = [my_tool_a, my_tool_b]
graph = create_react_agent(llm, tools=tools, prompt=SYSTEM_PROMPT)
if __name__ == "__main__":
from_langgraph(graph).run()
Neueste Version:
import asyncio
import os
import httpx
from azure.ai.agentserver.responses import (
CreateResponse,
ResponseContext,
ResponsesAgentServerHost,
ResponsesServerOptions,
TextResponse,
)
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from langchain_core.messages import AIMessage, HumanMessage
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
FOUNDRY_PROJECT_ENDPOINT = os.environ["FOUNDRY_PROJECT_ENDPOINT"]
MODEL = os.environ.get("FOUNDRY_MODEL_NAME", "gpt-4.1")
_token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://ai.azure.com/.default"
)
# httpx auth hook that injects a fresh Microsoft Entra token on every request.
class _AzureTokenAuth(httpx.Auth):
def auth_flow(self, request):
request.headers["Authorization"] = f"Bearer {_token_provider()}"
yield request
llm = ChatOpenAI(
base_url=f"{FOUNDRY_PROJECT_ENDPOINT}/openai/v1",
api_key="placeholder", # overridden by _AzureTokenAuth
model=MODEL,
use_responses_api=True,
http_client=httpx.Client(auth=_AzureTokenAuth()),
)
tools = [my_tool_a, my_tool_b]
graph = create_react_agent(llm, tools=tools, prompt=SYSTEM_PROMPT)
app = ResponsesAgentServerHost(
options=ResponsesServerOptions(default_fetch_history_count=20)
)
@app.response_handler
async def handle(
request: CreateResponse,
context: ResponseContext,
cancellation_signal: asyncio.Event,
):
async def run_graph():
try:
history = await context.get_history()
except Exception:
history = []
user_input = await context.get_input_text() or ""
# Convert platform history to LangChain messages
lc_messages = []
for item in history:
if hasattr(item, "content"):
for c in item.content:
if hasattr(c, "text") and c.text:
if item.role == "user":
lc_messages.append(HumanMessage(content=c.text))
else:
lc_messages.append(AIMessage(content=c.text))
lc_messages.append(HumanMessage(content=user_input))
result = await graph.ainvoke({"messages": lc_messages})
raw = result["messages"][-1].content
if isinstance(raw, list):
yield "".join(
block.get("text", "") if isinstance(block, dict) else str(block)
for block in raw
)
else:
yield raw or ""
return TextResponse(context, request, text=run_graph())
if __name__ == "__main__":
app.run()
Wichtige Unterschiede:
-
azure-ai-agentserver-langgraph->azure-ai-agentserver-responses. Der langGraph-spezifische Adapter wird entfernt. -
from_langgraph(graph).run()-> ExpliziterResponsesAgentServerHostmit einem@app.response_handler, der eineTextResponsezurückgibt. - Verwendet
ChatOpenAImitbase_url=f"{FOUNDRY_PROJECT_ENDPOINT}/openai/v1"stattAzureChatOpenAI. Dies verwendet den projektbezogenen Endpunkt, der nur Berechtigungen auf Projektebene erfordert. - Der Unterhaltungsverlauf wird mit
context.get_history()abgerufen und in LangChain-Nachrichtentypen konvertiert, um mehrteilige Unterhaltungen zu unterstützen. - Die Logik des LangGraph-Agents (Tools, Diagrammerstellung) ist unverändert. Verwenden Sie
ResponseEventStreamfür eine differenzierte Kontrolle über Funktionsaufrufe, Gründe für Elemente oder mehrere Ausgabetypen anstelle vonTextResponse.
MCP Toolbox-Integration
Um Ihren LangGraph-Agenten über MCP mit den Tools in der Foundry Toolbox zu verbinden, verwenden Sie langchain-mcp-adapters innerhalb Ihres Handlers. Dynamisches Laden von Tools vom MCP-Endpunkt:
from langchain_mcp_adapters.tools import load_mcp_tools
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
@app.response_handler
async def handle(request, context, cancellation_signal):
user_input = await context.get_input_text()
endpoint = os.environ["TOOLBOX_ENDPOINT"]
token = DefaultAzureCredential().get_token("https://ai.azure.com/.default").token
headers = {
"Authorization": f"Bearer {token}",
"Foundry-Features": "Toolsets=V1Preview",
}
async with streamablehttp_client(endpoint, headers=headers) as (r, w, _):
async with ClientSession(r, w) as session:
await session.initialize()
tools = await load_mcp_tools(session)
graph = create_react_agent(llm, tools=tools, prompt=SYSTEM_PROMPT)
result = await graph.ainvoke(
{"messages": [{"role": "user", "content": user_input}]},
)
# ... extract answer and return TextResponse
Fügen Sie diese Pakete zu Ihrem requirements.txt:
langchain-mcp-adapters>=0.1.0
mcp>=1.0.0
Vollständige Beispiele finden Sie in den Beispielen für langGraph Hosted Agent.
Migrieren von benutzerdefinierten oder eigenen (BYO) Agents
Wenn Sie CrewAI, Semantischer Kernel oder anderen benutzerdefinierten Code verwenden, verwenden Sie die Protokollbibliothek direkt. Die Protokollbibliotheken sind frameworkagnostisch – Sie behandeln Orchestrierung, Tools und Arbeitsspeicher in Ihrem eigenen Code.
Antwortprotokoll — Verwenden Sie ResponsesAgentServerHost für Konversationsagenten. Registrieren Sie Ihren Handler mit dem @app.response_handler-Decorator:
import asyncio
from azure.ai.agentserver.responses import (
CreateResponse,
ResponseContext,
ResponsesAgentServerHost,
TextResponse,
)
app = ResponsesAgentServerHost()
@app.response_handler
async def handler(
request: CreateResponse,
context: ResponseContext,
cancellation_signal: asyncio.Event,
):
text = await context.get_input_text()
return TextResponse(context, request, text=f"Echo: {text}")
app.run()
Übergeben Sie für Streamingantworten eine asynchrone Iterable-Datei an TextResponse. Verwenden Sie ResponseEventStream für eine differenzierte Kontrolle über Funktionsaufrufe, Gründe für Elemente oder mehrere Ausgabetypen anstelle von TextResponse.
Invocations-Protokoll – Verwenden Sie InvocationAgentServerHost, um Agenten zu unterstützen, die beliebige JSON-Nutzlasten (Webhooks, nicht-konversationelle Verarbeitung) benötigen. Der Handler verwendet Starlette-Typen Request/Response direkt:
from azure.ai.agentserver.invocations import InvocationAgentServerHost
from starlette.requests import Request
from starlette.responses import JSONResponse, Response
app = InvocationAgentServerHost()
@app.invoke_handler
async def handle(request: Request) -> Response:
data = await request.json()
return JSONResponse({"greeting": f"Hello, {data['name']}!"})
app.run()
Das Aufrufprotokoll unterstützt auch zeitintensive Vorgänge mit dem @app.get_invocation_handler und dem @app.cancel_invocation_handler für Abfragen und Abbrüche.
Wählen Sie Ihr Protokoll basierend auf dem Interaktionsmuster Ihres Agents aus. Informationen zu den zu verwendenden Protokollen finden Sie unter " Was sind gehostete Agents" – Protokolle .
Änderung des Protokollversionsformats
Das Protokollversionsformat wurde von "v1" zu Semver "1.0.0" geändert:
# Initial preview
ProtocolVersionRecord(protocol=AgentEndpointProtocol.RESPONSES, version="v1")
# Latest version
ProtocolVersionRecord(protocol=AgentEndpointProtocol.RESPONSES, version="1.0.0")
Containerprotokoll 2.0.0
Version 2.0.0 des Containerprotokolls ändert, wie die Identität bei jeder Anforderung an Ihren Container und an nachgelagerte Aufrufe übermittelt wird. Version 1.0.0 ist veraltet. Nach Ablauf des Einstellungszeitraums blockiert die Plattform Anfragen an Agents, die weiterhin mit Protokoll 1.0.0 ausgeführt werden.
Mit Protokoll 2.0.0 kann eine Sitzung auch mehrere Benutzer sicher bedienen. Auf 1.0.0 ist eine Sitzung an die Identität eines einzelnen Anrufers gebunden, sodass gleichzeitige Benutzer in derselben Sitzung sich gegenseitig stören können. Auf 2.0.0 trägt jede Anforderung einen eigenen Benutzerkontext, sodass eine Sitzung viele Benutzer ohne Racing ihrer Identitäten bedienen kann.
| Aspekt | Protokoll 1.0.0 (veraltet) | Protokoll 2.0.0 (aktuell) |
|---|---|---|
| Absenderidentität | Die Plattform überträgt die Identität automatisch; der Container unternimmt nichts. | Der Container empfängt einen anforderungsbezogenen x-agent-foundry-call-id Header und leitet ihn bei ausgehenden Aufrufen an Foundry-Dienste weiter. |
| Benutzerspezifische Daten | Durch Isolationsschlüssel abgegrenzt. | Durch den x-agent-user-id Header begrenzt, den die Plattform einfügt. |
| Mehrere Benutzer pro Sitzung | Nicht unterstützt – eine Sitzung ist an die Identität eines Anrufers gebunden. | Unterstützt – jede Anforderung trägt einen eigenen Benutzerkontext. |
So migrieren Sie:
- Legen Sie die Containerprotokollversion im Dienst
2.0.0inazure.ai.agentaufazure.yamlfest. - Leiten Sie den anfragebezogenen
x-agent-foundry-call-idHeader bei ausgehenden Aufrufen an Foundry-Dienste (Storage, Toolbox und andere Agents) weiter. Die offiziellen SDK-Adapter tun dies automatisch, wenn Sie diese Dienste über ihre Clients aufrufen. Wenn Sie rohe HTTP-Aufrufe selbst ausführen, lesen Siex-agent-foundry-call-idaus der eingehenden Anfrage und fügen Siex-agent-foundry-call-idunverändert zu Ihrer ausgehenden Anfrage hinzu. Analysieren Sie den Wert nicht – die Plattform löst die Identität des Anrufers daraus auf. - Um Daten zu partitionieren, die Ihr Container pro Benutzer speichert, lesen Sie den
x-agent-user-idHeader. Ein Arbeitsbeispiel finden Sie unter Mehrere Benutzende in einer gehosteten Agentsitzung multiplexen.
Den vollständigen Satz von Plattformheadern und Umgebungsvariablen finden Sie unter Vertrag zur Laufzeit des gehosteten Agents.
Entfernte APIs
Die folgenden APIs aus der ersten Vorschau sind in der neuesten Version nicht verfügbar:
| Gelöschte API | Grund |
|---|---|
az cognitiveservices agent start |
Der Computelebenszyklus ist automatisch – kein manueller Start erforderlich |
az cognitiveservices agent stop |
Automatische Computebereitstellungen nach dem konfigurierten Leerlauftimeout |
az cognitiveservices agent update |
Ersetzt durch PATCH /agents/{name} für das Endpunktrouting; eine neue Version für Laufzeitänderungen erstellen |
az cognitiveservices agent delete-deployment |
Löschen Sie stattdessen die Version direkt. |
az cognitiveservices agent list-versions |
Verwenden Sie az rest --method GET mit der REST-API |
az cognitiveservices agent show |
Verwenden Sie az rest --method GET oder azd ai agent show |
Erstellung von Capability-Hosts (PUT .../capabilityHosts/accountcaphost) |
Plattform verarbeitet die Infrastruktur automatisch |
tools Parameter in create_version |
Auf die Tools wird zur Laufzeit über den MCP-Endpunkt der Foundry Toolbox zugegriffen. |
CLI-Befehlszuordnung
| Erste Vorschau-CLI | Neueste Versionsentsprechung |
|---|---|
az cognitiveservices agent start --name X --agent-version 1 |
Entfernt – Compute wird bei der ersten Anforderung automatisch gestartet. |
az cognitiveservices agent stop --name X --agent-version 1 |
Entfernt – Der Rechenvorgang wird automatisch bei Leerlaufzeitüberschreitung gestoppt. |
az cognitiveservices agent update --min-replicas N --max-replicas M |
Entfernt – keine Replikatverwaltung |
az cognitiveservices agent show --name X |
az rest --method GET --url "$BASE_URL/agents/X" --resource "https://ai.azure.com" |
az cognitiveservices agent list-versions --name X |
az rest --method GET --url "$BASE_URL/agents/X/versions" --resource "https://ai.azure.com" |
az cognitiveservices agent delete --name X |
az rest --method DELETE --url "$BASE_URL/agents/X" --resource "https://ai.azure.com" |
az cognitiveservices agent delete --name X --agent-version 1 |
az rest --method DELETE --url "$BASE_URL/agents/X/versions/1" --resource "https://ai.azure.com" |
az cognitiveservices agent delete-deployment --name X --agent-version 1 |
Entfernt – stattdessen die Version löschen |
Wo BASE_URL ist https://{account}.services.ai.azure.com/api/projects/{project}.
SDK-Methodenänderungen
| Erste Vorschau | Neueste Version |
|---|---|
pip install "azure-ai-projects>=2.0.0" |
pip install "azure-ai-projects>=2.3.0" |
project.get_openai_client() durch extra_body={"agent_reference": {"name": ..., "type": "agent_reference"}} |
project.get_openai_client(agent_name="my-agent") — Client ist vorgebunden, nicht extra_body erforderlich |
ProtocolVersionRecord(protocol=AgentEndpointProtocol.RESPONSES, version="v1") |
ProtocolVersionRecord(protocol=AgentEndpointProtocol.RESPONSES, version="1.0.0") |
tools=[...] in HostedAgentDefinition |
Entfernt – verwenden Sie stattdessen den MCP-Endpunkt der Foundry Toolbox. |
| Nicht verfügbar |
project.agents.create_session(agent_name, isolation_key=..., version_indicator=...)
.get_session()
.list_sessions()
.delete_session(isolation_key=...)
|
| Nicht verfügbar |
project.agents.download_session_file(path=...), .get_session_files(path=...).delete_session_file(path=...) |
| Nicht verfügbar |
project.agents.update_details() für versionsbasiertes Endpoint-Routing |
| Nicht verfügbar |
metadata={"enableVnextExperience": "true"} Parameter von client.agents.create_version() |
Agentaufrufänderungen
In der anfänglichen Vorschau erfolgte das Routing an Agents über einen freigegebenen Projektendpunkt, indem eine agent_reference im Anforderungstext übergeben wurde. In der neuesten Version erhält jeder Agent einen dedizierten Endpunkt und das SDK wird automatisch an ihn gebunden.
Erste Vorschau:
openai_client = project.get_openai_client()
response = openai_client.responses.create(
input=[{"role": "user", "content": "Hello!"}],
extra_body={"agent_reference": {"name": "my-agent", "type": "agent_reference"}}
)
Neueste Version:
openai_client = project.get_openai_client(agent_name="my-agent")
response = openai_client.responses.create(
input="Hello!",
)
print(response.output_text)
Der agent_name Parameter weist das SDK an, den dedizierten Endpunkt des Agents als Ziel zu verwenden. Verwenden Sie für REST-Anrufe den Agentendpunkt direkt:
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!", "model": "gpt-4.1", "stream": false}'
Note
Frühere Preview-Builds erfordern einen Foundry-Features: HostedAgents=V1Preview Header für REST-Aufrufe an gehostete Agent-Endpunkte.
azure-ai-projects Ab 2.3.0 für die GA-API v1 sind gehostete Agents allgemein verfügbar, und dieser Header ist nicht mehr erforderlich.
Aktive Endpunkte hängen von den Protokollen ab, die Sie in Ihrer Agentversionsdefinition deklarieren. Bei Antworten und Unterhaltungen läuft das Routing live im OpenAI-kompatiblen Namespace unter {project_endpoint}/agents/{name}/endpoint/protocols/openai/{responses|conversations}, bei Aufrufen, Aktivitäten und A2A dagegen direkt unter {project_endpoint}/agents/{name}/endpoint/protocols/{invocations|activityprotocol|a2a}.
Versionsstatusänderungen
Die Lebenszyklusstatus der Agents wurden von einem manuellen Zustandsautomat auf automatische Bereitstellungsstatus umgestellt:
| Anfänglicher Vorschauzustand | Aktueller Versionsstatus |
|---|---|
Stopped (anfänglich) |
Nicht zutreffend - kein angehaltener Zustand |
Starting ->Started |
creating ->active |
Failed |
failed |
Running- ->Stopping>Stopped |
Nicht anwendbar – Computeressource wird automatisch entfernt |
| Nicht verfügbar |
deleting ->deleted |
Identitäts- und RBAC-Änderungen
Das Identitätsmodell hat sich erheblich geändert:
| Aspekt | Erste Vorschau | Neueste Version |
|---|---|---|
| Nicht veröffentlichte Agent-Laufzeitidentität | Vom Projekt verwaltete Identität (gemeinsam genutzt) | Dedizierte Entra-Agent-Identität (pro Agent) |
| Beim Erstellen einer dedizierten Identität | Nur zum Zeitpunkt der Veröffentlichung | Zur Bereitstellungszeit (jeder Agent) |
| Projektverwaltete Identitätsrolle | Laufzeitidentität für alle unveröffentlichten Agents | Nur Infrastruktur – wird für das Pullen von Container-Images verwendet |
| Erforderliche Bereitstellungsrolle | Foundry Owner (neues Projekt), AI Owner + Contributor (neue Ressourcen) oder Reader + Foundry User (vorhandenes Projekt) | Foundry-Projektmanager im Projektumfang |
| RBAC-Neukonfiguration nach der Veröffentlichung | Erforderlich ist, dass Projekt-MI-Berechtigungen nicht auf die Identität des Agenten übertragen werden. | Nicht erforderlich – Agent hat seine eigene Identität von Anfang an |
Important
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.
Aktion erforderlich
- Aktualisieren von RBAC-Zuordnungen: Die verwaltete Projektidentität ist nicht mehr die Laufzeitidentität. Gewähren Sie stattdessen der Entra-Identität des Agents direkt RBAC-Rollen für alle nachgelagerten Azure-Ressourcen.
- Bereitstellungsrollen vereinfachen: Sie benötigen Foundry Project Manager auf Projektebene, um gehostete Agents zu erstellen und bereitzustellen.
Änderungen der Azure Developer CLI
Note
Agentmanifeste (agent.manifest.yaml) und eigenständige Agentdefinitionen (agent.yaml) sind veraltet. Ab den Foundry-Erweiterungen azd (azure.ai.agents 1.0.0-beta.1) leben alle gehosteten Agent-Konfigurationen in einem einzigen azure.yaml. Siehe Erstellen von azure.yaml für gehostete Agenten.
Aktualisierte Befehle
| Erste Vorschau | Neueste Version |
|---|---|
azd init -t https://github.com/Azure-Samples/azd-ai-starter-basic |
azd ai agent init (interaktive Vorlagenauswahl) |
azd ai agent init --project-id /subscriptions/.../projects/... |
Gleiche Syntax, weiterhin unterstützt |
azd up |
Dasselbe – Bereitstellung, Builds, Pushes, Erstellen von Versionen |
azd down |
Identisch – bereinigt Ressourcen |
| Nicht verfügbar |
azd ai agent show — Anzeigen des Agentstatus |
| Nicht verfügbar |
azd ai agent monitor — Echtzeitprotokolle und -status |
| Nicht verfügbar |
azd ai agent invoke --input "..." — Aufrufen des Agents |
| Nicht verfügbar |
azd ai agent files upload/list/download/remove — Sitzungsdateiverwaltung |
Aktion erforderlich
Aktualisieren Sie die Erweiterung "Foundry Agents":
azd ext install azure.ai.agentsWenn Ihr
azure.yamlin einemversion: "v1"-Dienst für Protokollversionenazure.ai.agentangibt, ändern Sie dies inversion: "1.0.0".
Protokollieren von Streamingänderungen
| Aspekt | Erste Vorschau | Neueste Version |
|---|---|---|
| Endpunkt | .../versions/{v}/containers/default:logstream |
.../versions/{v}/sessions/{sessionId}:logstream |
| Antwortformat | Nur-Text (segmentiert) | Server-Sent-Ereignisse (SSE) mit JSON-Datenlasten |
| Abfrageparameter |
kind=console\|system, tail=20replica_name |
Vereinfacht – keine Abfrageparameter erforderlich |
| Maximale Verbindung | 10 Minuten | 30 Minuten |
| Leerlauftimeout | 1 Minute | 2 Minuten |
| azd-Zugriff | Nicht verfügbar | azd ai agent monitor |
Bekannte Lücken
Die folgenden Funktionen aus der ersten Vorschau sind in der neuesten Version noch nicht verfügbar:
| Funktion | Status | Workaround |
|---|---|---|
az cognitiveservices agent CLI-Erweiterung |
Entfernt – keine CLI-Befehle von Erstanbieter | Verwendung az rest für REST-API-Aufrufe oder azd ai agent für Entwicklerworkflows |
| Nicht versionsbezogene Metadatenupdates (Beschreibung, Tags) | Noch nicht über SDK verfügbar | Verwenden Sie az rest --method PATCH mit der REST-API |
| Explizite Replikatskalierung (Min/Max-Replikate) | Ersetzt durch sitzungsbasierte automatische Skalierung | Sitzungen werden automatisch skaliert; keine Konfiguration erforderlich |
| Löschen der Bereitstellung ohne Löschen der Version | Nicht verfügbar | Löschen Sie die Version direkt; Erstellen einer neuen Version bei Bedarf |
Migrationscheckliste
Verwenden Sie diese Checkliste, um Ihre Migration nachzuverfolgen:
- Aktualisieren Sie
azure-ai-projectsdas SDK auf Version 2.1.0 oder höher. -
Agent Framework-Benutzer: Aktualisieren von Agent Framework-Paketen (
agent-framework-core,agent-framework-foundry,agent-framework-foundry-hostingund anderen). Ersetzen Siefrom_agent_framework(agent).run()durchResponsesHostServer(agent).run(). Aktualisieren SieAzureAIAgentClientaufFoundryChatClient,ChatAgentaufAgentund@ai_functionauf@tool. -
LangGraph-Benutzer: Ersetze
azure-ai-agentserver-langgraphdurchazure-ai-agentserver-responses. Ersetzen Siefrom_langgraph(graph).run()durch einenResponsesAgentServerHost-Handler, der eineTextResponsezurückgibt. Verwenden SieChatOpenAImit dem projektbezogenen Endpunkt anstelle vonAzureChatOpenAI. Fügen Sielangchain-mcp-adaptersundmcphinzu, wenn Sie die Foundry-Toolbox verwenden. -
Benutzerdefiniert/BYO: Ersetzen Sie Frameworkadapterpakete durch Protokollbibliotheken (
azure-ai-agentserver-responsesoderazure-ai-agentserver-invocations). Verwenden Sie zum Umschreiben von Agent-EinstiegspunktenResponsesAgentServerHostoderInvocationAgentServerHost. - Aktualisieren Sie die Protokollversionszeichenfolgen von
"v1"auf"1.0.0"im Code undazure.yaml. - Aktualisieren Sie
azure.yamlbei Verwendungazd(Protokollversionsformat und Agenteinstellungen unter demazure.ai.agentDienst). - Entfernen Sie
az cognitiveservices agentCLI-Aufrufe aus Skripts und CI/CD-Pipelines, ersetzen Sie sie durchaz restoderazd ai agentBefehle. - Entfernen Sie die Schritte zum Erstellen von Funktionshosts aus Bereitstellungsskripts.
- Agent-Aufrufcode aktualisieren –
project.get_openai_client(agent_name=...)anstelle vonextra_bodymitagent_referenceverwenden. - Überprüfen Sie RBAC – gewähren Sie nachgeschalteten Ressourcenzugriff auf die dedizierte Entra-Identität des Agents, nicht auf die vom Projekt verwaltete Identität.
- Aktualisieren Sie die Erweiterung
azdvon Foundry Agents auf die neueste Version. - Erstellen Sie ein Containerimage mit
--platform linux/amd64(sofern noch nicht geschehen). - Stellen Sie Ihren Agent mithilfe
azd upoder der SDK-Methodecreate_versionerneut bereit. - Überprüfen Sie, ob die neue Version den Status erreicht
active, bevor Datenverkehr gesendet wird.