Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo orienta você na migração de agentes hospedados da visualização pública inicial para a visualização pública atualizada do Foundry Agent Service. A versão prévia atualizada apresenta um novo back-end de hospedagem, bibliotecas de protocolo, modelo de identidade e APIs de gerenciamento.
Importante
O back-end inicial de hospedagem de visualização pública está sendo desativado. Você deve reimplantar seus agentes usando o novo modelo descrito neste artigo. As implantações de agente existentes no back-end antigo não serão migradas automaticamente e terão suporte apenas até 22 de maio de 2026.
Este guia se aplica a você caso tenha implantado um agente hospedado antes de abril de 2026 usando os pacotes azure-ai-agentserver-agentframework ou azure-ai-agentserver-langgraph qualquer código personalizado que utilizou as APIs de hospedagem em versão prévia inicial.
O que mudou
A versão prévia atualizada implementa um modelo de sandbox baseado em sessão na plataforma existente. Principais alterações:
- Ciclo de vida de computação automática – não há início manual, interrupção ou gerenciamento de réplica. A plataforma provisiona a computação quando uma solicitação chega e a desprovisiona após 15 minutos de inatividade. Consulte o mapeamento de comando da CLI.
-
Isolamento baseado em sessão — Cada sessão recebe seu próprio sandbox com armazenamento persistente
$HOMEe/filesentre turnos e períodos ociosos. -
As bibliotecas de protocolo substituem adaptadores de estrutura — os pacotes de adaptador específicos da estrutura (
azure-ai-agentserver-agentframework,azure-ai-agentserver-langgraph) são substituídos por bibliotecas específicas do protocolo (azure-ai-agentserver-responses,azure-ai-agentserver-invocations). Consulte Biblioteca de Protocolos e Migração de Framework. - Identidade dedicada do agente a partir do tempo de implantação – cada agente recebe sua própria identidade Entra durante a criação, substituindo o modelo compartilhado de identidade gerenciada pelo projeto. Consulte as alterações de Identidade e RBAC.
-
Ponto de extremidade do agente dedicado – cada agente obtém sua própria URL de ponto de extremidade (por exemplo,
{project_endpoint}/agents/{name}/endpoint/protocols/openai/v1/responses). Você não precisa mais rotear por meio de um ponto de extremidade de projeto compartilhado comagent_referenceno corpo da solicitação. Consulte as alterações de invocação do Agente. - Novos protocolos — invocações, atividades e protocolos A2A ingressam no protocolo de respostas existente. Um único agente pode expor vários protocolos simultaneamente.
- API REST para ciclo de vida completo – cobertura REST completa para operações de agente, versão, sessão e arquivo. Consulte as alterações de método do SDK.
- Criação de host de capacidade removida — A plataforma gerencia o provisionamento de infraestrutura automaticamente. Você não precisa mais criar um host de capacidade no nível da conta. Consulte APIs removidas.
Pré-requisitos
Azure SDK de Projetos de IA versão 2.1.0 ou posterior (era 2.0.0).
Azure Developer CLI versão 1.23.0 ou posterior com a extensão atualizada dos agentes do Foundry:
azd ext install azure.ai.agents
Etapas de migração em um relance
As etapas a seguir resumem a migração de ponta a ponta. Cada um direciona para a seção detalhada.
- Atualizar bibliotecas de protocolo e código do agente – substitua os adaptadores da estrutura pelas novas bibliotecas de protocolo e atualize o ponto de entrada do agente. Escolha seu caminho: Agent Framework, LangGraph ou custom/BYO.
- Atualização de chamadas de API, CLI e SDK — Remove comandos de CLI obsoletos, atualiza métodos de SDK e migra para o ponto de extremidade de agente dedicado. Consulte APIs removidas, mapeamento de comando da CLI, alterações de método do SDK e alterações de invocação do Agente.
- Atualização de identidade e RBAC — Concede acesso a recursos downstream à identidade Entra dedicada do agente. Consulte as alterações de Identidade e RBAC.
-
Atualizar as ferramentas da Azure Developer CLI — Instalar a mais recente
azdExtensão e atualização dos agentes do Foundryagent.yaml. Consulte alterações da CLI do Desenvolvedor do Azure. -
Reimplantar e verificar : crie sua imagem de contêiner, implante usando
azd upou o SDK e confirme se a versão atingeactiveo status.
Para obter um resumo de tarefa por tarefa, consulte a lista de verificação de migração no final deste artigo.
Biblioteca de protocolos e migração de estrutura
A versão preliminar inicial utilizava pacotes adaptadores específicos da estrutura (azure-ai-agentserver-agentframework, azure-ai-agentserver-langgraph) que encapsulavam o código de seu agente. A versão prévia atualizada substitui-as por bibliotecas específicas do protocolo e pacotes de integração de estrutura atualizados.
Seu caminho de migração depende de qual estrutura você usa:
-
Microsoft Agent Framework — Use os pacotes atualizados do Agent Framework com a ponte
ResponsesHostServer. -
LangGraph — Use a biblioteca de protocolo
azure-ai-agentserver-responsesdiretamente comResponsesAgentServerHost. -
CrewAI, Kernel semântico ou código personalizado — use as bibliotecas de protocolo diretamente (
azure-ai-agentserver-responsesouazure-ai-agentserver-invocations).
Alterações de pacote
Bibliotecas de protocolo (todos os usuários)
| Pacote de visualização inicial | Substituição da versão preliminar atualizada |
|---|---|
azure-ai-agentserver-core |
azure-ai-agentserver-core 2.0.0b1 – ainda necessário, agora instalado automaticamente como uma dependência dos pacotes de protocolo |
azure-ai-agentserver-agentframework |
Removido — consulte o Framework de Agentes ou os caminhos da biblioteca de protocolos abaixo |
azure-ai-agentserver-langgraph |
Removido — use diretamente azure-ai-agentserver-responses ou azure-ai-agentserver-invocations |
Azure.AI.AgentServer.Core (.NET) |
Azure.AI.AgentServer.Core 1.0.0-beta.21 — ainda necessário como dependência |
Azure.AI.AgentServer.AgentFramework (.NET) |
Azure.AI.AgentServer.Responses 1.0.0-beta.1 ou Azure.AI.AgentServer.Invocations 1.0.0-beta.1 |
Pacotes do Agent Framework (somente usuários do Agent Framework)
Os pacotes do Agent Framework também foram atualizados para a versão prévia atualizada:
| Visualização inicial | Visualização atualizada |
|---|---|
agent-framework (pacote único) |
agent-framework-core, agent-framework-openai, , agent-framework-foundryagent-framework-orchestrations |
AzureAIAgentClient |
FoundryChatClient (de agent_framework.foundry) |
ChatAgent |
Agent (de agent_framework) |
@ai_function Decorador |
@tool decorador com parâmetro approval_mode |
| Não disponível |
agent-framework-foundry-hosting — ponte entre o Agent Framework e a biblioteca de protocolos |
Migrar agentes do Agent Framework
Se seu agente usa o Microsoft Agent Framework, use a ponte ResponsesHostServer de agent-framework-foundry-hosting. Essa abordagem mantém o código do Agent Framework (definição de agente, ferramentas, instruções) intacto enquanto utiliza a nova biblioteca de protocolos nos bastidores.
Versão prévia inicial:
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()
Visualização atualizada:
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()
Principais diferenças:
-
AzureAIAgentClient→FoundryChatClient(deagent_framework.foundry). -
ChatAgent→Agent(deagent_framework). -
@ai_function→@tool(approval_mode="never_require")com dicas de tipoAnnotatedpara descrições de parâmetros. -
from_agent_framework(agent).run()→ResponsesHostServer(agent).run(). - Adicione
default_options={"store": False}porque o histórico de conversas é gerenciado pela plataforma de hospedagem.
Para ferramentas MCP, use client.get_mcp_tool() em vez de definir ferramentas na 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], ...)
Para obter exemplos, consulte os exemplos de agente hospedado do Agent Framework.
Nota
Para migração do .NET (C#) Agent Framework, o padrão usa extensões AddFoundryResponses e MapFoundryResponses ASP.NET em vez de ResponsesHostServer. Consulte os exemplos de agente hospedado do .NET Agent Framework para obter exemplos completos.
Migrar agentes do LangGraph
Se o agente usar o LangGraph, substitua o adaptador azure-ai-agentserver-langgraph pela biblioteca de protocolos azure-ai-agentserver-responses. A lógica do agente do LangGraph (definição de grafo, ferramentas, configuração de LLM) permanece a mesma: somente o ponto de entrada de hospedagem é alterado.
Versão prévia inicial:
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()
Visualização atualizada:
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()
Principais diferenças:
-
azure-ai-agentserver-langgraph→azure-ai-agentserver-responses. O adaptador específico do LangGraph é removido. -
from_langgraph(graph).run()→ ExplicitResponsesAgentServerHostcom um@app.response_handlerque retorna umTextResponse. - Usa
ChatOpenAIcombase_url=f"{FOUNDRY_PROJECT_ENDPOINT}/openai/v1"em vez deAzureChatOpenAI. Isso usa o ponto de extremidade com escopo de projeto, que requer apenas permissões em nível de projeto. - O histórico de conversas é obtido via
context.get_history()e convertido em tipos de mensagem LangChain para suporte a múltiplas interações. - A lógica do agente do LangGraph (ferramentas, criação de grafo) não é alterada. Para controle refinado sobre chamadas de função, itens de raciocínio ou vários tipos de saída, use
ResponseEventStreamem vez deTextResponse.
Integração da Caixa de Ferramentas do MCP
Para conectar seu agente LangGraph às ferramentas do Foundry Toolbox via MCP, use langchain-mcp-adapters dentro de seu manipulador. Carregue ferramentas dinamicamente a partir do endpoint do 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
Adicione estes pacotes ao seu requirements.txt:
langchain-mcp-adapters>=0.1.0
mcp>=1.0.0
Para obter exemplos completos, consulte os exemplos de agente hospedado do LangGraph.
Migrar agentes personalizados ou BYO
Se você usar CrewAI, Kernel semântico ou outro código personalizado, use a biblioteca de protocolos diretamente. As bibliotecas de protocolo são independentes da estrutura– você lida com orquestração, ferramentas e memória em seu próprio código.
Protocolo de respostas – Uso ResponsesAgentServerHost para agentes de conversação. Registre seu manipulador com o decorador @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()
Para respostas de streaming, passe uma iterável assíncrona para TextResponse. Para controle refinado sobre chamadas de função, itens de raciocínio ou vários tipos de saída, use ResponseEventStream em vez de TextResponse.
Protocolo de Invocações — use InvocationAgentServerHost para agentes que precisam de cargas JSON arbitrárias (webhooks, processamento não conversacional). O manipulador usa os tipos Starlette Request/Response diretamente.
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()
O protocolo Invocations também suporta operações de longa duração com @app.get_invocation_handler e @app.cancel_invocation_handler para sondagem e cancelamento.
Escolha seu protocolo com base no padrão de interação do agente. Veja o que são agentes hospedados – Protocolos para orientação sobre qual protocolo usar.
Alteração do formato de versão do protocolo
O formato de versão do protocolo foi alterado de "v1" para semver "1.0.0":
# Initial preview
ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1")
# Refreshed preview
ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="1.0.0")
APIs removidas
As seguintes APIs da versão prévia inicial não estão disponíveis na versão prévia atualizada:
| API removida | Razão |
|---|---|
az cognitiveservices agent start |
O ciclo de vida de computação é automático – não é necessário iniciar manualmente |
az cognitiveservices agent stop |
A computação é desprovisionada automaticamente após 15 minutos de inatividade |
az cognitiveservices agent update |
Substituído por PATCH /agents/{name} para roteamento de ponto de extremidade. Crie uma nova versão para alterações em tempo de execução |
az cognitiveservices agent delete-deployment |
Exclua a versão diretamente em vez disso |
az cognitiveservices agent list-versions |
Usar az rest --method GET contra a API REST |
az cognitiveservices agent show |
Usar az rest --method GET ou azd ai agent show |
Criação de host de capacidade (PUT .../capabilityHosts/accountcaphost) |
A plataforma manipula a infraestrutura automaticamente |
tools parâmetro em create_version |
As ferramentas são acessadas por meio do ponto de extremidade MCP da Caixa de Ferramentas do Foundry durante o tempo de execução. |
Mapeamento de comando da CLI
| CLI de visualização inicial | Equivalente de versão preliminar atualizado |
|---|---|
az cognitiveservices agent start --name X --agent-version 1 |
Removido — a computação é iniciada automaticamente na primeira solicitação |
az cognitiveservices agent stop --name X --agent-version 1 |
Removido — o processamento para automaticamente após o tempo limite ocioso |
az cognitiveservices agent update --min-replicas N --max-replicas M |
Removido — sem gerenciamento de réplicas |
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 |
Removido — exclua a versão em vez disso |
Onde BASE_URL está https://{account}.services.ai.azure.com/api/projects/{project}.
Alterações no método SDK
| Visualização inicial | Visualização atualizada |
|---|---|
pip install "azure-ai-projects>=2.0.0" |
pip install "azure-ai-projects>=2.1.0" |
project.get_openai_client() por extra_body={"agent_reference": {"name": ..., "type": "agent_reference"}} |
project.get_openai_client(agent_name="my-agent") — o cliente está pré-vinculado, não é extra_body necessário |
ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1") |
ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="1.0.0") |
tools=[...] Em HostedAgentDefinition |
Removido — use o ponto de extremidade MCP do Foundry Toolbox |
| Não disponível |
project.beta.agents.create_session(agent_name, isolation_key=..., version_indicator=...), .get_session(), , .list_sessions().delete_session(isolation_key=...) |
| Não disponível |
project.beta.agents.download_session_file(path=...)
.get_session_files(path=...), .delete_session_file(path=...) |
| Não disponível |
project.beta.agents.patch_agent_details() para roteamento de endpoints e distribuição de tráfego |
| Não disponível |
metadata={"enableVnextExperience": "true"} parâmetro em client.agents.create_version() |
Alterações na invocação do agente
Na versão preliminar inicial, você roteava para agentes por meio de um ponto de extremidade de projeto compartilhado, passando um agent_reference no corpo da solicitação. Na versão prévia atualizada, cada agente obtém um ponto de extremidade dedicado e o SDK é associado a ele automaticamente.
Versão prévia inicial:
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"}}
)
Visualização atualizada:
openai_client = project.get_openai_client(agent_name="my-agent")
response = openai_client.responses.create(
input="Hello!",
)
print(response.output_text)
Nota
Usar agent_name requer allow_preview=True ao construir o AIProjectClient:
project = AIProjectClient(
credential=DefaultAzureCredential(),
endpoint=PROJECT_ENDPOINT,
allow_preview=True,
)
O agent_name parâmetro informa ao SDK que ele deve direcionar o endpoint dedicado do agente. Para chamadas REST, use o endpoint do agente diretamente.
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
As chamadas REST para endpoints de agentes hospedados exigem o cabeçalho Foundry-Features: HostedAgents=V1Preview durante a pré-visualização. Sem ela, a solicitação retorna um preview_feature_required erro. O SDK define esse cabeçalho automaticamente.
Os pontos de extremidade ativos dependem dos protocolos que você declara na definição de versão do agente. As rotas de Respostas e Conversas residem no namespace compatível com OpenAI em {project_endpoint}/agents/{name}/endpoint/protocols/openai/v1/{responses|conversations}, enquanto Invocations, Activity e A2A roteiam diretamente em {project_endpoint}/agents/{name}/endpoint/protocols/{invocations|activityprotocol|a2a}.
Alterações de status de versão
Os estados do ciclo de vida do agente foram alterados de uma máquina de estados manual para estados de provisionamento automático:
| Estado de visualização inicial | Status de prévia atualizado |
|---|---|
Stopped (inicial) |
Não aplicável — sem estado parado |
Starting → Started |
creating → active |
Failed |
failed |
Running
Stopping → →Stopped |
Não aplicável — a computação é desprovisionada automaticamente |
| Não disponível |
deleting → deleted |
Alterações de identidade e RBAC
O modelo de identidade foi alterado significativamente:
| Aspecto | Visualização inicial | Visualização atualizada |
|---|---|---|
| Identidade de tempo de execução do agente não publicado | Projeto de identidade gerenciada (compartilhada) | Identidade do agente dedicado do Entra (por agente) |
| Quando a identidade dedicada é criada | Apenas no momento da publicação | No momento da implantação (todos os agentes) |
| Função de identidade gerenciada do projeto | Identidade de tempo de execução para todos os agentes não publicados | Somente infraestrutura — usado para pulls de imagens de contêiner |
| Função de implantação necessária | Azure Proprietário de IA (novo projeto), Proprietário de IA + Colaborador (novos recursos) ou Leitor + usuário de IA Azure (projeto existente) | Azure AI Project Manager no escopo do projeto |
| Reconfiguração do RBAC pós-publicação | Obrigatório – as permissões de MI do projeto não são transferidas para a identidade do agente | Não é necessário – o agente tem sua própria identidade desde o início |
Ação necessária
- Atualizar atribuições de RBAC: a identidade gerenciada pelo projeto não é mais a identidade de tempo de execução. Conceda funções de RBAC para quaisquer recursos do Azure downstream diretamente à identidade Entra do agente.
- Simplifique os papéis de implantação: você precisa de Azure AI Project Manager no escopo do projeto para criar e implantar agentes hospedados.
Alterações na CLI do Desenvolvedor do Azure
Comandos atualizados
| Visualização inicial | Visualização atualizada |
|---|---|
azd init -t https://github.com/Azure-Samples/azd-ai-starter-basic |
azd ai agent init (seleção interativa de modelo) |
azd ai agent init --project-id /subscriptions/.../projects/... |
Mesma sintaxe, ainda com suporte |
azd up |
Mesmo: configura, compila, envia, cria versão |
azd down |
Mesmo : limpa os recursos |
| Não disponível |
azd ai agent show — exibir o status do agente |
| Não disponível |
azd ai agent monitor — status e logs em tempo real |
| Não disponível |
azd ai agent invoke --input "..." — invoque o agente |
| Não disponível |
azd ai agent files upload/list/download/remove — gerenciamento de arquivos de sessão |
Ação necessária
Atualize a extensão de agentes do Foundry:
azd ext install azure.ai.agentsSe seu
agent.yamlespecificarversion: "v1"para versões de protocolo, altere paraversion: "1.0.0".
Alterações de streaming de log
| Aspecto | Visualização inicial | Visualização atualizada |
|---|---|---|
| Ponto de acesso | .../versions/{v}/containers/default:logstream |
.../versions/{v}/sessions/{sessionId}:logstream |
| Formato de resposta | Texto sem formatação (segmentado) | Eventos Enviados pelo Servidor (SSE) com Cargas JSON |
| Parâmetros de consulta |
kind=console\|system
tail=20, replica_name |
Simplificado – sem parâmetros de consulta necessários |
| Conexão máxima | 10 minutos | 30 minutos |
| Tempo limite de inatividade | 1 minuto | 2 minutos |
| azd access | Não disponível | azd ai agent monitor |
Lacunas conhecidas
Os seguintes recursos da versão prévia inicial ainda não estão disponíveis na versão prévia atualizada:
| Funcionalidade | Status | Solução alternativa |
|---|---|---|
az cognitiveservices agent Extensão da CLI |
Removido — sem comandos CLI de primeira parte | Usar az rest para chamadas à API REST ou azd ai agent para fluxos de trabalho de desenvolvedor |
| Atualizações de metadados sem versão (descrição, etiquetas) | Ainda não disponível via SDK | Usar az rest --method PATCH contra a API REST |
| Dimensionamento explícito de réplica (réplicas mínimas/máximas) | Substituído por dimensionamento automático baseado em sessão | As sessões são dimensionadas automaticamente; nenhuma configuração necessária |
| Excluir implantação sem excluir a versão | Não disponível | Exclua a versão diretamente; criar uma nova versão quando necessário |
Lista de verificação de migração
Use esta lista de verificação para acompanhar sua migração:
- Atualize
azure-ai-projectso SDK para a versão 2.1.0 ou posterior. -
Usuários do Agent Framework: atualizar pacotes do Agent Framework (
agent-framework-core,agent-framework-foundry,agent-framework-foundry-hostingetc.). Substituafrom_agent_framework(agent).run()porResponsesHostServer(agent).run(). AtualizarAzureAIAgentClient→FoundryChatClient,ChatAgent→Agente@ai_function→@tool. -
Usuários do LangGraph: substitua por
azure-ai-agentserver-langgraphazure-ai-agentserver-responses. Substituafrom_langgraph(graph).run()por umResponsesAgentServerHostmanipulador que retorna umTextResponse. UseChatOpenAIcom o ponto de extremidade com escopo de projeto em vez deAzureChatOpenAI. Adicionarlangchain-mcp-adaptersemcpse estiver usando a Caixa de Ferramentas do Foundry. -
Usuários personalizados/BYO: substitua pacotes de adaptador de estrutura por bibliotecas de protocolo (
azure-ai-agentserver-responsesouazure-ai-agentserver-invocations). Reescreva pontos de entrada do agente usandoResponsesAgentServerHostouInvocationAgentServerHost. - Atualize as strings de versão do protocolo de
"v1"para"1.0.0"no código e emagent.yaml. - Atualize
agent.yamlse estiver usandoazd(formato de versão do protocolo, remova todas as definiçõestoolsda definição do agente). - Remova as chamadas de CLI
az cognitiveservices agentdos scripts e pipelines de CI/CD; substitua-as por comandosaz restouazd ai agent. - Remova as etapas de criação de hosts de capacidade dos scripts de provisionamento.
- Atualizar código de invocação do agente — use
project.get_openai_client(agent_name=...)em vez deextra_bodycomagent_reference. - Revise o RBAC — conceda acesso a recursos downstream à identidade Entra dedicada do agente, e não à identidade gerenciada pelo projeto.
- Atualize
azda extensão de agentes do Foundry para a versão mais recente. - Crie uma imagem de contêiner com
--platform linux/amd64(se ainda não estiver). - Reimplante seu agente usando
azd upou o método SDKcreate_version. - Verifique se a nova versão alcança o status
activeantes de enviar o tráfego.