Ambiente de execução de agentes sem servidor no Funções do Azure

O ambiente de execução serverless para agentes do Funções do Azure é um modelo de programação para criar agentes de IA orientados a eventos sob a forma de aplicações do Funções do Azure. Os agentes podem começar com pedidos HTTP, temporizadores, filas, blobs, alterações na base de dados ou eventos do Connector. Defines agentes em .agent.md ficheiros, configuras ferramentas e predefinições de runtime juntamente com o teu projeto, e implementas a aplicação como qualquer outra aplicação funcional. O runtime gere o registo de acionadores, as chamadas ao modelo, a composição de ferramentas, o histórico da sessão e a observabilidade numa infraestrutura sem servidor.

Importante

O runtime dos agentes sem servidor está atualmente em pré-visualização. Funcionalidades, nomes de configuração e conectores suportados podem mudar antes da disponibilidade geral.

Quando utilizar o ambiente de execução dos agentes serverless

Utilize o ambiente de execução dos agentes serverless se o seu agente for orientado por eventos, recorrer intensivamente a ferramentas ou estiver operacionalmente próximo das cargas de trabalho do Funções do Azure. Cenários para o tempo de execução do agente serverless incluem:

  • Agentes programados em segundo plano que resumem, monitorizam, fazem reconciliação ou geram relatórios.
  • Assistentes orientados por eventos que reagem a mensagens, emails, alertas, mensagens em fila ou alterações de dados.
  • Agentes entre sistemas que utilizam conectores para coordenar o trabalho entre aplicações SaaS e empresariais.
  • Interfaces conversacionais que expõem o mesmo agente através de HTTP, interface de chat ou MCP.
  • Agentes que devem escalar para zero e utilizar identidade gerida, monitorização, slots de implementação e outras capacidades de alojamento do Azure.

Nos cenários seguintes, o ambiente de execução do agente serverless pode não ser a melhor opção:

Scenario Melhor opção
Expor funções determinísticas como ferramentas para outro cliente de IA extensão MCP do Funções do Azure
Orquestração de longa duração, com várias etapas e aprovações com intervenção humana Durable Functions
Construtor de agentes sem código Copilot Studio ou agentes de pedidos do Foundry

Para uma comparação detalhada com outras opções de agentes Microsoft, veja Comparar o tempo de execução dos agentes serverless com outras opções de agentes Microsoft.

Sugestão

Para experimentar o runtime de agentes serverless, consulte Construir agentes serverless usando Funções do Azure. Ao usar um azd modelo, pode ter uma aplicação funcional implementada no Azure em minutos.

Porque criar agentes no Funções do Azure?

Os agentes de produção precisam de mais do que um prompt e um modelo. Precisam de formas fiáveis para iniciar o trabalho, ligar para sistemas externos, persistir o histórico de conversas, executar código não confiável em segurança, autenticar sem segredos, emitir telemetria e escalar a pedido.

O Functions fornece um modelo de computação orientado a eventos para estas preocupações operacionais. O ambiente de execução dos agentes serverless aplica simplesmente esse mesmo modelo ao código do seu agente. Aqui estão alguns benefícios de usar o runtime do agente serverless para construir e executar o código do seu agente:

  • Os agentes são a unidade de trabalho. Cada agente é definido num ficheiro markdown separado.
  • Eventos iniciam agentes. Functions aciona agentes de início a partir de agendamentos, pedidos HTTP, mensagens de fila, alterações de blobs, eventos da Grelha de Eventos, mensagens do Service Bus e outros eventos suportados.
  • As funcionalidades configuram-se primeiro, recorrendo a código apenas quando necessário. Pode configurar agentes para utilizar servidores MCP remotos, servidores MCP alojados em espaços de nomes de conectores, competências e execuções de código isoladas. Escreve as tuas próprias ferramentas baseadas em Python para lógica específica de aplicações.
  • Está disponível alojamento sem servidor. O ambiente de execução dos agentes serverless suporta os planos Flex Consumption e Dedicated (App Service). O plano Flex Consumption oferece escala até zero, faturação por segundo e escalonamento automático. Ambos os planos suportam identidade gerida, integração com redes virtuais e integração com Application Insights.
  • A canalização operacional está incorporada. O runtime gere a descoberta de agentes, registo de gatilhos, montagem de ferramentas, histórico de sessões e endpoints opcionais incorporados.

