Compartilhar via


Tutorial: Criar um aplicativo Web agente no Serviço de Aplicativo do Azure com o LangGraph ou o Serviço do Foundry Agent (Python)

Este tutorial demonstra como adicionar a funcionalidade de agente a um aplicativo CRUD FastAPI controlado por dados. Ele faz isso usando duas abordagens diferentes: LangGraph e Foundry Agent Service.

Se seu aplicativo Web já tiver recursos úteis, como compras, reservas de hotéis ou gerenciamento de dados, é relativamente simples adicionar funcionalidade de agente ao seu aplicativo Web encapsulando essas funcionalidades em um plug-in (para LangGraph) ou como um ponto de extremidade OpenAPI (para o Serviço do Foundry Agent). Neste tutorial, você começará com um aplicativo simples de lista de tarefas pendentes. Ao final, você poderá criar, atualizar e gerenciar tarefas com um agente em um aplicativo do Serviço de Aplicativo.

O LangGraph e o Foundry Agent Service permitem criar aplicativos Web agente com recursos controlados por IA. O LangGraph é semelhante ao Microsoft Agent Framework e é um SDK. A seguinte tabela mostra algumas das considerações e compensações:

Consideração LangGraph ou Microsoft Agent Framework Serviço de Agente da Fábrica
Performance Rápido (executado localmente) Mais lento (gerenciado, serviço remoto)
Desenvolvimento Código completo, controle máximo Pouco código, integração rápida
Testing Testes manuais/de unidade no código Playground interno para testes rápidos
Escalabilidade Gerenciado pelo aplicativo Gerenciado pelo Azure, escalado automaticamente
Proteções de segurança Implementação personalizada necessária Segurança e moderação de conteúdo embutidas
Identidade Implementação personalizada necessária ID de agente integrado e autenticação
Enterprise Integração personalizada necessária Implantação integrada do Microsoft 365/Teams e chamadas integradas de ferramentas no Microsoft 365.

Neste tutorial, você aprenderá como:

  • Converter a funcionalidade de um aplicativo existente em um plug-in para o LangGraph.
  • Adicionar o plug-in a um agente do LangGraph e usá-lo em um aplicativo Web.
  • Converta a funcionalidade de aplicativo existente em um endpoint OpenAPI para o Foundry Agent Service.
  • Chame um agente do Foundry em um aplicativo Web.
  • Atribuir as permissões necessárias para a conectividade da identidade gerenciada.

Pré-requisitos

Abrir a amostra com o Codespaces

A maneira mais fácil de começar é usar o GitHub Codespaces, que fornece um ambiente de desenvolvimento completo com todas as ferramentas necessárias pré-instaladas.

  1. Navegue até o repositório do GitHub em https://github.com/Azure-Samples/app-service-agentic-langgraph-foundry-python.

  2. Selecione o botão Código, selecione a guia Codespaces e selecione Criar codespace em main.

  3. Aguarde alguns instantes para que o Codespace seja inicializado. Quando ele estiver pronto, você verá um ambiente de desenvolvimento totalmente configurado no navegador.

  4. Execute o aplicativo localmente:

    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    uvicorn src.app:app --host 0.0.0.0 --port 3000
    
  5. Quando você receber a mensagem Seu aplicativo em execução na porta 3000 está disponível, selecione Abrir no Navegador e adicione algumas tarefas.

    Os agentes não estão totalmente configurados, portanto, ainda não funcionam. Você vai configurá-los mais tarde.

Revisar o código do agente

As duas abordagens usam o mesmo padrão de implementação, em que o agente é inicializado na inicialização do aplicativo e responde às mensagens do usuário por solicitações POST.

O LangGraphTaskAgent é inicializado no construtor em src/agents/langgraph_task_agent.py. O código de inicialização faz o seguinte:

  • Configura o cliente AzureChatOpenAI usando variáveis de ambiente.
  • Cria o agente ReAct predefinido com memória e um conjunto de ferramentas CRUD para gerenciamento de tarefas (consulte o início rápido do LangGraph).
# Initialize Azure OpenAI client
credential = DefaultAzureCredential()
azure_ad_token_provider = get_bearer_token_provider(
    credential, "https://cognitiveservices.azure.com/.default"
)

self.llm = AzureChatOpenAI(
    azure_endpoint=endpoint,
    azure_deployment=deployment_name,
    azure_ad_token_provider=azure_ad_token_provider,
    api_version="2024-10-21"
)

# Define tools
tools = [
    self._create_task_tool(),
    self._get_tasks_tool(),
    self._get_task_tool(),
    self._update_task_tool(),
    self._delete_task_tool()
]

# Create the agent
self.agent = create_react_agent(self.llm, tools, checkpointer=self.memory)
print("LangGraph Task Agent initialized successfully")

Ao processar mensagens de usuário, o agente é invocado usando ainvoke() a mensagem do usuário e uma ID de thread para continuidade da conversa:

result = await self.agent.ainvoke(
    {"messages": [("user", message)]},
    config=config
)

Implantar o aplicativo de exemplo

