Migrieren gehosteter Agents zur neuesten Version

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 $HOME und /files Speicher, 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 mit agent_reference im 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

Migrationsschritte auf einen Blick

Die folgenden Schritte fassen die End-to-End-Migration zusammen. Jeder verbindet mit dem detaillierten Abschnitt.

  1. 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.
  2. 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.
  3. 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.
  4. Aktualisieren Sie die Azure Developer CLI-Tools – Installieren Sie die neueste azd Foundry-Agents-Erweiterung und aktualisieren Sie azure.yaml. Siehe Änderungen der Azure Developer CLI.
  5. Erneutes Bereitstellen und Überprüfen – Erstellen Sie Ihr Container-Image, stellen Sie mit azd up oder dem SDK bereit, und bestätigen Sie, dass die Version den active-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 ResponsesHostServer Brücke.
  • LangGraph – Verwenden Sie die azure-ai-agentserver-responses Protokollbibliothek direkt mit ResponsesAgentServerHost.
  • CrewAI, Semantischer Kernel oder benutzerdefinierter Code – Verwenden Sie die Protokollbibliotheken direkt (azure-ai-agentserver-responses oder azure-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 (von agent_framework.foundry).
  • ChatAgent ->Agent (von agent_framework).
  • @ai_function ->@tool(approval_mode="never_require") mit Annotated Typhinweisen 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() -> Expliziter ResponsesAgentServerHost mit einem @app.response_handler, der eine TextResponse zurückgibt.
  • Verwendet ChatOpenAI mit base_url=f"{FOUNDRY_PROJECT_ENDPOINT}/openai/v1" statt AzureChatOpenAI. 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 ResponseEventStream für eine differenzierte Kontrolle über Funktionsaufrufe, Gründe für Elemente oder mehrere Ausgabetypen anstelle von TextResponse.

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:

  1. Legen Sie die Containerprotokollversion im Dienst 2.0.0 in azure.ai.agent auf azure.yaml fest.
  2. Leiten Sie den anfragebezogenen x-agent-foundry-call-id Header 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 Sie x-agent-foundry-call-id aus der eingehenden Anfrage und fügen Sie x-agent-foundry-call-id unverändert zu Ihrer ausgehenden Anfrage hinzu. Analysieren Sie den Wert nicht – die Plattform löst die Identität des Anrufers daraus auf.
  3. Um Daten zu partitionieren, die Ihr Container pro Benutzer speichert, lesen Sie den x-agent-user-id Header. 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

  1. 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.
  2. 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

  1. Aktualisieren Sie die Erweiterung "Foundry Agents":

    azd ext install azure.ai.agents
    
  2. Wenn Ihr azure.yaml in einem version: "v1"-Dienst für Protokollversionen azure.ai.agent angibt, ändern Sie dies in version: "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-projects das 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 Sie from_agent_framework(agent).run() durch ResponsesHostServer(agent).run(). Aktualisieren Sie AzureAIAgentClient auf FoundryChatClient, ChatAgent auf Agent und @ai_function auf @tool.
  • LangGraph-Benutzer: Ersetze azure-ai-agentserver-langgraph durch azure-ai-agentserver-responses. Ersetzen Sie from_langgraph(graph).run() durch einen ResponsesAgentServerHost-Handler, der eine TextResponse zurückgibt. Verwenden Sie ChatOpenAI mit dem projektbezogenen Endpunkt anstelle von AzureChatOpenAI. Fügen Sie langchain-mcp-adapters und mcp hinzu, wenn Sie die Foundry-Toolbox verwenden.
  • Benutzerdefiniert/BYO: Ersetzen Sie Frameworkadapterpakete durch Protokollbibliotheken (azure-ai-agentserver-responses oder azure-ai-agentserver-invocations). Verwenden Sie zum Umschreiben von Agent-Einstiegspunkten ResponsesAgentServerHost oder InvocationAgentServerHost.
  • Aktualisieren Sie die Protokollversionszeichenfolgen von "v1" auf "1.0.0" im Code und azure.yaml.
  • Aktualisieren Sie azure.yaml bei Verwendung azd (Protokollversionsformat und Agenteinstellungen unter dem azure.ai.agent Dienst).
  • Entfernen Sie az cognitiveservices agent CLI-Aufrufe aus Skripts und CI/CD-Pipelines, ersetzen Sie sie durch az rest oder azd ai agent Befehle.
  • Entfernen Sie die Schritte zum Erstellen von Funktionshosts aus Bereitstellungsskripts.
  • Agent-Aufrufcode aktualisieren – project.get_openai_client(agent_name=...) anstelle von extra_body mit agent_reference verwenden.
  • Ü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 azd von Foundry Agents auf die neueste Version.
  • Erstellen Sie ein Containerimage mit --platform linux/amd64 (sofern noch nicht geschehen).
  • Stellen Sie Ihren Agent mithilfe azd up oder der SDK-Methode create_version erneut bereit.
  • Überprüfen Sie, ob die neue Version den Status erreicht active , bevor Datenverkehr gesendet wird.

Nächste Schritte