Definição do projeto

Uma aplicação de agentes serverless é um projeto padrão de aplicação de funções Python v2, implementado em conjunto com ficheiros específicos para agentes. Os seguintes ficheiros de projeto são sempre necessários para aplicações de funções em Python:

Ficheiro Purpose
function_app.py Importa create_function_app() e devolve a aplicação de Funções do Azure configurada.
host.json Configura o host do Funções do Azure.
requirements.txt Inclui o pacote de tempo de execução dos agentes serverless e todas as dependências Python específicas da aplicação.

Para mais informações, consulte o guia de referência para programadores do Funções do Azure para aplicações Python.

Ficheiros de execução do agente

O runtime descobre estes ficheiros e pastas específicos do agente, que são implementados com o projeto da aplicação:

Ficheiro ou pasta Purpose
*.agent.md Define os agentes. O cabeçalho YAML configura o agente, e o corpo em Markdown constitui as instruções. O seu projeto deve ter pelo menos um ficheiro de definição de agente.
agents.config.yaml (Opcional) Define as predefinições de runtime para toda a aplicação, como o modelo, o timeout e as definições da sandbox.
mcp.json Define os servidores HTTP MCP remotos que os agentes podem usar como ferramentas, incluindo ferramentas de ligação para tarefas como enviar emails ou trabalhar com o Teams.
tools/ (Opcional) Contém quaisquer ferramentas Python personalizadas que crie para fornecer capacidades que não sejam já fornecidas por servidores MCP, ligações, competências ou execuções em sandbox.
skills/ (Opcional) Contém recursos de prompt reutilizáveis SKILL.md que os agentes podem carregar conforme necessário.

Cada ficheiro de agente inclui front matter em YAML, seguido de instruções em Markdown. Este exemplo define um agente ativado por temporizador que corre diariamente às 15h (UTC):

---
name: Daily Tech News Email
description: Fetches top tech news and emails a summary daily.

trigger:
  type: timer_trigger
  args:
    schedule: "0 0 15 * * *"
---

You are a news assistant. When triggered, do the following:

1. Gather today's top technology news from reputable sources.
1. Summarize the stories in a concise HTML email body.
1. Email the summary to $TO_EMAIL with the subject "Daily Tech News Summary".

A secção introdutória indica como o agente é invocado. O corpo em Markdown é o bloco de instruções que o ambiente de execução passa ao modelo durante a execução. A substituição de variáveis de ambiente permite que instruções e valores de configuração referenciam definições de aplicação, como $TO_EMAIL.

Cada .agent.md ficheiro define um agente. O nome do ficheiro determina o nome da Azure Function e o segmento de rota dos pontos finais incorporados. O name campo é um nome de exibição para registos, etiquetas e documentação.

Para a lista completa dos campos dos ficheiros do agente, das opções de configuração da aplicação e das regras de substituição de variáveis, consulte Referência do tempo de execução dos agentes sem servidor.

Processo de arranque da aplicação

Quando o anfitrião das Funções carrega a aplicação, o método create_function_app descobre ficheiros de agente (acionadores), servidores MCP, competências e ferramentas personalizadas no projeto. Valida a configuração, reúne as ferramentas para cada agente e regista os gatilhos e endpoints necessários.

Quando um disparador específico do agente é ativado, o runtime constrói o agente com as suas instruções resolvidas, modelo, ferramentas e histórico de sessão, e depois executa-o usando o Microsoft Agent Framework.

Acionar agentes através de eventos

