Compartilhar via


GenAIOps com prompt flow e GitHub

À 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 GitHub 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

Captura de tela do processo de prompt flow do GenAIOps.

  1. No estágio de inicialização, você desenvolve fluxos, prepara e organiza os dados, e atualiza os arquivos de configuração relacionados às GenAIOps.
  2. 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.
  3. O PR é aprovado manualmente e o código é mesclado ao branch de desenvolvimento.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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 GitHub. O objetivo principal é fornecer assistência no desenvolvimento desses aplicativos usando os recursos de prompt flow e GenAIOps.

Pré-requisitos

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 GitHub

Para criar um repositório bifurcado na sua organização do GitHub, 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 autenticação entre o GitHub e o Azure

Esse processo configura um segredo do GitHub que armazena as informações da entidade de serviço. Para se conectar ao Azure automaticamente, os fluxos de trabalho no repositório podem ler as informações de conexão usando o nome do segredo. Para obter mais informações, consulte Usar o GitHub Actions para se conectar ao Azure.

  1. Crie uma entidade de serviço seguindo as instruções em Criar uma entidade de serviço do Azure.
  2. Use a entidade de serviço para configurar a autenticação entre o repositório do GitHub e os serviços do Azure, seguindo as instruções em Configurar a autenticação com Azure e GitHub.

Testar o pipeline

Para testar os pipelines, siga as instruções em Atualizar dados de teste. O processo completo tem as seguintes etapas:

  1. Você gera um PR de um branch de recursos para o branch de desenvolvimento.
  2. O pipeline de PR é executado automaticamente devido à configuração da política de branch.
  3. O PR é mesclado ao branch de desenvolvimento.
  4. 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.

  1. Clone o repositório da seguinte maneira:

    git clone https://github.com/microsoft/genaiops-promptflow-template.git
    
  2. 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 API 2024-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>"}
    
  3. 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
    
  4. Traga ou escreva seus fluxos no modelo com base nas instruções em Como integrar novos fluxos.

  5. Escreva scripts em Python na pasta local_execution semelhantes aos exemplos fornecidos.