Partilhar via


Tutorial: Constrói uma aplicação web agente no Azure App Service com LangGraph ou Foundry Agent Service (Python)

Este tutorial demonstra como adicionar capacidade de agente a um aplicativo CRUD FastAPI controlado por dados existente. Faz isto usando duas abordagens diferentes: LangGraph e Foundry Agent Service.

Se a sua aplicação web já tem funcionalidades úteis, como compras, reservas de hotel ou gestão de dados, é relativamente simples adicionar funcionalidades de agente à sua aplicação web, envolvendo essas funcionalidades num plugin (para LangGraph) ou como endpoint OpenAPI (para Foundry Agent Service). Neste tutorial, você começa com um aplicativo de lista de to-do simples. No final, você poderá criar, atualizar e gerenciar tarefas com um agente em um aplicativo do Serviço de Aplicativo.

Tanto o LangGraph como o Foundry Agent Service permitem-lhe construir aplicações web agentes com capacidades baseadas em IA. O LangGraph é semelhante ao Microsoft Agent Framework e é um SDK. A tabela a seguir mostra algumas das considerações e compensações:

Consideração LangGraph ou Microsoft Agent Framework Serviço de Agente de Fundição
Performance Rápido (funciona localmente) Mais lento (gerenciado, serviço remoto)
Desenvolvimento Código completo, controlo máximo Low code, integração rápida
Testes Testes manuais/unitários em código Playground embutido para testes rápidos
Escalabilidade Gerenciado por aplicativo Gerenciado pelo Azure, dimensionado automaticamente
Guarda-corpos de segurança Implementação personalizada necessária Segurança e moderação de conteúdos incorporadas
Identidade Implementação personalizada necessária ID de agente incorporado e autenticação
Enterprise Integração personalizada necessária Implementação integrada do Microsoft 365/Teams e chamadas de ferramentas integradas no Microsoft 365.

Neste tutorial, aprenderás como:

  • Converta a funcionalidade existente do aplicativo em um plug-in para o LangGraph.
  • Adicione o plug-in a um agente LangGraph e use-o em um aplicativo Web.
  • Converter funcionalidades existentes da aplicação num endpoint OpenAPI para o Foundry Agent Service.
  • Ligue para um agente da Foundry numa aplicação web.
  • Atribua as permissões necessárias para conectividade de identidade gerenciada.

Pré-requisitos

Abra o exemplo com Codespaces

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

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

  2. Selecione o botão Código , selecione a guia Espaços de código e selecione Criar espaço de código na principal.

  3. Aguarde alguns instantes até que o Codespace seja inicializado. Quando estiver pronto, você verá um ambiente de desenvolvimento totalmente configurado em seu 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 vir que a sua aplicação em execução na porta 3000 está disponível, selecione Abrir no Browser e adicione algumas tarefas.

    Os agentes não estão totalmente configurados, por isso ainda não funcionam. Você os configurará mais tarde.

Revise o código do agente

Ambas as abordagens usam o mesmo padrão de implementação, onde o agente é inicializado no início 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 pré-construído com memória e um conjunto de ferramentas CRUD para gestão de tarefas (ver quickstart 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 utilizador, o agente é invocado usando ainvoke() com a mensagem do utilizador e um ID de thread para garantir a continuidade da conversa.

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

Implantar o aplicativo de exemplo

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

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

    azd auth login
    

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

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

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

    Question Resposta
    Insira um novo nome de ambiente: Escreva um nome exclusivo.
    Selecione uma Assinatura do Azure para usar: Selecione uma subscrição.
    Escolha um grupo de recursos para usar: Selecione Criar um novo grupo de recursos.
    Selecione um local para criar o grupo de recursos em: Selecione Suécia Central.
    Insira um nome para o novo grupo de recursos: Digite Enter.
  4. Na saída AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL tem esta aparência na saída 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 ao sistema.

Crie e configure o recurso Microsoft Foundry

  1. No portal da Foundry, certifique-se de que o botão de radio superior da New Foundry está ativado e crie um projeto.

  2. Implemente um modelo à sua escolha (veja Microsoft Foundry Quickstart: Criar recursos).

  3. Do topo do parque de diversões de modelos, copie o nome do modelo.

  4. A forma mais fácil de obter o endpoint Azure OpenAI continua a ser através do portal clássico. Selecione o botão de opção New Foundry, depois Azure OpenAI, e depois copie o URL no Azure OpenAI endpoint para mais tarde.

    Captura de tela mostrando como copiar o ponto de extremidade OpenAI e o ponto de extremidade do projeto de fundição no portal de fundição.

Atribuir permissões necessárias

  1. No menu superior do novo portal da Foundry, selecione Operar, depois selecione Administrador. Na fila do seu projeto Foundry, deve ver dois links. O elemento na coluna Nome é o recurso do projeto Foundry, e o elemento na coluna Recurso Pai é o recurso Foundry.

    Captura de ecrã que mostra como aceder rapidamente ao recurso da fundição ou ao recurso do projeto da fundição.

  2. Selecione o recurso Foundry no recurso Pai e depois selecione Gerir este recurso no portal Azure. A partir do portal Azure, pode atribuir acesso baseado em funções para o recurso à aplicação web implementada.

  3. Adicione o seguinte papel para a identidade gerida da aplicação App Service:

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

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

Configurar variáveis de conexão em seu aplicativo de exemplo

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

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

    Observação

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

    Observação

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

  2. Entre no Azure com a CLI do Azure:

    az login
    

    Isso permite que a biblioteca de cliente do Azure Identity no código de exemplo receba 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ê vir Seu aplicativo em execução na porta 3000 está disponível, selecione Abrir no navegador.

  5. Selecione o link LangGraph Agent e o link Foundry Agent para experimentar a interface de chat. Se receber uma resposta, a sua aplicação está a ligar-se com sucesso ao recurso Microsoft Foundry.

  6. De volta ao espaço de código do GitHub, implante as alterações do seu aplicativo.

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

Limpeza de recursos

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

azd down --purge

Como o modelo do AZD não inclui os recursos do Microsoft Foundry, tens de os apagar manualmente se quiseres.

Mais recursos