O runtime suporta vários acionadores de agente na tua aplicação, mas apenas um acionador por ficheiro de agente. Uma definição de gatilho tem um type e um args objeto. O type identifica o vínculo do acionador, e args contém as definições específicas do acionador que determinam que evento inicia o agente.

Padrões comuns de gatilho incluem:

Pattern Example
Agente HTTP Receber uma solicitação, invocar ferramentas e devolver uma resposta estruturada.
Agente agendado Execute um fluxo de trabalho diário de criação de relatórios, resumo, limpeza ou reconciliação.
Fila ou agente de mensagens Processar itens de trabalho que necessitem de raciocínio de modelo ou chamadas de ferramentas.
Agente de armazenamento ou de eventos de base de dados Reagir a ficheiros, registos ou eventos alterados.
Agente acionado por conector Reagir a eventos de conectores geridos, como mensagens do Teams, correio do Outlook ou eventos de calendário suportados pelo conector.

Para obter detalhes sobre a configuração de gatilhos, os tipos suportados e a referência args, consulte Referência do runtime dos agentes serverless.

Dar ferramentas aos agentes

O ambiente de execução dos agentes sem servidor suporta vários tipos de ferramentas. Começa com capacidades configuradas e usa ferramentas Python personalizadas para lógica específica da aplicação que não se encaixe nessas opções.

Servidores MCP remotos

Defina servidores HTTP remotos ou HTTP MCP transmitíveis em mcp.json. O runtime descobre estes servidores e disponibiliza as suas ferramentas a todos os agentes. Use servidores MCP remotos quando os agentes precisarem de chamar ferramentas alojadas por outro serviço ou compor agentes e ferramentas através das fronteiras da aplicação.

Conectores do Azure

Os conectores permitem que os agentes trabalhem com serviços externos sem código cliente personalizado da API. Um Espaço de nomes do conector acolhe conexões, acionadores e servidores MCP para serviços como o Microsoft 365 Outlook, o Teams, o Salesforce, o SAP ou o SQL. Utilize acionadores de conector para iniciar agentes a partir de eventos externos e ferramentas MCP do conector para invocar ações de serviço a partir de instruções do agente.

Competências

Armazene elementos reutilizáveis de prompt em skills/. Cada pasta de habilidades contém um SKILL.md ficheiro com um nome, descrição e instruções de marcação. O runtime descobre automaticamente competências e torna-as disponíveis para os agentes. As competências ajudam a manter as instruções do agente base pequenas, ao mesmo tempo que disponibilizam orientações específicas para cada domínio quando necessário.

Execução em sandbox

O ambiente de execução pode usar sessões dinâmicas do Azure Container Apps para fornecer aos agentes uma ferramenta execute_python. Esta ferramenta executa Python num pool de sessões isolado, o que é útil para tarefas de execução de código e análise de dados. Configure o ponto final do pool de sessões em agents.config.yaml.

Ferramentas personalizadas de Python

Usa ferramentas Python personalizadas para capacidades específicas da aplicação. Adicione ficheiros .py à pasta tools/ e decore funções com @tool do pacote de runtime. O runtime descobre e regista automaticamente estas ferramentas.

Para obter detalhes de configuração, tabelas de campos e exemplos de código para cada tipo de ferramenta, consulte Referência do runtime de agentes sem servidor.

Sessões e estado

As interações com agentes em múltiplos turnos precisam de histórico de sessões. No Azure, o tempo de execução armazena o histórico de sessões no Armazenamento de Blobs na conta da aplicação de funções AzureWebJobsStorage. Para desenvolvimento local, o runtime recorre ao histórico de sessões baseado em ficheiros. A execução em sandbox também tem em conta a sessão e utiliza sessões isoladas para execuções de agentes sem relação entre si.

Observability

A partir da azure-functions-agents-runtime versão 0.1.0b6, o runtime inclui um conjunto de funcionalidades de observabilidade que ainda está em desenvolvimento ativo e sujeito a alterações.

Para os detalhes de configuração mais recentes, campos de telemetria e orientações de utilização, utilize a documentação do repositório em tempo de execução: