Início Rápido: Criar agentes sem servidor usando Azure Functions

Neste início rápido, você implanta agentes sem servidor para Azure Functions usando a CLI do Desenvolvedor Azure (azd). O exemplo inclui dois agentes:

  • Um agente de chat que você pode usar para testar o aplicativo implantado em um navegador. Esse agente pode usar execução de código Python em sandbox e navegar na web.
  • Um agente acionado por temporizador que reúne posts recentes do blog da Microsoft, os resume e pode enviar o resumo por e-mail usando ferramentas MCP de um servidor MCP gerenciado para o conector do Microsoft 365 Outlook.

O projeto usa o runtime de agentes sem servidor do Azure Functions. Você define agentes em arquivos markdown, configura os padrões de runtime de todo o aplicativo em agents.config.yaml, conecta servidores MCP remotos em mcp.json e implanta o aplicativo como qualquer outro aplicativo de função.

O modelo provisiona um aplicativo de funções no plano Flex Consumption, armazenamento, monitoramento, um projeto no Microsoft Foundry e a implantação de um modelo, um pool dinâmico de sessões do Aplicativos de Contêiner do Azure e as atribuições de identidade necessárias. Quando a entrega de e-mail está habilitada, ela também provisiona um namespace do conector, uma conexão com o Microsoft 365 Outlook e um servidor MCP gerenciado para o conector.

Concluir este início rápido pode incorrer em um pequeno custo em sua conta de Azure porque o aplicativo usa o plano de Consumo Flex e recursos de Azure relacionados.

Pré-requisitos

  • Azure Developer CLI (azd).
  • CLI do Azure. Você também pode executar comandos da CLI do Azure no Azure Cloud Shell.
  • Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
  • Permissões para criar grupos de recursos, aplicativos de função, identidades gerenciadas, recursos do Microsoft Foundry, implantações de modelo, pools de sessão do Aplicativos de Contêiner do Azure, Connector Namespaces e conexões em sua assinatura.
  • Para habilitar o envio de e-mail, use uma conta do Microsoft 365 na qual você possa fazer login, que possa enviar e-mails e que possa ser usada como endereço de destinatário para verificar a saída do agente.

Inicializar o projeto

Use o azd init comando para criar um projeto local a partir do repositório de exemplo.

  1. Em Visual Studio Code, abra uma pasta ou workspace em que você deseja criar seu projeto.

  2. No Terminal, execute este azd init comando:

    azd init --template Azure-Samples/functions-quickstart-serverless-agents-azd -e serverless-agents
    

    Esse comando extrai os arquivos de projeto do repositório de exemplo serverless agents e inicializa o projeto na pasta atual. O sinalizador -e nomeia o ambiente azd atual, que rastreia o estado da implantação e é usado em nomes de recursos Azure.

  3. Habilite a entrega de email definindo o endereço de email do destinatário usado pelo agente de temporizador. Posteriormente neste início rápido, você deve entrar em uma conta de Microsoft 365 para autorizar a conexão Microsoft 365 Outlook que envia o email.

    azd env set TO_EMAIL <recipient@example.com>
    

    Substitua <recipient@example.com> por seu próprio endereço de email ou por outro destinatário permitido pelas políticas de email da sua organização. Algumas organizações restringem o email baseado em conector a destinatários internos ou bloqueiam destinatários externos, portanto, enviar a mensagem de teste para si mesmo é a opção mais confiável.

    Note

    A entrega de email é opcional no exemplo. Se você ignorar esta configuração, azd up não criará o namespace do conector, a conexão do Microsoft 365 Outlook ou o servidor MCP gerenciado. O agente de temporizador continua em execução e retorna o resumo na resposta final para que você possa verificar a execução nos logs ou no Application Insights.

Examinar o projeto

Antes de implantar, examine os arquivos de projeto que definem o aplicativo de agente sem servidor:

Arquivo ou pasta Purpose
src/main.agent.md Define o agente de chat e habilita endpoints integrados para a interface de depuração do chat. Esse agente pode usar a execução de código Python em sandbox e não usa o servidor MCP gerenciado do Microsoft 365 Outlook.
src/daily_microsoft_blog_summary.agent.md Define o agente de resumo do blog da Microsoft acionado por temporizador. O bloco de metadados YAML declara o gatilho de temporização, e o corpo em Markdown contém as instruções do agente.
src/agents.config.yaml Define os padrões padrão de tempo de execução para todo o aplicativo, incluindo a implantação do modelo e o ponto de extremidade do pool dinâmico de sessões do Aplicativos de Contêiner do Azure usado pelos agentes no aplicativo.
src/mcp.json Lista os servidores MCP remotos disponíveis para os agentes. Neste template, src é a raiz do projeto do Function App, e este arquivo inclui o ponto de extremidade do servidor MCP gerenciado do Microsoft 365 Outlook quando a entrega de e-mail está habilitada.
infra/ Contém os arquivos Bicep usados por azd para provisionar o aplicativo de função, o armazenamento, o monitoramento, os recursos do Foundry, a implantação do modelo, o pool de sessões, os recursos opcionais do namespace do conector e a configuração de identidade.
src/function_app.py Arquivo de inicialização necessário para o host do Functions. Normalmente, você não precisa editar esse arquivo.

