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.
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
- Uma conta do Azure com uma assinatura ativa – Crie uma conta gratuitamente.
- Uma conta do GitHub para usar o GitHub Codespaces – Saiba mais sobre o GitHub Codespaces.
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.
Navegue até o repositório do GitHub em https://github.com/Azure-Samples/app-service-agentic-langgraph-foundry-python.
Selecione o botão Código, selecione a guia Codespaces e selecione Criar codespace em main.
Aguarde alguns instantes para que o Codespace seja inicializado. Quando ele estiver pronto, você verá um ambiente de desenvolvimento totalmente configurado no navegador.
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 3000Quando 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).
- Seleciona uma thread de conversa gerenciada pelo servidor para a amostra autenticada.
self.memory = InMemorySaver()
# App Service authentication protects this sample, which intentionally
# keeps one server-managed conversation thread per worker process.
self.thread_id = "authenticated-conversation"
try:
endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
deployment_name = os.getenv("AZURE_OPENAI_DEPLOYMENT_NAME")
if not endpoint or not deployment_name:
print("Azure OpenAI configuration missing for LangGraph agent")
return
# 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)
Ao processar mensagens de usuário, o agente invoca ainvoke() com o ID da thread gerenciada pelo servidor:
config = {"configurable": {"thread_id": self.thread_id}}
# Process the message
result = await self.agent.ainvoke(
{"messages": [("user", message)]},
config=config
)
A solicitação do navegador contém apenas a mensagem. Ele não pode selecionar outro thread fornecendo um identificador de sessão ou conversa.
Implantar o aplicativo de exemplo
O repositório de exemplo contém um template de CLI para Desenvolvedores do Azure (AZD), que cria um aplicativo de Serviço de Aplicativos e implanta sua aplicação de exemplo. A identidade gerenciada atribuída ao sistema de App Service é mantida para chamadas de IA do Azure de saída. Uma identidade gerenciada separada atribuída pelo usuário e uma credencial federada permitem que a autenticação do App Service atue como a aplicação Microsoft Entra gerada sem um segredo cliente.
No terminal, faça login no Azure usando o Azure Developer CLI:
azd auth loginSiga as instruções para concluir o processo de autenticação.
Implante o aplicativo Serviço de Aplicativo do Azure usando o modelo AZD:
azd upQuando 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. Na saída do AZD, localize a URL do seu aplicativo e navegue até ela no navegador. Também copie o valor do público da identidade gerenciada do Foundry OpenAPI para usar mais tarde. A saída tem esta aparência:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL> Foundry OpenAPI managed identity audience: api://<generated-client-id>Quando a Microsoft solicitar, faça login usando uma conta no tenant de implantação e verifique se a lista de tarefas está carregada.
No mesmo navegador autenticado, anexe
/openapi.jsonao endpoint do App Service. Copie ou salve o esquema OpenAPI gerado para depois.Observação
A autenticação por App Service retorna um redirecionamento HTTP 302 para requisições de navegador não autenticadas. Este exemplo contém tanto uma interface de navegador quanto APIs, então o redirecionamento oferece uma experiência de login utilizável. Aplicativos apenas de API geralmente usam HTTP 401.
Criar e configurar o recurso microsoft foundry
No portal da Foundry, crie um projeto.
Implante um modelo de sua escolha (consulte o Início Rápido do Microsoft Foundry: Criar recursos).
Na parte superior da área de testes do modelo, copie o nome dele.
Na página inicial, copie o endpoint do Azure OpenAI para depois.
Atribuir as permissões necessárias
No portal Foundry, selecione Gerenciar no menu superior.
Em Detalhes do projeto, selecione o recurso pai do seu projeto e selecione Abrir no portal do Azure.
Pelo portal Azure, você pode atribuir acesso baseado em função para o recurso.
Adicione a seguinte função tanto à identidade gerenciada do aplicativo do App Service quanto ao usuário que você usa com
az login: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
Abra o .env. Usando os valores copiados anteriormente do portal do Foundry, configure as seguintes variáveis:
Variable Description AZURE_OPENAI_ENDPOINTAzure OpenAI endpoint (copiado da página inicial do portal Foundry). AZURE_OPENAI_DEPLOYMENT_NAMENome 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.
Os valores em .env configuram a conexão de saída do app para o Foundry.
AZURE_AI_FOUNDRY_ACCOUNT_CLIENT_IDconfigura a conexão OpenAPI de entrada separada do Foundry para o App Service e é armazenada no ambiente do AZD.Entre no Azure com a CLI do Azure:
az loginAssim, 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.
Execute o aplicativo localmente:
source venv/bin/activate uvicorn src.app:app --host 0.0.0.0 --port 3000Quando você receber a mensagem Seu aplicativo em execução na porta 3000 está disponível, selecione Abrir no Navegador.
Valide ambos os pivôs separadamente:
- LangGraph: Selecione LangGraph Agent e peça ao agente para criar uma tarefa. O LangGraph chama a ferramenta de tarefas em processo.
-
Serviço do Agente Foundry: Selecione Agente Foundry e peça ao agente para criar uma tarefa. O agente Foundry remoto chama o endpoint implantado e protegido
/api/tasksusando identidade gerenciada.
A tarefa criada pelo agente Foundry aparece na instância do App Service implantado, não no banco de dados SQLite local. A ferramenta OpenAPI do Foundry sempre utiliza a URL do servidor embutida no esquema OpenAPI.
De volta ao codespace do GitHub, implante as alterações do aplicativo.
azd upNavegue novamente até o aplicativo implantado e teste ambos os agentes de chat. O navegador envia apenas texto de mensagem; não envia um ID de sessão ou ID de conversa para nenhum dos agentes.
Perguntas frequentes
Como adiciono geração aumentada de recuperação (RAG) ao agente da Foundry?
Esta instrução se aplica ao caminho Foundry Agent Service neste tutorial. Ele não altera as implementações do LangGraph, Kernel semântico ou Microsoft Agent Framework mostradas na outra aba.
Crie ou selecione uma base de conhecimento do Foundry IQ e, em seguida, conecte a base de conhecimento ao agente do serviço de agente do Foundry. A conexão é exposta ao agente como uma ferramenta de conhecimento gerenciada do MCP.
O código do App Service continua a invocar o mesmo agente pelo nome através de seu cliente existente no Foundry e agent_reference. O aplicativo web não precisa de uma integração direta com Pesquisa de IA do Azure nem de um cliente MCP próprio. Se a interface exibir fontes, processe as anotações de citação retornadas pelo agente.
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
O hook AZD postdown também exclui o aplicativo do Microsoft Entra no nível do locatário criado para a autenticação do App Service.
Depois, exclua o recurso do Foundry se você o criou separadamente.