GenAIOps com prompt flow e Azure DevOps
À medida que a demanda por aplicativos com infusão de LLM aumenta, as organizações precisam de um processo coeso e simplificado para gerenciar o ciclo de vida de ponta a ponta desses aplicativos. As Operações de Inteligência Artificial Generativa (GenAIOps), às vezes chamadas de LLMOps, são a pedra angular da engenharia de prompts eficiente e do desenvolvimento e implantação de aplicativos com infusão de LLM.
Este artigo mostra como o Azure Machine Learning permite a integração ao Azure DevOps para automatizar o ciclo de vida de desenvolvimento de aplicativos com infusão de LLM com o prompt flow. O prompt flow fornece uma abordagem simplificada e estruturada para o desenvolvimento de aplicativos com infusão de LLM. Seu processo bem definido e ciclo de vida orienta você pelas fases de criação, teste, otimização e implantação de fluxos, culminando na criação de soluções totalmente funcionais com infusão de LLM.
Recursos de prompt flow das GenAIOps
As GenAIOps com prompt flow usam um modelo e orientação GenAIOps para ajudar você a criar aplicativos com infusão de LLM usando prompt flow. As GenAIOps com prompt flow tem capacidades para aplicativos com infusão de LLM, sejam eles simples ou complexos, e é personalizável de acordo com as necessidades do aplicativo.
As GenAIOps com a plataforma de prompt flow fornece os seguintes recursos:
Hospedagem de código centralizada. O repositório dá suporte ao código de hospedagem para vários prompt flows, fornecendo um único repositório para todos os seus fluxos. Esse repositório é como uma biblioteca para seus fluxos, facilitando a localização, o acesso e a colaboração em diferentes projetos.
Gerenciamento do ciclo de vida. Cada fluxo tem seu próprio ciclo de vida, proporcionando uma transição suave da experimentação local para a implantação em produção.
Experimentação de variante e hiperparâmetro. Variantes e hiperparâmetros são como ingredientes em uma receita. A plataforma permite experimentar diferentes combinações de variantes em vários nós de um fluxo. Você pode experimentar várias variantes e hiperparâmetros para avaliar facilmente as variantes de fluxo.
Vários destinos de implantação. A plataforma gera imagens Docker infundidas com seu fluxo e sessão de computação para implantação em qualquer plataforma de destino e sistema operacional com suporte ao Docker. Você pode implantar fluxos nos Serviços de Aplicativos do Azure, Kubernetes e em computações gerenciadas do Azure, e configurá-los para dimensionar conforme necessário.
Implantação A/B. As GenAIOps com prompt flow implementam de forma integrada implantações A/B, permitindo que você compare facilmente diferentes versões do fluxo. Essa plataforma facilita a implantação de A/B para o prompt flow da mesma maneira que no teste A/B do site tradicional. Você pode comparar com facilidade versões diferentes de um fluxo em uma configuração do mundo real para determinar qual versão tem o melhor desempenho.
Relacionamentos de fluxo para conjuntos de dados de muitos para muitos. As GenAIOps com prompt flow acomodam múltiplos conjuntos de dados para cada fluxo padrão e de avaliação, permitindo versatilidade nos testes e avaliações do fluxo.
Dados condicionais e registro de modelo. A plataforma registra uma nova versão do conjunto de dados para o ativo de dados do Azure Machine Learning e fluxos no registro de modelo apenas quando há uma alteração no conjunto de dados.
Relatórios abrangentes. As GenAIOps com prompt flow geram relatórios detalhados para cada configuração de variante, permitindo que você tome decisões informadas. A plataforma fornece coleta de métricas detalhadas, experimentos e execuções em massa de variantes para todas as execuções e experimentos, permitindo decisões baseadas em dados tanto para arquivos CSV quanto para HTML.
As GenAIOps com prompt flow oferecem os seguintes recursos adicionais para personalização:
- O Bring-your-own-flows (BYOF) oferece uma plataforma completa para o desenvolvimento de múltiplos casos de uso relacionados a aplicativos com infusão de LLM.
- O desenvolvimento baseado em configuração significa que não há necessidade de escrever um extenso código padrão.
- A experimentação e avaliação de prompts são executadas tanto localmente quanto na nuvem.
- Os notebooks para avaliação local de prompts fornecem uma biblioteca de funções para experimentação local.
- Os testes de ponto de extremidade dentro do pipeline após a implantação verificam a disponibilidade e a prontidão do ponto de extremidade.
- O recurso opcional human-in-loop valida as métricas dos prompts antes da implantação.
Estágios GenAIOps
O ciclo de vida das GenAIOps compreende quatro fases distintas:
Inicialização. Define claramente o objetivo de negócios, coleta amostras de dados relevantes, estabelece uma estrutura básica de prompts e cria um fluxo que aprimora seus recursos.
Experimentação. Aplica o fluxo às amostras de dados, avalia o desempenho do prompt e refina o fluxo conforme necessário. Itere continuamente até ficar satisfeito com os resultados.
Avaliação e refinamento. Faz um parâmetro de comparação do desempenho do fluxo usando um conjunto de dados maior, avalia a eficácia do prompt e faz refinamentos conforme necessário. Progrida para o próximo estágio se os resultados atenderem aos padrões desejados.
Implantação. Otimiza o fluxo permitindo eficiência e eficácia, implanta-o em um ambiente de produção, incluindo a implantação A/B, monitora o desempenho, coleta comentários do usuário e usa essas informações para aprimorar ainda mais o fluxo.
Ao aderir a essa metodologia estruturada, o prompt flow permite que você desenvolva, teste rigorosamente, ajuste e implante fluxos com confiança, levando à criação de aplicativos de IA robustos e sofisticados.
O modelo de Prompt Flow das GenAIOps formaliza essa metodologia estruturada usando a abordagem code-first e ajuda você a criar aplicativos com infusão de LLM usando ferramentas de prompt flow e processos, além dos recursos de prompt flow das GenAIOps. Este modelo está disponível em Modelo de GenAIOps com prompt flow.
Fluxo de processo das GenAIOps
- No estágio de inicialização, você desenvolve fluxos, prepara e organiza os dados, e atualiza os arquivos de configuração relacionados às GenAIOps.
- Após o desenvolvimento local usando o Visual Studio Code com a extensão Prompt Flow, você cria um pull request (PR) do branch de recurso para o branch de desenvolvimento, o que executa o pipeline de validação de build e os fluxos de experimentação.
- O PR é aprovado manualmente e o código é mesclado ao branch de desenvolvimento.
- Depois que o PR se mescla ao branch de desenvolvimento, o pipeline de CI (integração contínua) para o ambiente de desenvolvimento é executado. O pipeline de CI executa os fluxos de experimentação e avaliação em sequência e registra os fluxos no Registro do Azure Machine Learning, além de outras etapas no pipeline.
- Após a conclusão da execução do pipeline CI, um gatilho de implantação contínua (CD) executa o pipeline CD, que implanta o fluxo padrão do Registro do Azure Machine Learning como um ponto de extremidade online do Azure Machine Learning. Em seguida, o pipeline executa testes de integração e smoke tests no fluxo implantado.
- Um branch de lançamento é criado do branch de desenvolvimento ou um pull request é gerado do branch de desenvolvimento para o branch de lançamento.
- A PR é aprovada manualmente e o código é mesclado ao branch de versão. Depois que o PR é mesclado ao branch de lançamento, o pipeline de CI para o ambiente de produção é executado. O pipeline executa os fluxos de experimentação e avaliação em sequência e registra os fluxos no Registro do Azure Machine Learning, além de outras etapas no pipeline.
- Após a conclusão da execução do pipeline CI, um gatilho de CD executa o pipeline CD, que implanta o fluxo padrão do Registro do Azure Machine Learning como um ponto de extremidade online do Azure Machine Learning. Em seguida, o pipeline executa testes de integração e smoke tests no fluxo implantado.
Criar um prompt flow das GenAIOps
O restante deste artigo mostra como usar as GenAIOps com prompt flow, seguindo o exemplo de ponta a ponta no repositório Modelo de GenAIOps com prompt flow, que ajuda você a construir aplicativos com infusão de LLM usando prompt flow e Azure DevOps. O objetivo principal é fornecer assistência no desenvolvimento desses aplicativos usando os recursos de prompt flow e GenAIOps.
Pré-requisitos
- Uma assinatura do Azure com uma versão gratuita ou paga do Azure Machine Learning.
- Um Workspace do Azure Machine Learning.
- Git versão 2.27 ou mais recente em execução no computador local.
- Uma organização do Azure DevOps em que você tem a capacidade de criar um projeto, um repositório de controle do código-fonte do Azure Repos e pipelines do Azure Pipelines. Uma organização do Azure DevOps ajuda você a colaborar, planejar e acompanhar seu trabalho, código e problemas e configurar CI e CD.
- Uma compreensão de como integrar as GenAIOps ao prompt flow.
Observação
Se você usar o Azure DevOps e o Terraform para criar infraestrutura, precisará da extensão do Terraform para o Azure DevOps instalada.
Configurar uma conexão de prompt flow
O prompt flow usa um recurso de conexão para se conectar aos pontos de extremidade do OpenAI do Azure, do OpenAI ou da Pesquisa de IA do Azure. Você pode criar uma conexão por meio da interface do usuário do portal de prompt flow ou usando a API REST. Para obter mais informações, consulte Conexões no prompt flow.
Para criar a conexão, siga as instruções em Configurar conexões para prompt flow. Os fluxos de exemplo usam uma conexão chamada aoai
, então dê a sua conexão esse nome.
Configurar uma sessão de computação
O prompt flow usa uma sessão de computação para executar o fluxo. Crie e inicie a sessão de computação antes de executar o prompt flow.
Configurar o repositório do Azure Repos
Para criar um repositório bifurcado na sua organização do Azure DevOps, siga as instruções em Configurar o repositório do GitHub. Esse repositório usa dois branches, main
e development
, para promoções de código e execução de pipeline.
Para criar um novo repositório local, siga as instruções em Clonar o repositório. Esse clone ajuda você a criar um novo branch de recurso a partir do branch de desenvolvimento e incorporar as alterações.
Configurar a entidade de serviço do Azure
Uma entidade de serviço do Azure é uma identidade de segurança que aplicativos, serviços e ferramentas de automação usam para acessar recursos do Azure. O aplicativo ou serviço é autenticado com o Azure para acessar recursos em seu nome.
Crie uma entidade de serviço seguindo as instruções em Criar uma entidade de serviço do Azure. Use essa entidade de serviço para configurar a conexão dos Serviços do Azure DevOps e permitir que os Serviços do Azure DevOps autentiquem e conectem-se aos serviços do Azure. Os trabalhos de teste e avaliação do fluxo de prompt são executados sob a identidade da entidade de serviço.
A instalação fornece à entidade de serviço permissões de Proprietário para que o pipeline de CD possa fornecer automaticamente ao ponto de extremidade do Azure Machine Learning recém-provisionado o acesso ao workspace do Azure Machine Learning para ler informações de conexão. O pipeline também adiciona o ponto de extremidade à política do cofre de chaves associada ao workspace do Azure Machine Learning com permissões secretas de get
e list
. Você pode alterar as permissões Proprietário para Permissões de nível de Colaborador alterando o código YAML do pipeline para remover a etapa relacionada às permissões.
Criar um novo projeto do Azure DevOps
Para criar um novo projeto na interface do usuário do Azure DevOps, siga as instruções em Criar um novo projeto do Azure DevOps.
Configurar a autenticação entre o Azure DevOps e o Azure
Esta etapa configura uma nova conexão de serviço do Azure DevOps que armazena as informações da entidade de serviço. Os pipelines de projeto podem ler as informações de conexão usando o nome da conexão para se conectar ao Azure automaticamente. Para usar a entidade de serviço que você criou para configurar a autenticação entre o Azure DevOps e os serviços do Azure, siga as instruções em Configurar a autenticação com o Azure e o Azure DevOps.
Criar um grupo de variáveis do Azure DevOps
Para criar um novo grupo de variáveis e adicionar uma variável relacionada à conexão de serviço do Azure DevOps, siga as instruções em Criar um grupo de variáveis do Azure DevOps. Em seguida, o nome da entidade de serviço está disponível para os pipelines automaticamente como uma variável de ambiente.
Configurar o Azure Repos e o Azure Pipelines.
O repositório de exemplo usa dois branches, main
e development
, para promoções de código e execução de pipeline. Para configurar seus próprios repositórios locais e remotos para usar o código do repositório de exemplo, siga as instruções em Configurar repositórios locais e remotos do Azure DevOps.
Clone os branches main
e development
do repositório de exemplo e associe o código para se referir ao novo repositório do Azure Repos. Os pipelines de PR e de desenvolvimento são configurados para serem executados automaticamente com base nos gatilhos de criação e mesclagem de PR.
A política de branch development
é configurada para executar o pipeline de PR para qualquer PR gerado no branch de desenvolvimento de um branch de recursos. O pipeline dev
é executado quando o PR é mesclado ao branch de desenvolvimento e consiste em fases de CI e CD.
Humano no loop também é implementado nos pipelines. Após a fase de CI no pipeline de dev
ser executada, a fase de CD segue após a aprovação manual ser fornecida na interface do usuário de execução de build do Azure Pipelines.
O tempo padrão para aguardar a aprovação é de 60 minutos, após o qual o pipeline é rejeitado e a fase de CD não é executada. A aprovação manual da execução executa as etapas de CD do pipeline.
A aprovação manual no pipeline de exemplo é configurada para enviar notificações para replace@youremail.com
. Substitua o espaço reservado pelo endereço de email adequado.
Testar o pipeline
Para testar os pipelines, siga as instruções em Testar os pipelines. O processo completo tem as seguintes etapas:
- Você gera um PR de um branch de recursos para o branch de desenvolvimento.
- O pipeline de PR é executado automaticamente devido à configuração da política de branch.
- O PR é mesclado ao branch de desenvolvimento.
- O pipeline
dev
associado é executado, resultando na execução completa de CI e CD e no provisionamento ou atualização dos pontos de extremidade do Azure Machine Learning.
As saídas devem ser semelhantes aos exemplos em Exemplo de execução de prompt, avaliação e cenário de implantação.
Usar a execução local
Para usar os recursos de execução local, siga estas etapas.
Clone o repositório da seguinte maneira:
git clone https://github.com/microsoft/genaiops-promptflow-template.git
Crie um arquivo .env no nível superior da pasta. Adicione linhas para cada conexão, atualizando os valores para os espaços reservados. Os exemplos no repositório de exemplo usam a conexão AzureOpenAI chamada
aoai
e a versão de API2024-02-01
.aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"} <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
Prepare a conda local ou o ambiente virtual para instalar as dependências.
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
Traga ou escreva seus fluxos no modelo com base nas instruções em Como integrar novos fluxos.
Escreva scripts em Python na pasta local_execution semelhantes aos exemplos fornecidos.