O agente disparado pelo temporizador é definido em daily_microsoft_blog_summary.agent.md. O front matter declara o agendamento do temporizador, e as instruções em Markdown dizem ao agente para coletar postagens recentes do blog da Microsoft, criar um resumo e enviar e-mail quando TO_EMAIL estiver configurado.

Publicar no Azure

Use azd up para provisionar recursos Azure e implantar o aplicativo de funções.

  1. No Terminal, execute este comando na raiz do projeto inicializado:

    azd up
    
  2. Quando solicitado, selecione a assinatura Azure e o local a serem usados para o grupo de recursos.

    O template usa suas configurações padrão de implantação de modelo do Microsoft Foundry, a menos que você personalize os parâmetros do Bicep.

Depois que o comando for concluído, o aplicativo será implantado em um novo aplicativo de funções no Azure. A saída da implantação inclui links para os recursos criados.

Autorizar a conexão

Quando TO_EMAIL está definido, a implantação cria um namespace de conector com uma conexão com o Microsoft 365 Outlook e um servidor MCP gerenciado. Essa configuração permite que o agente de timer envie e-mails por meio de ferramentas de conector sem a necessidade de código personalizado da API do Outlook. Antes que o agente possa enviar email, autorize a conexão entrando em uma conta de Microsoft 365 que possa enviar emails.

Se você não definiu TO_EMAIL, ignore esta seção.

  1. No portal do Azure, pesquisar Connector Namespace.

  2. Abra o recurso Namespace do Conector criado por azd. O recurso está no grupo de recursos criado por azd, cujo nome começa rg- e inclui o nome do ambiente que você escolheu durante azd init (serverless-agents se você usou o comando de exemplo).

    Ao selecionar o recurso, o portal Connector Namespaces é aberto, uma experiência independente para navegar e gerenciar as conexões, os gatilhos e os servidores MCP no namespace.

  3. No portal Namespaces do Conector, localize o conector Microsoft 365 Outlook e, em seguida, abra a conexão criada pela implantação.

  4. Selecione Authenticate e entre com a conta Microsoft 365 que pode enviar email.

Depois que a autenticação for bem-sucedida, a identidade gerenciada do aplicativo de funções poderá chamar o servidor MCP gerenciado, que usa a conexão autorizada para enviar email.

Usar o agente de chat de depuração

O exemplo inclui um agente de chat que pode usar a execução de código em Python por meio do pool dinâmico de sessões do Aplicativos de Contêiner do Azure. A interface de chat é um ambiente de depuração para testar o aplicativo do agente implantado.

Depois que azd up for concluído, abra o endpoint do aplicativo de função mostrado na saída da implantação e depois acesse /agents/main/. Quando a interface de usuário do chat é carregada, ela solicita a chave da função para poder chamar o endpoint de chat do agente.

Obtenha a chave de função padrão para o aplicativo:

az functionapp keys list \
  --resource-group <RESOURCE_GROUP> \
  --name <FUNCTION_APP_NAME> \
  --query "functionKeys.default" \
  --output tsv

Cole a chave retornada no prompt da interface de chat.

Tente fazer uma pergunta ao agente de chat que se beneficie das informações públicas atuais ou da execução de código. Por exemplo, pergunte What's the weather in Seattle right now? ou Compare the current weather in Seattle and New York.

O agente de chat não usa o servidor MCP gerenciado Microsoft 365 Outlook. O envio de e-mail é usado apenas pelo agente de resumo do blog acionado por temporizador.

Executar o agente de temporizador sob demanda

O agente é executado automaticamente de acordo com a programação do temporizador. Para testá-la imediatamente, execute manualmente a função disparada pelo temporizador no portal do Azure.

  1. No portal Azure, abra o aplicativo de funções criado por azd.

  2. Na folha Visão geral , selecione Funções e, em seguida, selecione a função de agente disparada pelo temporizador chamada daily_microsoft_blog_summary.

  3. Selecione Código + Teste.

  4. Selecione Logs para abrir o fluxo de log para essa função.

  5. Selecione Testar/Executar, deixe o corpo da solicitação como {}e selecione Executar.

A solicitação retorna uma resposta aceita e a execução da função começa em segundo plano.

Monitore a execução

Retorne ao painel Logs em Código + Teste para a função disparada pelo temporizador. Os logs mostram a execução da função e as mensagens de runtime. Dependendo do nível de log do runtime, você também poderá ver o modelo e a atividade da ferramenta.

Você também pode usar o Application Insights para examinar a execução após a ingestão da telemetria:

  1. No menu à esquerda do aplicativo de funções, selecione Application Insights.

  2. Abra o recurso do Application Insights associado.

  3. Use a pesquisa de transações ou logs para localizar a execução iniciada quando você executou manualmente a função.

A execução é concluída quando os logs mostram que a execução da função foi concluída com êxito. Se a entrega de email estiver habilitada e a conexão do Microsoft 365 Outlook estiver autorizada, verifique a caixa de entrada do destinatário para ver o resumo do blog da Microsoft. Caso contrário, examine a resposta final do agente nos logs de funções ou no Application Insights.

Limpar os recursos

Quando terminar, use este comando para excluir o aplicativo de funções e os recursos relacionados de Azure:

azd down