Este artigo fornece uma arquitetura básica para ajudá-lo a aprender a executar aplicativos de chat que usam modelos de linguagem do Serviço OpenAI do Azure. A arquitetura inclui uma interface do usuário (UI) do cliente que é executada no Serviço de Aplicativo do Azure e usa o fluxo de prompt para orquestrar o fluxo de trabalho de prompts de entrada para armazenamentos de dados para buscar dados de aterramento para o modelo de linguagem. O fluxo executável é implantado em um ponto de extremidade online gerenciado que gerenciou a computação. A arquitetura foi projetada para operar a partir de uma única região.
Importante
Esta arquitetura não se destina a aplicações de produção. Destina-se a ser uma arquitetura introdutória que você pode usar para fins de aprendizagem e prova de conceito (POC). Ao projetar seus aplicativos de bate-papo corporativo de produção, consulte a arquitetura de referência de bate-papo de ponta a ponta do OpenAI Linha de base, que adiciona decisões de design de produção a essa arquitetura básica.
Importante
Arquitetura
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de Trabalho
- Um usuário emite uma solicitação HTTPS para o domínio padrão do serviço de aplicativo no azurewebsites.net. Este domínio aponta automaticamente para o endereço IP público incorporado do Serviço de Aplicações. A conexão Transport Layer Security é estabelecida do cliente diretamente para o Serviço de Aplicativo. O Azure gerencia completamente o certificado.
- O Easy Auth, um recurso do Serviço de Aplicativo, ajuda a garantir que o usuário que acessa o site seja autenticado usando o Microsoft Entra ID.
- O código do aplicativo cliente implantado no Serviço de Aplicativo manipula a solicitação e apresenta ao usuário uma interface do usuário de chat. O código da interface do usuário do chat se conecta a APIs que também estão hospedadas nessa mesma instância do Serviço de Aplicativo. O código da API se conecta a um ponto de extremidade online gerenciado do Azure Machine Learning para lidar com as interações do usuário.
- O ponto de extremidade online gerenciado roteia a solicitação para a computação gerenciada do Machine Learning, onde a lógica de orquestração do fluxo de prompt é implantada.
- O código de orquestração de fluxo de prompt é executado. Entre outras coisas, a lógica extrai a consulta do usuário da solicitação.
- A lógica de orquestração se conecta à Pesquisa de IA do Azure para buscar dados de aterramento para a consulta. Os dados de aterramento são adicionados ao prompt enviado ao Azure OpenAI na próxima etapa.
- A lógica de orquestração se conecta ao Azure OpenAI e envia o prompt que inclui os dados de aterramento relevantes.
- As informações sobre a solicitação original ao Serviço de Aplicativo e a chamada para o ponto de extremidade online gerenciado são registradas no Application Insights. Esse log usa o mesmo espaço de trabalho de Logs do Azure Monitor para o qual a telemetria do Azure OpenAI flui.
Fluxo imediato
O fluxo de trabalho anterior descreve o fluxo para o aplicativo de chat, mas a lista a seguir descreve um fluxo de prompt típico com mais detalhes.
Nota
Os números neste fluxo não correspondem aos números no diagrama de arquitetura.
- O usuário insere um prompt em uma interface do usuário de chat personalizada.
- O código da API da interface envia esse texto para o fluxo de prompt.
- O fluxo de prompt extrai a intenção do usuário, que é uma pergunta ou uma diretiva, do prompt.
- Opcionalmente, o fluxo de prompt determina quais armazenamentos de dados armazenam dados relevantes para o prompt do usuário.
- O fluxo de prompt consulta os armazenamentos de dados relevantes.
- O fluxo de prompt envia a intenção, os dados de aterramento relevantes e qualquer histórico que o prompt forneça ao modelo de linguagem.
- O fluxo de prompt retorna o resultado para que ele possa ser exibido na interface do usuário.
Você pode implementar o orquestrador de fluxo em qualquer número de idiomas e implantá-lo em vários serviços do Azure. Essa arquitetura usa fluxo de prompt porque fornece uma experiência simplificada para criar, testar e implantar fluxos que orquestram entre prompts, armazenamentos de dados back-end e modelos de linguagem.
Componentes
Muitos dos componentes dessa arquitetura são os mesmos que os recursos na arquitetura básica do aplicativo Web do Serviço de Aplicativo, porque a interface do usuário do chat é baseada nessa arquitetura. Esta seção destaca os componentes que você pode usar para criar e orquestrar fluxos de chat, serviços de dados e os serviços que expõem os modelos de linguagem.
Azure AI Foundry é uma plataforma que você pode usar para criar, testar e implantar soluções de IA. Essa arquitetura usa o AI Foundry para criar, testar e implantar a lógica de orquestração de fluxo de prompt para o aplicativo de chat.
hub da AI Foundry é o recurso de alto nível para a AI Foundry. É o local central onde você pode controlar a segurança, a conectividade e os recursos de computação para uso em seus projetos do AI Foundry. Você define conexões com recursos como o Azure OpenAI no hub AI Foundry. Os projetos AI Foundry herdam essas conexões.
projetos do AI Foundry são os ambientes que você usa para colaborar enquanto desenvolve, implanta e avalia modelos e soluções de IA.
O fluxo de prompt é uma ferramenta de desenvolvimento que você pode usar para criar, avaliar e implantar fluxos que vinculam prompts do usuário, ações por meio de código Python e chamadas para modelos de aprendizado de linguagem. Essa arquitetura usa o fluxo de prompt como a camada que orquestra os fluxos entre o prompt, diferentes armazenamentos de dados e o modelo de linguagem. Para desenvolvimento, você pode hospedar seus fluxos de prompt em dois tipos de tempos de execução.
de tempo de execução automático é uma opção de computação sem servidor que gerencia o ciclo de vida e as características de desempenho da computação. Também facilita a personalização do ambiente orientada por fluxo. Essa arquitetura usa o tempo de execução automático para simplificar.
de tempo de execução da instância de computação é uma opção de computação sempre ativa na qual a equipe de carga de trabalho deve escolher as características de desempenho. Esse tempo de execução fornece mais personalização e controle do ambiente.
O Machine Learning é um serviço de nuvem gerenciado que você pode usar para treinar, implantar e gerenciar modelos de aprendizado de máquina. Essa arquitetura usa o Managed online endpoints, um recurso do Machine Learning que implanta e hospeda fluxos executáveis para aplicativos de IA alimentados por modelos de linguagem. Use pontos de extremidade online gerenciados para implantar um fluxo para inferência em tempo real. Essa arquitetura os usa como um ponto de extremidade de plataforma como serviço para a interface do usuário do chat para invocar os fluxos de prompt que o tempo de execução automático do Machine Learning hospeda.
de Armazenamento do Azure é uma solução de armazenamento que você pode usar para persistir os arquivos de origem do fluxo de prompt para desenvolvimento de fluxo de prompt.
de Registro de Contêiner do Azure é um serviço de registro gerenciado que você pode usar para criar, armazenar e gerenciar imagens e artefatos de contêiner em um registro privado para todos os tipos de implantações de contêiner. Esse pacote de arquitetura flui como imagens de contêiner e as armazena no Registro de Contêiner.
do Azure OpenAI é um serviço totalmente gerenciado que fornece acesso à API REST aos modelos de linguagem OpenAI do Azure, incluindo o conjunto de modelos GPT-4, GPT-3.5-Turbo e incorporações. Essa arquitetura usa o Azure OpenAI e o acesso ao modelo para adicionar recursos corporativos comuns, como identidade gerenciada suporte e filtragem de conteúdo.
AI Search é um serviço de pesquisa na nuvem que suporta de pesquisa de texto completo, de pesquisa semântica, de pesquisa vetorial e de pesquisa híbrida. A arquitetura inclui AI Search porque é um serviço comum para usar nos fluxos que suportam aplicativos de bate-papo. Você pode usar a Pesquisa de IA para recuperar e indexar dados relevantes para consultas de usuários. O fluxo de prompt implementa o padrão de de Geração Aumentada de Recuperação de
para extrair a consulta apropriada do prompt, consultar a Pesquisa de IA e usar os resultados como dados de aterramento para o modelo OpenAI do Azure.
Considerações
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Essa arquitetura básica não se destina a implantações de produção. A arquitetura favorece a simplicidade e a eficiência de custos em detrimento da funcionalidade para que você possa aprender a criar aplicativos de chat de ponta a ponta usando o Azure OpenAI. As seções a seguir descrevem algumas deficiências dessa arquitetura básica e descrevem recomendações e considerações.
Fiabilidade
A confiabilidade garante que seu aplicativo possa atender aos compromissos que você assume com seus clientes. Para obter mais informações, consulte Visão geral do pilar Confiabilidade.
Essa arquitetura não foi projetada para implantações de produção, portanto, a lista a seguir descreve alguns dos recursos críticos de confiabilidade que essa arquitetura omite:
O plano de serviço de aplicativo é configurado para a camada Básica, que não tem zona de disponibilidade do Azure suporte. O serviço de aplicativo fica indisponível se houver algum problema com a instância, o rack ou o datacenter que hospeda a instância. Siga as diretrizes de confiabilidade para instâncias do Serviço de Aplicativo à medida que avança para a produção.
O dimensionamento automático para a interface do usuário do cliente não está habilitado nesta arquitetura básica. Para evitar problemas de confiabilidade causados pela falta de recursos de computação disponíveis, você precisa provisionar recursos em excesso para sempre executar com computação suficiente para lidar com a capacidade simultânea máxima.
A computação do Machine Learning não suporta zonas de disponibilidade . O orquestrador fica indisponível se houver algum problema com a instância, o rack ou o datacenter que hospeda a instância. Para saber como implantar a lógica de orquestração na infraestrutura que oferece suporte a zonas de disponibilidade, consulte redundância zonal para implantações de fluxo na arquitetura de linha de base.
O Azure OpenAI não é implementado em uma configuração altamente disponível. Para saber como implementar o Azure OpenAI de forma confiável, consulte Azure OpenAI - confiabilidade na arquitetura de linha de base.
A Pesquisa AI está configurada para a camada Básica, que não suporta zonas de disponibilidade do Azure. Para obter redundância zonal, implante a Pesquisa de IA com o nível de preço padrão ou superior em uma região que ofereça suporte a zonas de disponibilidade e implante três ou mais réplicas.
O dimensionamento automático não é implementado para a computação do Machine Learning. Para obter mais informações, consulte a de diretrizes de confiabilidade
na arquitetura de linha de base.
Para obter mais informações, consulte Baseline Azure OpenAI end-to-end chat architecture.
Segurança
A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar Segurança.
Esta seção descreve algumas das principais recomendações que essa arquitetura implementa. Essas recomendações incluem filtragem de conteúdo e monitoramento de abuso, gerenciamento de identidade e acesso e controles de acesso baseados em função. Como essa arquitetura não foi projetada para implantações de produção, esta seção também discute a segurança da rede. A segurança de rede é um recurso de segurança fundamental que essa arquitetura não implementa.
Filtragem de conteúdo e monitoramento de abuso
O Azure OpenAI inclui um sistema de filtragem de conteúdo que usa um conjunto de modelos de classificação para detetar e prevenir categorias específicas de conteúdo potencialmente prejudicial em prompts de entrada e conclusão de saída. Esse conteúdo potencialmente prejudicial inclui categorias de ódio, sexualidade, automutilação, violência, palavrões e jailbreak (conteúdo projetado para contornar as restrições de um modelo de linguagem). Você pode configurar o rigor do que deseja filtrar do conteúdo de cada categoria usando as opções baixa, média ou alta. Esta arquitetura de referência adota uma abordagem rigorosa. Ajuste as configurações de acordo com suas necessidades.
O Azure OpenAI implementa recursos de filtragem de conteúdo e monitoramento de abuso. O monitoramento de abuso é uma operação assíncrona que deteta e atenua instâncias de conteúdo recorrente ou comportamentos que sugerem o uso do serviço de uma maneira que pode violar o código de conduta do Azure OpenAI. Você pode solicitar uma isenção de monitoramento de abuso e revisão humana se seus dados forem altamente confidenciais ou se houver políticas internas ou regulamentações legais aplicáveis que impeçam o processamento de dados para deteção de abuso.
Gestão de identidades e acessos
As diretrizes a seguir expandem as diretrizes de gerenciamento de identidade e acesso na arquitetura de linha de base do Serviço de Aplicativo. Essa arquitetura usa identidades gerenciadas atribuídas ao sistema e cria identidades separadas para os seguintes recursos:
- Hub de fundição AI
- Projeto AI Foundry para criação e gerenciamento de fluxo
- Pontos de extremidade online no fluxo implantado se o fluxo for implantado em um ponto de extremidade online gerenciado
Se você optar por usar identidades gerenciadas atribuídas pelo usuário, deverá criar identidades separadas para cada um dos recursos anteriores.
Os projetos de fundição de IA devem ser isolados uns dos outros. Aplique condições às atribuições de função de projeto para armazenamento de blob para permitir que vários projetos gravem na mesma conta de armazenamento e mantenham os projetos isolados. Estas condições concedem acesso apenas a contentores específicos dentro da conta de armazenamento. Se você usar identidades gerenciadas atribuídas pelo usuário, precisará seguir uma abordagem semelhante para manter o acesso com privilégios mínimos.
Atualmente, a interface do usuário do chat usa chaves para se conectar ao ponto de extremidade online gerenciado implantado. O Azure Key Vault armazena as chaves. Ao mover sua carga de trabalho para a produção, você deve usar identidades gerenciadas do Microsoft Entra para autenticar a interface do usuário do chat no ponto de extremidade online gerenciado.
Funções de acesso baseadas em função
O sistema cria automaticamente atribuições de função para as identidades gerenciadas atribuídas ao sistema. Como o sistema não sabe quais recursos do hub e projetos você pode usar, ele cria atribuições de função para dar suporte a todos os recursos potenciais. Por exemplo, o sistema cria a Storage File Data Privileged Contributor
de atribuição de função à conta de armazenamento do AI Foundry. Se você não estiver usando o fluxo de prompt, sua carga de trabalho pode não exigir essa atribuição.
A tabela a seguir resume as permissões que o sistema concede automaticamente para identidades atribuídas ao sistema:
Identidade | Privilege | Recurso |
---|---|---|
Hub de fundição AI | Leitura/gravação | Key Vault |
Hub de fundição AI | Leitura/gravação | Armazenamento |
Hub de fundição AI | Leitura/gravação | Registo de Contentores |
Projeto AI Foundry | Leitura/gravação | Key Vault |
Projeto AI Foundry | Leitura/gravação | Armazenamento |
Projeto AI Foundry | Leitura/gravação | Registo de Contentores |
Projeto AI Foundry | Escrever | Application Insights |
Ponto de extremidade online gerenciado | Ler | Registo de Contentores |
Ponto de extremidade online gerenciado | Leitura/gravação | Armazenamento |
Ponto de extremidade online gerenciado | Ler | AI Foundry hub (configurações) |
Ponto de extremidade online gerenciado | Escrever | Projeto AI Foundry (métricas) |
As atribuições de função que o sistema cria podem atender aos seus requisitos de segurança ou você pode querer restringi-los ainda mais. Se quiser seguir o princípio do menor privilégio, você precisa criar identidades gerenciadas atribuídas pelo usuário e criar suas próprias atribuições de função restritas.
Segurança da rede
Para facilitar o aprendizado de como criar uma solução de bate-papo de ponta a ponta, essa arquitetura não implementa segurança de rede. Essa arquitetura usa identidade como seu perímetro e usa construções de nuvem pública. Serviços como AI Search, Key Vault, Azure OpenAI, o endpoint online gerenciado implantado e o Serviço de Aplicativo podem ser acessados pela Internet. O firewall do Cofre da Chave está configurado para permitir o acesso de todas as redes. Essas configurações adicionam área de superfície ao vetor de ataque da arquitetura.
Para saber como incluir a rede como um perímetro extra em sua arquitetura, consulte a seção de rede da arquitetura de linha de base.
Otimização de Custos
A Otimização de Custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar Otimização de custos.
Essa arquitetura básica não representa os custos de uma solução pronta para produção. A arquitetura também não tem controles para proteger contra derrapagens de custos. As considerações a seguir descrevem alguns dos recursos cruciais que afetam o custo e que essa arquitetura omite:
Essa arquitetura pressupõe que há chamadas limitadas para o Azure OpenAI. Por esse motivo, recomendamos que você use preços pré-pagos em vez da taxa de transferência provisionada. Siga as diretrizes de otimização de custos do Azure OpenAI na arquitetura de linha de base à medida que avança para uma solução de produção.
O plano de serviço de aplicativo é configurado para a camada de preço Básico em uma única instância, que não fornece proteção contra uma interrupção da zona de disponibilidade. O
arquitetura de linha de base do Serviço de Aplicativo recomenda que você use planos Premium com três ou mais instâncias de trabalho para alta disponibilidade. Esta abordagem afeta os seus custos. O dimensionamento não está configurado para a computação gerenciada de endpoint online. Para implantações de produção, você deve configurar o dimensionamento automático. A arquitetura de bate-papo de linha de base de ponta a ponta recomenda que você implante no Serviço de Aplicativo em uma configuração redundante zonal. Ambas as alterações arquitetônicas afetam seus custos quando você passa para a produção.
O AI Search está configurado para o nível de preço Básico sem réplicas adicionadas. Essa topologia não pode resistir a uma falha na zona de disponibilidade do Azure. A arquitetura de bate-papo de linha de base de ponta a ponta recomenda que você implante a carga de trabalho com o nível de preço padrão ou superior e implante três ou mais réplicas. Essa abordagem pode afetar seus custos à medida que você avança para a produção.
Não há governança de custos ou controles de contenção em vigor nessa arquitetura. Certifique-se de que se previne contra processos ou utilização não governados que possam incorrer em custos elevados para serviços pré-pagos, como o Azure OpenAI.
Excelência Operacional
A Excelência Operacional abrange os processos operacionais que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte Visão geral do pilar Excelência Operacional.
Identidades geridas Atribuídas pelo sistema
Essa arquitetura usa identidades gerenciadas atribuídas pelo sistema para hubs do AI Foundry, projetos do AI Foundry e para o endpoint online gerenciado. O sistema cria e atribui identidades automaticamente aos recursos. O sistema cria automaticamente as atribuições de função necessárias para que o sistema seja executado. Você não precisa gerenciar essas atribuições.
Tempos de execução de fluxo de prompt integrados
Para minimizar as cargas operacionais, essa arquitetura usa Automatic Runtime. O Tempo de Execução Automático é uma opção de computação sem servidor dentro do Machine Learning que simplifica o gerenciamento de computação e delega a maior parte da configuração de fluxo de prompt à configuração de requirements.txt
e flow.dag.yaml
do aplicativo em execução. O tempo de execução automático é de baixa manutenção, efêmero e orientado por aplicativos.
Monitorização
Os diagnósticos são configurados para todos os serviços. Todos os serviços, exceto o Serviço de Aplicativo, estão configurados para capturar todos os logs. O Serviço de Aplicativo está configurado para capturar AppServiceHTTPLogs
, AppServiceConsoleLogs
, AppServiceAppLogs
e AppServicePlatformLogs
. Durante a fase POC, é importante entender quais logs e métricas estão disponíveis para captura. Ao passar para a produção, remova as fontes de log que não agregam valor e apenas criam ruído e custo para o coletor de logs da carga de trabalho.
Também recomendamos que você colete dados de pontos de extremidade online gerenciados implantados fornecer observabilidade aos fluxos implantados. Quando você opta por coletar esses dados, os dados de inferência são registrados no Armazenamento de Blobs do Azure. O Armazenamento de Blob registra a solicitação HTTP e as cargas úteis de resposta. Você também pode optar por registrar dados personalizados.
Certifique-se de habilitar a integração com o de diagnóstico do Application Insights para o endpoint online gerenciado. As métricas e logs internos são enviados para o Application Insights, e você pode usar os recursos do Application Insights para analisar o desempenho de seus pontos de extremidade de inferência.
Operações de modelo de linguagem
Como essa arquitetura é otimizada para aprendizado e não se destina ao uso em produção, a orientação operacional como GenAIOps está fora do escopo. Ao avançar para a produção, siga as diretrizes de operações do modelo de linguagem na arquitetura de linha de base.
Desenvolvimento
O fluxo de prompt fornece uma experiência de criação baseada em navegador no AI Foundry ou por meio de uma extensão Visual Studio Code. Ambas as opções armazenam o código de fluxo como arquivos. Quando você usa o AI Foundry, os arquivos são armazenados em arquivos em uma conta de armazenamento. Quando você trabalha no VS Code, os arquivos são armazenados em seu sistema de arquivos local.
Como essa arquitetura se destina ao aprendizado, não há problema em usar a experiência de criação baseada em navegador. Quando começar a avançar para a produção, siga as orientações de desenvolvimento e controle do código-fonte na arquitetura de linha de base.
Recomendamos que você use a opção de computação sem servidor ao desenvolver e testar seus fluxos de prompt no AI Foundry. Essa opção evita que você precise implantar e gerenciar uma instância de computação para desenvolvimento e teste. Se precisar de um ambiente personalizado, você pode implantar uma instância de computação.
Avaliação
Você pode conduzir uma avaliação da implantação do modelo OpenAI do Azure usando a experiência do usuário no AI Foundry. Recomendamos que você se familiarize com como avaliar aplicativos generativos de IA para ajudar a garantir que o modelo escolhido atenda aos requisitos de design do cliente e da carga de trabalho.
Uma ferramenta de avaliação importante com a qual você deve se familiarizar durante a fase de desenvolvimento da sua carga de trabalho são os painéis de IA Responsável no Machine Learning. Essa ferramenta ajuda você a avaliar a equidade, a interpretabilidade do modelo e outras avaliações importantes de suas implantações e é útil para ajudar a estabelecer uma linha de base inicial para evitar regressões futuras.
Implementação
Essa arquitetura básica implementa uma única instância para o orquestrador implantado. Quando você implanta alterações, a nova implantação substitui a implantação existente. Quando você começar a avançar para a produção, leia o fluxo de implantação e diretrizes de implantação na arquitetura de linha de base. Esta orientação ajuda você a entender e implementar abordagens de implantação mais avançadas, como implantações azul-verde.
Eficiência de desempenho
Eficiência de desempenho é a capacidade de sua carga de trabalho de escalar para atender às demandas colocadas pelos usuários de maneira eficiente. Para obter mais informações, consulte visão geral do pilar Eficiência de Desempenho.
Como essa arquitetura não foi projetada para implantações de produção, esta seção descreve alguns dos recursos críticos de eficiência de desempenho que a arquitetura omite.
Um resultado do seu POC deve ser a seleção de um produto que se adapte à carga de trabalho do seu serviço de aplicativo e da sua computação de Machine Learning. Você deve projetar sua carga de trabalho para atender à demanda de forma eficiente por meio do dimensionamento horizontal. O dimensionamento horizontal permite ajustar o número de instâncias de computação que são implantadas no plano de serviço de aplicativo e em instâncias que são implantadas atrás do ponto de extremidade online. Não projete um sistema que dependa da alteração do produto de computação para se alinhar com a demanda.
Essa arquitetura usa o modelo de consumo ou pagamento conforme o uso para a maioria dos componentes. O modelo de consumo é um modelo de melhor esforço e pode estar sujeito a problemas de vizinhos barulhentos ou outros fatores de estresse na plataforma. Determine se seu aplicativo requer taxa de transferência provisionada à medida que você avança para a produção. A taxa de transferência provisionada ajuda a garantir que a capacidade de processamento seja reservada para suas implantações de modelo do Azure OpenAI. A capacidade reservada fornece desempenho e taxa de transferência previsíveis para seus modelos.
O ponto de extremidade online do Machine Learning não tem o dimensionamento automático implementado, portanto, você precisa provisionar uma quantidade de produto e instância que possa lidar com picos de carga. Devido à forma como o serviço é configurado, ele não é dimensionado dinamicamente para manter a oferta alinhada com a demanda de forma eficiente. Siga as orientações sobre como dimensionar automaticamente uma de ponto de extremidade on-line à medida que avança para a produção.
Implementar este cenário
Uma implantação para uma arquitetura de referência que implementa essas recomendações e considerações está disponível em GitHub.