O repositório de amostras contém um modelo do Azure Developer CLI (AZD) que cria um aplicativo do Serviço de Aplicativo com a identidade gerenciada e implanta o aplicativo de exemplo.

  1. No terminal, faça logon no Azure usando o Azure Developer CLI:

    azd auth login
    

    Siga as instruções para concluir o processo de autenticação.

  2. Implante o Serviço de Aplicativo do Azure aplicativo com o modelo do AZD:

    azd up
    
  3. Quando solicitado, dê as seguintes respostas:

    Pergunta Resposta
    Insira um novo nome de ambiente: Digite um nome exclusivo.
    Selecione uma assinatura do Azure a ser usada: Selecione a assinatura.
    Escolha o grupo de recursos a ser usado: Selecione Criar um grupo de recursos.
    Escolha uma localização na qual o grupo de recursos será criado: Selecione Suécia Central.
    Insira um nome para o novo grupo de recursos: Digite ENTER.
  4. Na saída do AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL fica assim na saída do AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  5. Abra o esquema OpenAPI gerado automaticamente no https://....azurewebsites.net/openapi.json caminho. Você precisará desse esquema mais tarde.

    Agora você tem um aplicativo do Serviço de Aplicativo com uma identidade gerenciada atribuída pelo sistema.

Criar e configurar o recurso microsoft foundry

  1. No portal do Foundry, verifique se o botão de opção Novo Foundry no topo está definido como ativo e crie um projeto.

  2. Implante um modelo de sua escolha (consulte o Início Rápido do Microsoft Foundry: Criar recursos).

  3. Na parte superior da área de testes do modelo, copie o nome dele.

  4. A maneira mais fácil de obter o endpoint do Azure OpenAI ainda é a partir do portal clássico. Selecione o botão de opção Novo Foundry e, em seguida, OpenAI do Azure; depois, copie a URL no ponto de extremidade do OpenAI do Azure para uso posterior.

    Captura de tela mostrando como copiar o ponto de extremidade OpenAI e o ponto de extremidade do projeto foundry no portal dofoundry.

Atribuir as permissões necessárias

  1. No menu superior do novo portal do Foundry, selecione Operar e, em seguida, selecione Administrador. Na linha do projeto foundry, você deverá ver dois links. O que está na coluna Nome é o Recurso do Projeto Foundry, e o da coluna Recurso Pai é o Recurso Foundry.

    Captura de tela mostrando como acessar rapidamente o recurso do Foundry ou o recurso de projeto do Foundry.

  2. Selecione o recurso Foundry no recurso Pai e, em seguida, selecione Gerenciar esse recurso no portal do Azure. No portal do Azure, você pode atribuir acesso baseado em função para o recurso ao aplicativo Web implantado.

  3. Adicione a seguinte função à identidade gerenciada do App Service:

    Recurso de destino Função necessária Necessário para
    Fundição Usuário dos Serviços Cognitivos OpenAI O serviço de conclusão de chat no Microsoft Agent Framework.

    Para obter instruções, confira Atribuir funções do Azure usando o portal do Azure.

Configurar variáveis de conexão no aplicativo de exemplo

  1. Abra o .env. Usando os valores copiados anteriormente do portal do Foundry, configure as seguintes variáveis:

    Variable Description
    AZURE_OPENAI_ENDPOINT Endpoint do Azure OpenAI (copiado do portal clássico do Foundry).
    AZURE_OPENAI_DEPLOYMENT_NAME Nome do modelo na implantação (copiado do ambiente de testes de modelos no novo portal Foundry).

    Observação

    Para simplificar o tutorial, você usará essas variáveis no .env em vez de substituí-las pelas configurações de aplicativo no Serviço de Aplicativo.

    Observação

    Para simplificar o tutorial, você usará essas variáveis no .env em vez de substituí-las pelas configurações de aplicativo no Serviço de Aplicativo.

  2. Entre no Azure com a CLI do Azure:

    az login
    

    Assim, a biblioteca de clientes da Identidade do Azure no código de exemplo poderá receber um token de autenticação para o usuário conectado. Lembre-se de que você adicionou a função necessária para esse usuário anteriormente.

  3. Execute o aplicativo localmente:

    npm run build
    npm start
    
  4. Quando você receber a mensagem Seu aplicativo em execução na porta 3000 está disponível, selecione Abrir no Navegador.

  5. Selecione o link do Agente do LangGraph e o link do Agente da Fábrica para experimentar a interface do chat. Se você receber uma resposta, seu aplicativo estará se conectando com êxito ao recurso Microsoft Foundry.

  6. De volta ao codespace do GitHub, implante as alterações do aplicativo.

    azd up
    
  7. Navegue até o aplicativo implantado novamente e teste os agentes de chat.

Limpar os recursos

Quando terminar com o aplicativo, você poderá excluir os recursos do Serviço de Aplicativo para evitar gerar custos adicionais:

azd down --purge

Como o modelo do AZD não inclui os recursos do Microsoft Foundry, você precisa excluí-los manualmente, se desejar.

Mais recursos