Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra la migrazione degli agenti ospitati dall'anteprima pubblica iniziale all'anteprima pubblica aggiornata del servizio Foundry Agent. L'anteprima aggiornata introduce un nuovo back-end di hosting, librerie di protocolli, modello di identità e API di gestione.
Importante
Il back-end di hosting dell'anteprima pubblica iniziale viene ritirato. È necessario ridistribuire gli agenti usando il nuovo modello descritto in questo articolo. Le distribuzioni di agenti esistenti nel back-end precedente non verranno migrate automaticamente e saranno supportate solo fino al 22 maggio 2026.
Questa guida si applica all'utente se hai distribuito un agente ospitato prima di aprile 2026 usando i pacchetti azure-ai-agentserver-agentframework o azure-ai-agentserver-langgraph codice personalizzato che utilizzava le API di hosting dell'anteprima iniziale.
Cosa è cambiato
L'anteprima aggiornata aggiorna la piattaforma esistente con un modello sandbox basato su sessione. Modifiche chiave:
- Ciclo di vita di calcolo automatico : nessun avvio manuale, arresto o gestione delle repliche. La piattaforma effettua il provisioning delle risorse di calcolo quando arriva una richiesta e effettua il deprovisioning dopo 15 minuti di inattività. Vedi mappatura dei comandi CLI.
-
Isolamento basato sulla sessione — ogni sessione ottiene la propria sandbox con archiviazione persistente
$HOMEe/filestra turni e periodi di inattività. -
Le librerie di protocollo sostituiscono gli adattatori del framework : i pacchetti di adattatori specifici del framework (
azure-ai-agentserver-agentframework,azure-ai-agentserver-langgraph) vengono sostituiti da librerie specifiche del protocollo (azure-ai-agentserver-responses,azure-ai-agentserver-invocations). Vedere Libreria di protocolli e migrazione del framework. - Identità dell'agente dedicato dal momento della distribuzione : ogni agente ottiene la propria identità Entra al momento della creazione, sostituendo il modello di identità gestita del progetto condiviso. Vedere Modifiche di identità e controllo degli accessi in base al ruolo.
-
Endpoint agente dedicato — ogni agente ottiene il proprio URL dell'endpoint, ad esempio
{project_endpoint}/agents/{name}/endpoint/protocols/openai/v1/responses. Non è più possibile instradare attraverso un endpoint di progetto condiviso conagent_referencenel corpo della richiesta. Vedere Modifiche alla chiamata dell'agente. - Nuovi protocolli : chiamate, attività e protocolli A2A vengono aggiunti al protocollo Risposte esistente. Un singolo agente può esporre più protocolli contemporaneamente.
- API REST per il ciclo di vita completo : copertura REST completa per le operazioni di agente, versione, sessione e file. Vedere Modifiche al metodo SDK.
- La creazione dell'host di funzionalità è stata rimossa : la piattaforma gestisce automaticamente il provisioning dell'infrastruttura. Non è più necessario creare un host di funzionalità a livello di account. Vedere Removed APIs (API rimosse).
Prerequisiti
Azure AI Projects SDK versione 2.1.0 o successiva (2.0.0).
Azure Developer CLI versione 1.23.0 o successiva con l'estensione aggiornata degli agenti Foundry:
azd ext install azure.ai.agents
Passaggi di migrazione a colpo d'occhio
La procedura seguente riepiloga la migrazione completa. Ognuno collega alla sezione dettagliata.
- Aggiornare le librerie di protocolli e il codice dell'agente : sostituire gli adattatori del framework con le nuove librerie di protocolli e aggiornare il punto di ingresso dell'agente. Scegliere il percorso: Agent Framework, LangGraph o personalizzato/BYO.
- Aggiornare le chiamate API, interfaccia della riga di comando e SDK : rimuovere i comandi dell'interfaccia della riga di comando ritirati, aggiornare i metodi SDK e passare all'endpoint dell'agente dedicato. Vedere Rimozione delle API, mappatura dei comandi dell'interfaccia a riga di comando, modifiche ai metodi SDK e modifiche all'invocazione dell'agente.
- Aggiornare l'identità e il controllo degli accessi basato sui ruoli: concedere l'accesso alle risorse downstream all'identificativo dedicato Entra dell'agente. Vedere Modifiche di identità e controllo degli accessi in base al ruolo.
-
Aggiornare gli strumenti della CLI per sviluppatori Azure — installare l'ultima estensione degli agenti Foundry
azde aggiornareagent.yaml. Consulta Azure Developer CLI changes. -
Ridistribuire e verificare : compilare l'immagine del contenitore, eseguire la distribuzione con
azd upo l'SDK e verificare che la versione raggiungaactivelo stato.
Per un riepilogo delle attività per attività, vedere l'elenco di controllo per la migrazione alla fine di questo articolo.
Libreria di protocolli e migrazione del framework
L'anteprima iniziale usava pacchetti di adattatori specifici del framework (azure-ai-agentserver-agentframework, azure-ai-agentserver-langgraph) che eseguivano il wrapping del codice dell'agente. L'anteprima aggiornata sostituisce questi elementi con librerie specifiche del protocollo e pacchetti di integrazione del framework aggiornati.
Il percorso di migrazione dipende dal framework usato:
-
Microsoft Agent Framework : usare i pacchetti aggiornati di Agent Framework con il bridge
ResponsesHostServer. -
LangGraph : usare la
azure-ai-agentserver-responseslibreria di protocolli direttamente conResponsesAgentServerHost. -
CrewAI, Kernel semantico o codice personalizzato : usare direttamente le librerie di protocolli (
azure-ai-agentserver-responsesoazure-ai-agentserver-invocations).
Modifiche del pacchetto
Librerie di protocollo (tutti gli utenti)
| Pacchetto di anteprima iniziale | Sostituzione dell'anteprima aggiornata |
|---|---|
azure-ai-agentserver-core |
azure-ai-agentserver-core 2.0.0b1 : ancora necessario, ora installato automaticamente come dipendenza dei pacchetti di protocollo |
azure-ai-agentserver-agentframework |
Rimosso, vedere i percorsi del framework di agenti o della libreria di protocolli più avanti. |
azure-ai-agentserver-langgraph |
Rimosso: usare azure-ai-agentserver-responses o azure-ai-agentserver-invocations direttamente |
Azure.AI.AgentServer.Core (.NET) |
Azure.AI.AgentServer.Core 1.0.0-beta.21, ancora necessario come dipendenza |
Azure.AI.AgentServer.AgentFramework (.NET) |
Azure.AI.AgentServer.Responses 1.0.0-beta.1 o Azure.AI.AgentServer.Invocations 1.0.0-beta.1 |
Pacchetti di Agent Framework (solo utenti di Agent Framework)
I pacchetti di Agent Framework sono stati aggiornati anche per l'anteprima aggiornata:
| Anteprima iniziale | Anteprima aggiornata |
|---|---|
agent-framework (pacchetto singolo) |
agent-framework-core, agent-framework-openai, agent-framework-foundryagent-framework-orchestrations |
AzureAIAgentClient |
FoundryChatClient (da agent_framework.foundry) |
ChatAgent |
Agent (da agent_framework) |
@ai_function Decoratore |
@tool Decorator con approval_mode parametro |
| Non disponibile |
agent-framework-foundry-hosting — Bridge tra Agent Framework e la libreria di protocolli |
Eseguire la migrazione degli agenti di Agent Framework
Se l'agente usa Microsoft Agent Framework, usare il bridge ResponsesHostServer da agent-framework-foundry-hosting. Questo approccio mantiene intatto il codice di Agent Framework (definizione dell'agente, strumenti, istruzioni) usando la nuova libreria di protocolli.
Anteprima iniziale:
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()
Anteprima aggiornata:
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()
Differenze principali:
-
AzureAIAgentClientFoundryChatClient→ (daagent_framework.foundry). -
ChatAgentAgent→ (daagent_framework). -
@ai_function→@tool(approval_mode="never_require")con gli hint di tipoAnnotatedper le descrizioni dei parametri. -
from_agent_framework(agent).run()→ResponsesHostServer(agent).run(). - Aggiungere
default_options={"store": False}perché la cronologia delle conversazioni è gestita dalla piattaforma di hosting.
Per gli strumenti MCP, usare client.get_mcp_tool() invece di definire gli strumenti nell'API create_version :
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], ...)
Per esempi, vedere gli esempi dell'agente ospitato di Agent Framework.
Nota
Per la migrazione di .NET (C#) Agent Framework, il modello usa AddFoundryResponses e MapFoundryResponses ASP.NET estensioni anziché ResponsesHostServer. Per esempi completi, vedere i campioni di agenti ospitati di .NET Agent Framework.
Eseguire la migrazione degli agenti LangGraph
Se l'agente usa LangGraph, sostituire l'adattatore azure-ai-agentserver-langgraph con la libreria di azure-ai-agentserver-responses protocolli. La logica dell'agente LangGraph (definizione del grafo, strumenti, configurazione LLM) rimane invariata, ma solo il punto di ingresso dell'hosting cambia.
Anteprima iniziale:
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()
Anteprima aggiornata:
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("AZURE_AI_MODEL_DEPLOYMENT_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()
Differenze principali:
-
azure-ai-agentserver-langgraph→azure-ai-agentserver-responses. L'adattatore specifico di LangGraph viene rimosso. -
from_langgraph(graph).run()→ ExplicitResponsesAgentServerHostcon un@app.response_handlerche restituisce unTextResponse. - Usa
ChatOpenAIconbase_url=f"{FOUNDRY_PROJECT_ENDPOINT}/openai/v1"invece diAzureChatOpenAI. Viene usato l'endpoint con ambito progetto, che richiede solo autorizzazioni a livello di progetto. - La cronologia delle conversazioni viene recuperata tramite
context.get_history()e convertita in tipi di messaggi LangChain per il supporto a più turni. - La logica dell'agente LangGraph (strumenti, creazione del grafo) rimane invariata. Per il controllo dettagliato sulle chiamate di funzione, sulla logica degli elementi o su più tipi di output, usare
ResponseEventStreamanzichéTextResponse.
Integrazione della casella degli strumenti MCP
Per connettere l'agente LangGraph agli strumenti nella casella degli strumenti Foundry tramite MCP, usare langchain-mcp-adapters all'interno del gestore. Caricare gli strumenti in modo dinamico dall'endpoint MCP:
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
Aggiungere questi pacchetti a requirements.txt:
langchain-mcp-adapters>=0.1.0
mcp>=1.0.0
Per esempi completi, vedere gli esempi dell'agente ospitato LangGraph.
Eseguire la migrazione di agenti personalizzati o BYO (Bring Your Own)
Se si usa CrewAI, Kernel semantico o altro codice personalizzato, usare direttamente la libreria di protocolli. Le librerie di protocolli sono indipendenti dal framework, quindi puoi gestire l'orchestrazione, gli strumenti e la memoria nel tuo codice personalizzato.
Protocollo di risposte : usare ResponsesAgentServerHost per gli agenti di conversazione. Registra il tuo gestore con il decoratore @app.response_handler.
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()
Per le risposte in streaming, passare un iterabile asincrono a TextResponse. Per il controllo dettagliato sulle chiamate di funzione, sulla logica degli elementi o su più tipi di output, usare ResponseEventStream anziché TextResponse.
Protocollo chiamate : usare InvocationAgentServerHost per gli agenti che necessitano di payload JSON arbitrari (webhook, elaborazione non conversazionale). Il gestore usa direttamente i tipi Starlette Request/Response :
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()
Il protocollo Invocations supporta anche operazioni a lunga esecuzione con @app.get_invocation_handler e @app.cancel_invocation_handler per il polling e l'annullamento.
Scegliere il protocollo in base al modello di interazione dell'agente. Vedere Che cosa sono gli agenti ospitati - Protocolli per indicazioni su quale protocollo usare.
Modifica del formato della versione del protocollo
Il formato della versione del protocollo è cambiato da "v1" a semver "1.0.0":
# Initial preview
ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1")
# Refreshed preview
ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="1.0.0")
API rimosse
Le API seguenti dell'anteprima iniziale non sono disponibili nell'anteprima aggiornata:
| L'API è stata rimossa | Motivo |
|---|---|
az cognitiveservices agent start |
Il ciclo di vita di calcolo è automatico: non è necessario avviare manualmente |
az cognitiveservices agent stop |
Le risorse di calcolo vengono deprovisionate automaticamente dopo 15 minuti di inattività. |
az cognitiveservices agent update |
Sostituito da PATCH /agents/{name} per il routing degli endpoint; creare una nuova versione per le modifiche di runtime |
az cognitiveservices agent delete-deployment |
Eliminare direttamente la versione |
az cognitiveservices agent list-versions |
Usare az rest --method GET con l'API REST |
az cognitiveservices agent show |
Usare az rest --method GET o azd ai agent show |
Creazione dell'host di funzionalità (PUT .../capabilityHosts/accountcaphost) |
La piattaforma gestisce automaticamente l'infrastruttura |
tools parametro in create_version |
È possibile accedere agli strumenti tramite l'endpoint MCP della casella degli strumenti Foundry in fase di esecuzione |
Mapping dei comandi CLI
| CLI di anteprima iniziale | Anteprima aggiornata equivalente |
|---|---|
az cognitiveservices agent start --name X --agent-version 1 |
Rimosso: il calcolo viene avviato automaticamente alla prima richiesta |
az cognitiveservices agent stop --name X --agent-version 1 |
Rimosso: il calcolo si arresta automaticamente dopo il timeout di inattività |
az cognitiveservices agent update --min-replicas N --max-replicas M |
Rimosso: nessuna gestione delle repliche |
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 |
Rimosso: eliminare invece la versione |
Dove BASE_URL è https://{account}.services.ai.azure.com/api/projects/{project}.
Modifiche al metodo SDK
| Anteprima iniziale | Anteprima aggiornata |
|---|---|
pip install "azure-ai-projects>=2.0.0" |
pip install "azure-ai-projects>=2.1.0" |
project.get_openai_client() Con extra_body={"agent_reference": {"name": ..., "type": "agent_reference"}} |
project.get_openai_client(agent_name="my-agent") — il client è preconfigurato, non è necessario extra_body |
ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1") |
ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="1.0.0") |
tools=[...] in HostedAgentDefinition |
Rimosso: usare invece l'endpoint MCP della casella degli strumenti Foundry |
| Non disponibile |
project.beta.agents.create_session(agent_name, isolation_key=..., version_indicator=...), .get_session(), .list_sessions().delete_session(isolation_key=...) |
| Non disponibile |
project.beta.agents.download_session_file(path=...), .get_session_files(path=...), .delete_session_file(path=...) |
| Non disponibile |
project.beta.agents.patch_agent_details() per il routing degli endpoint e la suddivisione del traffico |
| Non disponibile |
metadata={"enableVnextExperience": "true"} parametro in client.agents.create_version() |
Modifiche alla chiamata dell'agente
Nell'anteprima iniziale, hai instradato gli agenti tramite un endpoint di progetto condiviso, passando un parametro agent_reference nel corpo della richiesta. Nell'anteprima aggiornata, ogni agente ottiene un endpoint dedicato e l'SDK lo associa automaticamente.
Anteprima iniziale:
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"}}
)
Anteprima aggiornata:
openai_client = project.get_openai_client(agent_name="my-agent")
response = openai_client.responses.create(
input="Hello!",
)
print(response.output_text)
Nota
Utilizzare agent_name richiede allow_preview=True quando si costruisce il AIProjectClient:
project = AIProjectClient(
credential=DefaultAzureCredential(),
endpoint=PROJECT_ENDPOINT,
allow_preview=True,
)
Il agent_name parametro indica all'SDK di specificare come destinazione l'endpoint dedicato dell'agente. Per le chiamate REST, usare direttamente l'endpoint dell'agente:
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" \
-H "Foundry-Features: HostedAgents=V1Preview" \
-d '{"input": "Hello!", "model": "gpt-4.1", "stream": false}'
Importante
Le chiamate REST agli endpoint dell'agente ospitato richiedono l'header Foundry-Features: HostedAgents=V1Preview durante l'anteprima. Senza di esso, la richiesta restituisce un preview_feature_required errore. L'SDK imposta automaticamente questa intestazione.
Gli endpoint attivi dipendono dai protocolli dichiarati nella definizione della versione dell'agente. Le routes Risposte e Conversazioni si trovano sotto lo spazio dei nomi compatibile con OpenAI in {project_endpoint}/agents/{name}/endpoint/protocols/openai/v1/{responses|conversations}, mentre Invocazioni, Attività e A2A si dirigono direttamente a {project_endpoint}/agents/{name}/endpoint/protocols/{invocations|activityprotocol|a2a}.
Modifiche dello stato della versione
Gli stati del ciclo di vita dell'agente sono passati da una macchina a stati manuale a stati di provisioning automatizzati.
| Stato di anteprima iniziale | Stato dell'anteprima aggiornato |
|---|---|
Stopped (iniziale) |
Non applicabile — nessuno stato fermo |
Starting → Started |
creating → active |
Failed |
failed |
Running
Stopping → →Stopped |
Non applicabile: il deprovisioning delle risorse di calcolo viene eseguito automaticamente |
| Non disponibile |
deleting → deleted |
Modifiche di identità e controllo degli accessi in base al ruolo
Il modello di identità è cambiato in modo significativo:
| Aspetto | Anteprima iniziale | Anteprima aggiornata |
|---|---|---|
| Identità di runtime dell'agente non pubblicata | identità gestita di progetto (condivisa) | Identità dedicata dell'agente Entra (per ogni agente) |
| Quando viene creata un'identità dedicata | Solo al momento della pubblicazione | Al momento del rilascio (ogni agente) |
| Ruolo dell'identità gestita del progetto | Identità di runtime per tutti gli agenti non pubblicati | Solo infrastruttura — usata per il pull delle immagini dei container |
| Ruolo di distribuzione obbligatorio | Azure proprietario dell'intelligenza artificiale (nuovo progetto), proprietario dell'intelligenza artificiale + collaboratore (nuove risorse) o lettore + Azure utente di intelligenza artificiale (progetto esistente) | Azure AI Project Manager nel contesto del progetto |
| Riconfigurazione del controllo degli accessi in base al ruolo post-pubblicazione | Obbligatorio: le autorizzazioni MI del progetto non vengono trasferite all'identità dell'agente. | Non obbligatorio: l'agente ha la propria identità fin dall'inizio |
Azione richiesta
- Aggiornare le assegnazioni RBAC: l'identità gestita del progetto non è più l'identità di runtime. Assegna invece i ruoli di controllo degli accessi in base ai ruoli per ogni risorsa downstream di Azure direttamente all'identità Entra dell'agente.
- Simplificare i ruoli di distribuzione: è necessario Azure AI Project Manager nell'ambito project per creare e distribuire agenti ospitati.
modifiche all'interfaccia della riga di comando per sviluppatori Azure
Comandi aggiornati
| Anteprima iniziale | Anteprima aggiornata |
|---|---|
azd init -t https://github.com/Azure-Samples/azd-ai-starter-basic |
azd ai agent init (selezione interattiva del modello) |
azd ai agent init --project-id /subscriptions/.../projects/... |
Stessa sintassi, ancora supportata |
azd up |
Stesso — provisioning, compilazioni, push, creazione della versione |
azd down |
Stesso : pulisce le risorse |
| Non disponibile |
azd ai agent show — visualizzare lo stato dell'agente |
| Non disponibile |
azd ai agent monitor — log e stato in tempo reale |
| Non disponibile |
azd ai agent invoke --input "..." — richiamare l'agente |
| Non disponibile |
azd ai agent files upload/list/download/remove — gestione dei file di sessione |
Azione richiesta
Aggiornare l'estensione degli agenti di Foundry:
azd ext install azure.ai.agentsagent.yamlSe l'oggetto specifica le versioni del protocolloversion: "v1", cambiarlo inversion: "1.0.0".
Modifiche allo streaming dei log
| Aspetto | Anteprima iniziale | Anteprima aggiornata |
|---|---|---|
| Endpoint | .../versions/{v}/containers/default:logstream |
.../versions/{v}/sessions/{sessionId}:logstream |
| Formato risposta | Testo normale (a blocchi) | Server-Sent Events (SSE) con payload JSON |
| Parametri di query |
kind=console\|system, tail=20, replica_name |
Semplificato: nessun parametro di query necessario |
| Numero massimo di connessioni | 10 minuti | 30 minuti |
| Timeout di inattività | 1 minuto | 2 minuti |
| azd access | Non disponibile | azd ai agent monitor |
Lacune conosciute
Le funzionalità seguenti dell'anteprima iniziale non sono ancora disponibili nell'anteprima aggiornata:
| Funzionalità | Stato | Soluzione |
|---|---|---|
az cognitiveservices agent Estensione dell'interfaccia della riga di comando |
Rimosso: nessun comando CLI proprietario | Usare az rest per le chiamate API REST o azd ai agent per i flussi di lavoro per sviluppatori |
| Aggiornamenti dei metadati non con controllo delle versioni (descrizione, tag) | Non ancora disponibile tramite SDK | Usare az rest --method PATCH con l'API REST |
| Ridimensionamento esplicito delle repliche (repliche min/max) | Sostituito dal ridimensionamento automatico basato su sessioni | Le sessioni vengono ridimensionate automaticamente; nessuna configurazione necessaria |
| Eliminare la distribuzione senza eliminare la versione | Non disponibile | Eliminare direttamente la versione; creare una nuova versione quando necessario |
Elenco di controllo per la migrazione
Usare questo elenco di controllo per tenere traccia della migrazione:
- Aggiornare
azure-ai-projectsl'SDK alla versione 2.1.0 o successiva. -
Utenti di Agent Framework: aggiornare i pacchetti di Agent Framework (
agent-framework-core,agent-framework-foundry,agent-framework-foundry-hostinge così via). Sostituirefrom_agent_framework(agent).run()conResponsesHostServer(agent).run(). AggiornareAzureAIAgentClient→FoundryChatClient,ChatAgent→Agente@ai_function→@tool. -
Utenti di LangGraph: sostituire
azure-ai-agentserver-langgraphconazure-ai-agentserver-responses. Sostituirefrom_langgraph(graph).run()con unResponsesAgentServerHostgestore che restituisce un oggettoTextResponse. UsareChatOpenAIcon l'endpoint con ambito di progetto anzichéAzureChatOpenAI. Aggiungerelangchain-mcp-adaptersemcpse si usa la casella degli strumenti Foundry. -
Utenti personalizzati/BYO: sostituire i pacchetti dell'adattatore framework con librerie di protocolli (
azure-ai-agentserver-responsesoazure-ai-agentserver-invocations). Riscrivere i punti di ingresso dell'agente usandoResponsesAgentServerHostoInvocationAgentServerHost. - Aggiornare le stringhe di versione del protocollo da
"v1"a"1.0.0"nel codice eagent.yaml. - Aggiornare
agent.yamlse si usaazd(formato di versione del protocollo, rimuovere eventualitoolsdefinizioni dalla definizione dell'agente). - Rimuovere le chiamate
az cognitiveservices agentCLI dagli script e dalle pipeline CI/CD; sostituire con comandiaz restoazd ai agent. - Rimuovere i passaggi di creazione dell'host di funzionalità dagli script di provisioning.
- Aggiornare il codice di chiamata dell'agente: usare
project.get_openai_client(agent_name=...)invece diextra_bodyconagent_reference. - Esaminare il controllo degli accessi in base al ruolo: concedere alle risorse downstream l'accesso all'identità Entra dedicata dell'agente, non all'identità gestita del progetto.
- Aggiornare l'estensione
azdagenti Foundry alla versione più recente. - Creare un'immagine del contenitore con
--platform linux/amd64(se non è già stato fatto). - Ridistribuire l'agente usando
azd upo il metodo SDKcreate_version. - Verificare che la nuova versione raggiunga lo stato
activeprima di inviare il traffico.