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.
Diagnosticar e corrigir problemas comuns ao criar, executar e implantar agentes para azd ai agent Microsoft Foundry. Comece com os comandos de diagnóstico. Em seguida, use as seções baseadas em sintomas para solucionar problemas de autenticação, desenvolvimento local, implantação, comandos diretos, logs e rotinas.
Pré-requisitos
- Um projeto de agente hospedado inicializado. Para criar um, consulte Inicializar um projeto de agente.
- As extensões do azd Foundry foram instaladas. Para obter as etapas de instalação, consulte Instalar as extensões do Azd Foundry.
- Uma sessão autenticada da CLI do Desenvolvedor do Azure. Execute
azd auth loginse necessário. - Para problemas de implantação e de logs, use um agente hospedado implantado. Para implantar um, consulte Implantar um agente hospedado.
Coletar contexto de diagnóstico
Antes de se aprofundar em erros específicos, use estes comandos para coletar contexto:
# Check extension version
azd ai agent version
# Verify Azure authentication
azd auth login
# Show current environment configuration
azd env get-values
# View agent details
azd ai agent show
# Show the resolved Foundry project endpoint and where it came from
azd ai project show
# Stream production logs
azd ai agent monitor --follow
Para um relatório de integridade estruturado, execute azd ai agent doctor. Para obter mais informações, consulte Diagnosticar um projeto com o agent doctor.
Diagnosticar latência de invocação
Use os cabeçalhos de depuração de latência para determinar se uma solicitação de agente hospedado lenta passou um tempo na plataforma, provisionando a infraestrutura, aguardando o contêiner ou processando a solicitação em seu agente. Esses cabeçalhos são sinais de diagnóstico, não SLA ou métricas de cobrança.
Habilite o diagnóstico em cada solicitação definindo x-ms-debug-latency-enabled: true. Se a solicitação não incluir esse cabeçalho, a resposta não incluirá os x-ms-debug-latency-* cabeçalhos.
Adicione o cabeçalho de latência a uma requisição do protocolo Responses ou Invocations de um agente hospedado. Este exemplo usa o protocolo Respostas:
ENDPOINT="https://{account}.services.ai.azure.com/api/projects/{project}" API_VERSION="v1" TOKEN=$(az account get-access-token \ --resource https://ai.azure.com \ --query accessToken -o tsv) AGENT="my-code-agent" curl --http2 -i -X POST \ "$ENDPOINT/agents/$AGENT/endpoint/protocols/openai/responses?api-version=$API_VERSION" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -H "x-ms-debug-latency-enabled: true" \ -d '{"model":"gpt-5.4-mini","input":"Hello, agent!","stream":false}'Inspecione os cabeçalhos de resposta. Todos os valores de latência são milissegundos inteiros:
Cabeçalho Meaning x-ms-debug-latency-session-start-typeTipo de início de sessão acionado pela solicitação: inicialização a frio ( cold), inicialização a quente (warm) ou retomada após ociosidade (resume).x-ms-debug-latency-platform-preprocessing-msTempo da plataforma para admissão, autenticação, busca de sessão e orquestração. Ele não inclui atrasos de provisionamento de microVM ou preparação de contêiner. Disponível para inicializações de sessão a frio, a quente e retomadas. x-ms-debug-latency-infra-setup-msHora de provisionar a micro-VM. Omitido para solicitações em andamento. x-ms-debug-latency-container-readiness-msTempo desde a criação da micro-VM até que o contêiner indique que está pronto. Omitido para solicitações em andamento. x-ms-debug-latency-container-response-msTempo desde o encaminhamento pelo proxy até que os cabeçalhos de resposta sejam enviados. Inclui transferência de solicitação, configuração de conexão, tratamento de agente, novas tentativas e buffer de política de saída. x-ms-debug-latency-response-begin-msTempo total desde a aceitação do serviço até o envio dos cabeçalhos de resposta. Esse valor não corresponde ao tempo até o primeiro byte do corpo da resposta ou ao primeiro evento enviado pelo servidor. Os quatro componentes de temporização totalizam
x-ms-debug-latency-response-begin-ms. Em uma solicitação fria ou retomada, se a plataforma não conseguir capturar todos os limites de provisionamento, ela omite os cabeçalhos de infraestrutura e prontidão e inclui esse tempo no pré-processamento da plataforma.Use o tipo de início da sessão e o maior componente de tempo para identificar a provável fonte de atraso:
Result Interpretação O que fazer x-ms-debug-latency-session-start-typeécoldouresume, ex-ms-debug-latency-infra-setup-msé altoA plataforma gastou tempo provisionando a micro-VM. Compare várias solicitações frias ou retomadas. Se o atraso persistir, registre a ID de resposta, o carimbo de data/hora e os cabeçalhos de latência para uma solicitação de suporte. x-ms-debug-latency-session-start-typeécoldouresume, ex-ms-debug-latency-container-readiness-msé altoO contêiner demorou muito tempo para iniciar e sinalizar que estava pronto. Meça as etapas de inicialização nos logs de inicialização, reduza o trabalho antes que o endpoint de prontidão fique disponível e pré-compile o código da aplicação sempre que possível. x-ms-debug-latency-platform-preprocessing-msé alto para qualquer tipo de início de sessãoO atraso ocorreu na plataforma antes do provisionamento da microVM ou da preparação do contêiner. Crie uma solicitação de suporte. Inclua o ID da resposta, a data e hora, o tipo de início de sessão e os cabeçalhos de latência. x-ms-debug-latency-container-response-ms,x-ms-debug-latency-first-byte-ms, ou afirst_byte_msdo reboque está altaO atraso ocorreu após o início do encaminhamento de proxy. Instrumente o manipulador de solicitação e inspecione os logs do agente, as chamadas ao modelo, as chamadas de ferramenta, as repetições e a bufferização de saída.
Reduzir o tempo de preparação do contêiner
O valor de preparação do contêiner inclui o tempo necessário para iniciar o processo, carregar o aplicativo e retornar HTTP 200 de /readiness. Adicione registros de data e hora aos logs de inicialização para identificar importações lentas, carregamento de dependências, chamadas de rede e outras tarefas de inicialização.
Aplique essas otimizações às etapas lentas que você identificar:
- Instale dependências e compile o código ao compilar a imagem. Não execute a instalação, restauração ou compilação do pacote na inicialização do contêiner.
- Use um build de vários estágios e exclua ferramentas de build, caches de pacotes, testes e outros arquivos de desenvolvimento da imagem de runtime.
- Evite chamadas de modelo, migrações, descoberta de ferramentas e download de ativos antes que tudo esteja pronto. Paralelize as inicializações independentes que precisam ser concluídas primeiro.
- Mantenha-se
/readinessfocado em saber se o agente pode aceitar solicitações. Se você adiar a inicialização, meça a primeira solicitação para garantir que não tenha movido o atraso de inicialização para o tratamento de solicitações.
Instale as dependências em um ambiente virtual que você copia para a imagem de execução. Compile as dependências na medida do possível para que um arquivo que não possa ser analisado em um pacote de terceiros não faça a compilação falhar. Compile o aplicativo de forma estrita para que erros de sintaxe façam a compilação falhar.
FROM python:3.13-slim AS build
WORKDIR /app
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN PYTHONDONTWRITEBYTECODE= python -m compileall -q /opt/venv \
|| true; \
PYTHONDONTWRITEBYTECODE= python -m compileall -q /app
FROM python:3.13-slim AS final
ENV PATH="/opt/venv/bin:$PATH"
WORKDIR /app
COPY --from=build /opt/venv /opt/venv
COPY --from=build /app /app
# Precompile the standard library in the runtime image.
RUN PYTHONDONTWRITEBYTECODE= python -m compileall -q \
"$(python -c "import sysconfig; print(sysconfig.get_path('stdlib'))")" \
|| true
CMD ["python", "main.py"]
Limpar PYTHONDONTWRITEBYTECODE para esta etapa de construção permite que o Python grave o bytecode na imagem. A variável de ambiente bloqueia gravações de código de byte, não leituras, de modo que o contêiner em execução ainda pode usar os arquivos compilados.
Referência: compileall – Bibliotecas de Python de compilação de bytes
Crie uma das imagens para a arquitetura x86-64 exigida pelos agentes hospedados:
docker build --platform linux/amd64 -t my-agent:latest .
Aqui, linux/amd64 é uma plataforma Docker, não um identificador de runtime do .NET.
Referência: Requisitos de contêiner do agente hospedado
Investigar a latência do agente e do modelo
Se a prontidão do contêiner for rápida, mas a resposta do contêiner ou o tempo até o primeiro byte for alto, concentre sua investigação no caminho da requisição após o início do encaminhamento.
Execute azd ai agent monitor --follow durante a reprodução da solicitação e adicione o rastreamento em torno de chamadas de modelo, chamadas de ferramenta, serviços externos, novas tentativas e serialização de resposta. Para obter mais informações, consulte Monitor hosted agent logs.
Para um agente que chama um modelo de linguagem de grande porte, meça a latência do modelo separadamente antes de alterar a implantação. Compare a hora com o primeiro token, o tempo entre tokens, a contagem de tokens gerada, o tamanho do prompt, a utilização da implantação e a limitação. Em seguida, avalie a escolha do modelo, os limites de token de saída, o streaming e a separação da carga de trabalho. Consulte Melhorar o desempenho do Azure OpenAI.
Se as medições mostrarem pressão de capacidade sustentada para uma carga de trabalho previsível, avalie uma implantação com capacidade provisionada e dimensione-a com base nos tokens de entrada, tokens de saída e na taxa de solicitações observados. Consulte a taxa de transferência provisionada.
Verificar os tempos de conclusão
Em HTTP/2 ou posterior, o serviço pode retornar o trailer de resposta de melhor esforço x-ms-debug-latency-final . Ele repete os valores de cabeçalho de resposta e pode adicionar estes campos:
| Campo | Meaning |
|---|---|
first_byte_ms |
Tempo da aceitação do serviço até o primeiro byte do corpo da resposta ou evento enviado pelo servidor. |
total_last_byte_ms |
Tempo da aceitação do serviço até que o encaminhamento de resposta seja concluído. |
O trailer usa um formato versionado, delimitado por ponto e vírgula:
x-ms-debug-latency-final: v=1;start=cold;platform_pre_ms=...;
infra_ms=...;ready_ms=...;container_response_ms=...;
response_begin_ms=...;first_byte_ms=...;total_last_byte_ms=...
As respostas HTTP/1.1 não incluem este trailer. Um trailer também pode estar ausente após o cancelamento, a desconexão do cliente, um erro midstream ou quando um gateway ou SDK não preserva trailers. Trate os cabeçalhos de resposta como o contrato de diagnóstico garantido.
Recuperar resultados de latência armazenados
O serviço armazena os tempos capturados junto com a resposta ou invocação. Uma solicitação GET subsequente para a mesma resposta ou ID da invocação retorna os tempos da solicitação original como cabeçalhos de resposta. A solicitação GET não requer o cabeçalho de latência e não mede a solicitação GET em si.
A solicitação GET também pode retornar esses valores de conclusão como cabeçalhos comuns:
| Cabeçalho | Meaning |
|---|---|
x-ms-debug-latency-first-byte-ms |
Tempo até o primeiro byte do corpo da resposta. |
x-ms-debug-latency-total-last-byte-ms |
Tempo até que o encaminhamento de resposta seja concluído. |
O armazenamento eventualmente é consistente, portanto, uma solicitação GET imediatamente após a solicitação original pode não incluir os cabeçalhos ainda. Para uma resposta ou invocação assíncrona, somente os valores de sobrecarga de plataforma estão disponíveis: tipo de início de sessão, pré-processamento de plataforma, configuração de infraestrutura e preparação de contêiner.
Os cabeçalhos de latência não são emitidos para respostas de proxy com falha ou solicitações WebSocket (invocations_ws).
Corrigir erros de autenticação
Corrigir AuthenticationError
Sintomas: O agente falha ao iniciar localmente ou retorna 401/403 ao chamar o modelo de IA.
Causas e correções:
-
Credenciais expiradas – execute
azd auth loginpara atualizar sua sessão de Azure. -
Assinatura incorreta - Verifique com
azd env get-values | grep AZURE_SUBSCRIPTION_IDe compare com a assinatura do projeto do Foundry. - Funções RBAC ausentes - sua identidade precisa da função Foundry User ou de acesso equivalente no projeto do Foundry.
Importante
As funções RBAC do Foundry foram renomeadas recentemente. Foundry User, Foundry Owner, Foundry Account Owner e Foundry Project Manager eram anteriormente chamados de Usuário do Azure AI, Proprietário do Azure AI, Proprietário da conta do Azure AI e Gerente de Projeto do Azure AI. Você ainda pode ver os nomes anteriores em alguns lugares enquanto essa mudança de nome está sendo implementada. Os IDs das funções e as permissões principais não são alterados com a mudança de nome.
Sua identidade também precisa da função Usuário do OpenAI de Serviços Cognitivos para usar implantações de modelos.
Corrija AuthorizationFailed durante o provisionamento
Sintomas:azd up ou azd provision falha com um erro de permissões.
Corrigir: Solicite a função Colaborador em sua assinatura Azure. Para CI/CD, a entidade de serviço também precisa da função Foundry Owner.
Corrigir SubscriptionNotRegistered
Sintomas: O provisionamento falha porque um provedor de recursos necessário não está registrado.
Correção:
az provider register --namespace Microsoft.CognitiveServices
az provider register --namespace Microsoft.ContainerRegistry
Corrigir problemas de desenvolvimento local
Correção da conexão recusada na porta 8088
Sintomas:azd ai agent invoke --local falha ao se conectar.
Causas e correções:
Agente não está em execução -- Inicie-o com
azd ai agent runem um terminal separado.Conflito de porta – outro processo é usar a porta 8088. Interrompa ou use uma porta personalizada:
azd ai agent run --port 9090 azd ai agent invoke --local --port 9090 "Hello!"Falha de inicialização -- verifique o terminal onde
azd ai agent runestá em execução para ver a saída de erro. As causas comuns incluem dependências ausentes, erros de importação oustartupCommandincorretas emazure.yaml.
Corrigir falhas na instalação de dependências
Sintomas:azd ai agent run ocorre uma falha durante a instalação de dependências.
Causas e correções:
- Versão de runtime incorreta – verifique se Python 3.10+ ou .NET 8+ está instalado.
-
Ausente
requirements.txtou.csproj-- a CLI detecta automaticamente o tipo de projeto desses arquivos. Verifique se eles existem no diretório do agente. -
Problemas de rede – Os registros de pacote podem ser bloqueados pelo proxy corporativo. Verifique a configuração de
pipoudotnet.
Corrigir ResourceNotFound ou DeploymentNotFound
Sintomas: o agente inicia, mas falha ao tentar chamar o modelo.
Causas e correções:
-
Incompatibilidade de endpoint — execute
azd env get-valuese verifique seFOUNDRY_PROJECT_ENDPOINTcorresponde ao endpoint mostrado no portal do Foundry. -
Incompatibilidade entre nomes de implantação do modelo -- O nome da implantação do modelo configurado em
azure.yamldeve corresponder ao nome da implantação no seu projeto do Foundry. Faça check-in no portal em Implantações. -
Recursos não provisionados – se você ainda não tiver executado
azd up, os recursos de nuvem não existirão. Executeazd upprimeiro e teste localmente. O agente local ainda chama modelos hospedados na nuvem.
Corrigir problemas de implantação
Corrigir falhas na compilação de contêineres
Sintomas:azd up falha durante a fase de build do Docker.
Causas e correções:
-
Dockerfile ausente - verifique se o diretório do agente tem um
Dockerfile. Se você inicializou a partir de um modelo, isto é gerado automaticamente. -
Erros de contexto de compilação - o
Dockerfiledeve estar no diretório especificado pelo caminhoprojectdo serviço emazure.yaml. -
Instalação de dependências no Docker -- Se o pip/dotnet restore falhar dentro do contêiner, verifique se o seu
requirements.txtou.csprojtem todas as dependências corretamente fixadas.
Corrigir azd up travamentos ou tempos limite
Sintomas: O provisionamento ou implantação leva muito tempo.
Causas e correções:
-
Primeira implantação – A primeira provisiona
azd uptodos os recursos Azure, incluindo o projeto foundry, o ACR, a identidade gerenciada e a implantação do modelo, e pode levar de 5 a 10 minutos. As implantações subsequentes são mais rápidas. -
Build remoto - por padrão, as imagens de contêiner são criadas remotamente no ACR. Isso pode ser mais lento, mas não requer o Docker localmente. Para compilar localmente em vez disso, defina
docker.remoteBuild: falsena configuração do serviçoazure.yaml. - Capacidade da região – algumas regiões podem ter capacidade limitada para determinadas SKUs de modelo. Tente uma região diferente se o provisionamento falhar consistentemente.
Corrigir um agente implantado que não responde
Sintomas:azd ai agent invoke expira ou retorna erros após uma implantação bem-sucedida.
Causas e correções:
-
Falha na investigação de integridade -seu contêiner deve responder a
GET /readinessna porta 8088 com status 200. Verifique os logs comazd ai agent monitor --follow. -
Incompatibilidade de protocolo -- Verifique se o protocolo definido no serviço
azure.ai.agentemazure.yamlcorresponde ao que seu código implementa. Seazure.yamlindicarresponses, mas seu código só lida cominvocations, ou vice-versa, as requisições falham. -
Falhas de contêiner - verifique os logs do sistema para saber se há eventos de reinicialização:
azd ai agent monitor --type system. As causas comuns incluem exceções sem tratamento e problemas de falta de memória. Aumente os recursos do contêinerazure.yaml, se necessário.
Corrigir falhas de comando direto
Esses erros vêm de comandos diretos azd ai, como azd ai connection, azd ai toolbox e azd ai routine, quando executados em um projeto Foundry.
Corrigir ausência de ponto de extremidade resolvido do projeto do Foundry
Sintomas: Um comando direto é encerrado com No Foundry project endpoint resolved. Run azd ai project set to set one, or pass --project-endpoint.
Causa: A CLI não conseguiu encontrar um endpoint do projeto Foundry em nenhuma das fontes compatíveis: o sinalizador --project-endpoint, o ambiente azd ativo, a configuração global ou a variável de ambiente FOUNDRY_PROJECT_ENDPOINT.
Correções:
- Execute
azd ai project set <endpoint>para armazenar o endpoint na configuração global doazd(~/.azd/config.json). - Passe
--project-endpoint(-p) em cada comando:azd ai connection list -p https://my-proj.services.ai.azure.com/api/projects/my-project. - Defina
FOUNDRY_PROJECT_ENDPOINTem seu ambiente de shell.
Para ver a ordem completa de resolução e quando cada fonte prevalece, consulte Entenda o contexto do projeto azd.
Corrigir falhas de criação para recursos existentes
Sintomas:azd ai connection create, azd ai toolbox create, azd ai routine create ou azd ai skill create falha com o erro "já existe".
Causa: por padrão, create não é executar upsert. O modo de falha padrão impede que um desenvolvedor substitua silenciosamente o estado de outro em um projeto de Foundry compartilhado.
Correções:
- Escolha um nome diferente e execute novamente.
- Passe
--force, nos casos em que o comandocreatefor compatível com ele, para substituir o recurso existente por meio de uma operação PUT do ARM. A substituição é destrutiva: ela substitui o recurso existente no local, e qualquer divergência decorrente de edições manuais no portal, metadados ou credenciais é perdida. O comandoazd ai toolbox createnão oferece suporte a--force. Exclua a caixa de ferramentas existente ou use um novo nome.
Corrigir connection show saída de credenciais
Sintomas:azd ai connection show <name> retorna o nome, o tipo, o destino e o tipo de autenticação da conexão, mas nenhuma chave de API ou valor de credencial.
Causa: Por design, os valores de credencial nunca são retornados por padrão. Eles exigem o sinalizador explícito --show-credentials.
Correção:
azd ai connection show tavily-conn --show-credentials
Isso invoca a API do plano de dados e requer permissões de plano de dados no projeto do Foundry, como o Usuário do Foundry ou equivalente. Se você tiver acesso apenas ao plano de gerenciamento Reader ou Contributor, a chamada falhará com status 403. Peça ao responsável pelo projeto a função do plano de dados.
Ler os logs do agente
Use azd ai agent monitor para inspecionar o comportamento do agente:
# Stream all recent logs
azd ai agent monitor --follow
# View system-level events (container starts, crashes, restarts)
azd ai agent monitor --type system
# Filter to a specific session
azd ai agent monitor --session-id <session-id>
Os padrões de log comuns incluem:
| Mensagem de log | Meaning |
|---|---|
Listening on 0.0.0.0:8088 |
Agente iniciado com êxito. |
AuthenticationError |
Problema de credenciais ou de RBAC. Verifique a identidade gerenciada. |
ModelNotFound |
O nome da implantação de modelo não corresponde a azure.yaml. |
| Reinicialização de contêiner em eventos do sistema | Loop de falha. Verifique os erros de código ou aumente os limites de recursos. |
Diagnosticar falhas de rotina
As rotinas falham de forma diferente das chamadas interativas agent invoke porque nenhum chamador está presente para exibir o erro. Uma rotina é uma execução de um agente acionada por temporizador, recorrente, acionada por problema do GitHub ou acionada por evento personalizado. Use azd ai routine run list para inspecionar o que aconteceu.
Inspecionar execuções anteriores
# Recent runs of a routine: trigger time, agent input/output, status, trace link
azd ai routine run list daily-digest
Filtrar por falhas
# Failed runs only, with an OData filter
azd ai routine run list daily-digest --filter "status eq 'failed'"
Combine com --top para ampliar ou restringir a janela.
Analisar em detalhes uma única execução
# Full detail for the most recent runs as JSON, then look up the run you care about
azd ai routine run list daily-digest --top 5 --output json
A saída JSON inclui o payload de entrada, a resposta do agente e um link direto para o rastreamento distribuído, o mesmo rastreamento que você veria em uma invocação interativa.
Acionar manualmente uma rotina novamente
Se você precisar reproduzir uma falha ou testar uma correção, dispare a rotina sob demanda com dispatch:
azd ai routine dispatch daily-digest
azd ai routine dispatch triage-issues --input '{"issue":{"number":42}}'
dispatch é executado de forma assíncrona e imprime uma ID de expedição. Verifique o resultado com azd ai routine run list <name>.
Corrigir uma execução de rotina com falha
azd ai routine run list mostra a execução com status: failed. Siga o link de rastreamento para ver o erro do agente subjacente, como erro de modelo, falha de ferramenta ou tempo limite. As correções do lado do agente são as mesmas usadas para falhas interativas. Consulte Corrigir erros de autenticação e Ler os logs do agente.
Corrigir uma rotina que nunca é acionada
Se azd ai routine run list não retornar execução alguma, o gatilho em si não está sendo disparado:
- Verifique se a rotina está habilitada:
azd ai routine show <name>. Busqueenabled: true. - Para gatilhos
timer, verifique se--atestá no futuro e ainda não tenha sido acionado. - Para gatilhos
recurring, verifique se a expressão--croné válida e se o--time-zoneé o que você esperava. - Para gatilhos
github-issue, verifique se o--connection-idse resolve em uma conexão válida e se o repositório do GitHub e--issue-eventcorresponde aos eventos emitidos pelo repositório. - Para gatilhos
custom, verifique se o escopo de--provider,--event-namee--parameterscorresponde aos eventos que o provedor está publicando.
Obter mais ajuda
-
Modo de depuração - adicione
--debuga qualquer comandoazdpara saída detalhada. - Azure portal -- Verifique o projeto foundry no portal Azure para obter diagnóstico e integridade do recurso.
- Registrar um bug – relatar problemas em github.com/Azure/azure-dev/issues.
Conteúdo relacionado
- Monitore os logs do agente hospedado com a CLI do Desenvolvedor do Azure para obter opções mais profundas de inspeção de log.
- Teste um agente hospedado para evitar problemas com testes estruturados.
- Faça o diagnóstico de um projeto com o agent doctor para obter um relatório estruturado da integridade do projeto.