Compartilhar via


Integre o prompt flow com o DevOps para aplicativos baseados em LLM

O prompt flow do Azure Machine Learning é um método orientado por código, fácil de usar e amigável para desenvolvedores, para desenvolver e iterar fluxos para o desenvolvimento de aplicativos baseados em grande modelo de linguagem (LLM). O prompt flow fornece um SDK e CLI, uma extensão do Visual Studio Code e uma interface de criação de fluxo. Essas ferramentas facilitam o desenvolvimento de fluxo local, a execução local do fluxo e o disparo da execução de avaliação, além da transição de fluxos entre ambientes de espaço de trabalho local e nuvem.

Você pode combinar a experiência do prompt flow e as funcionalidades de código com operações de desenvolvedor (DevOps) para aprimorar seus fluxos de trabalho de desenvolvimento de aplicativos baseados em LLM. Esse artigo se concentra em integrar o prompt flow e o DevOps para aplicativos baseados em LLM do Azure Machine Learning.

O diagrama a seguir mostra a interação do desenvolvimento do prompt flow local e baseado em nuvem com o DevOps.

Diagrama mostrando o seguinte fluxo: criar fluxo, desenvolver e testar fluxo, controle de versão no repositório de código, enviar execuções para a nuvem, depurar e iteração.

Pré-requisitos

Use uma experiência orientada por código no prompt flow

O desenvolvimento de aplicativos baseados em LLM geralmente segue um processo de engenharia de aplicativos padronizado que inclui repositórios de código-fonte e pipelines de integração contínua/implantação contínua (CI/CD). Esse processo promove o desenvolvimento simplificado, o controle de versão e a colaboração entre os membros da equipe.

Integrar o DevOps com a experiência de código do prompt flow oferece aos desenvolvedores de código um processo de iteração GenAIOps ou LLMOps mais eficiente, com os seguintes principais recursos e benefícios:

  • Controle de versão do fluxo no repositório de código. Você pode definir arquivos de fluxo no formato YAML, e eles permanecem alinhados com os arquivos de origem referenciados na mesma estrutura de pastas.

  • Integração da execução de fluxo com pipelines de CI/CD. Você pode integrar perfeitamente o prompt flow em seus pipelines de CI/CD e processo de entrega usando a CLI ou SDK do prompt flow para disparar automaticamente execuções de fluxo.

  • Transição suave entre local e nuvem. Você pode exportar facilmente sua pasta de fluxo para seu repositório de código local ou upstream para controle de versão, desenvolvimento local e compartilhamento. Você também pode importar a pasta de fluxo de volta para o Azure Machine Learning para mais criação, teste e implantação usando recursos da nuvem.

Acessar código do prompt flow

Cada prompt flow tem uma estrutura de pastas de fluxo contendo arquivos de código essenciais que definem o fluxo. A estrutura de pastas organiza seu fluxo, facilitando transições mais suaves entre local e nuvem.

O Azure Machine Learning fornece um sistema de arquivos compartilhado para todos os usuários do espaço de trabalho. Após a criação do fluxo, uma pasta de fluxo correspondente é gerada automaticamente e armazenada no diretório Usuário/<nome de usuário>/promptflow.

Captura de tela da criação do fluxo padrão mostrando um novo fluxo.

Trabalhar com arquivos de código de fluxo

Depois de criar um fluxo no Estúdio do Azure Machine Learning, você pode exibir, editar e gerenciar os arquivos de fluxo na seção Arquivos da página de criação de fluxo. Quaisquer modificações que você fizer nos arquivos serão refletidas diretamente no armazenamento do compartilhamento de arquivos.

Captura de tela de uma página de criação de fluxo padrão destacando o painel Arquivos.

A pasta de fluxo para um fluxo baseado em LLM contém os seguintes arquivos principais.

  • flow.dag.yaml é o principal arquivo de definição de fluxo no formato YAML. Esse arquivo é integral para a criação e definição do prompt flow. O arquivo inclui informações sobre entradas, saídas, nós, ferramentas e variantes que o fluxo usa.

  • Os arquivos de código-fonte gerenciados pelo usuário em formato Python (.py) ou Jinja 2 (.jinja2) configuram as ferramentas e nós no fluxo. A ferramenta Python usa arquivos Python para definir a lógica Python personalizada. A ferramenta de prompt e a ferramenta LLM usam arquivos Jinja 2 para definir o contexto do prompt.

  • Arquivos não fonte, como arquivos de utilitário e dados, podem ser incluídos na pasta de fluxos junto com os arquivos de origem.

Para exibir e editar o código bruto dos arquivos flow.dag.yaml e de origem no editor de arquivos, ative o Modo de arquivo bruto.

Captura de tela do Modo de arquivo bruto em um fluxo padrão.

Como alternativa, você pode acessar e editar todas as suas pastas e arquivos de fluxo na página Notebooks do Estúdio do Azure Machine Learning.

Captura de tela dos Notebooks no Azure Machine Learning com a pasta de prompt flow mostrando os arquivos.

Baixar e fazer check-in do código do prompt flow

Para checar seu fluxo no seu repositório de código, exporte a pasta do fluxo do Estúdio do Azure Machine Learning para seu computador local. Selecione o ícone de download na seção Arquivos da página de criação do fluxo para baixar um pacote ZIP contendo todos os arquivos do fluxo. Você pode então checar esse arquivo no seu repositório de código ou descompactá-lo para trabalhar com os arquivos localmente.

Captura de tela mostrando o ícone de download no Explorador de Arquivos.

Para obter mais informações sobre a integração do DevOps com o Azure Machine Learning, confira Integração do Git para Azure Machine Learning.

Desenvolver e testar localmente

Conforme você refina e ajusta seu fluxo ou prompts durante o desenvolvimento iterativo, você pode realizar várias iterações localmente dentro do seu repositório de código. A versão da comunidade do VS Code, a extensão Prompt flow do VS Code e o SDK e CLI locais do prompt flow facilitam o desenvolvimento e teste locais puros sem associação ao Azure.

Trabalhar localmente permite que você faça e teste alterações rapidamente, sem precisar atualizar o repositório de código principal a cada vez. Para obter mais detalhes e diretrizes sobre o uso de versões locais, confira a Comunidade do GitHub do Prompt flow.

Use a extensão Prompt flow do VS Code

Ao usar a extensão Prompt flow do VS Code, você pode facilmente criar seu fluxo localmente no editor do VS Code com uma experiência de interface do usuário semelhante à da nuvem.

Para editar arquivos localmente no VS Code com a extensão Prompt flow:

  1. No VS Code com a extensão Prompt flow ativada, abra uma pasta de prompt flow.

  2. Abra o arquivo flow.dag.yaml e selecione o link Editor Visual na parte superior do arquivo.

    Captura de tela do link do Editor Visual na parte superior de um arquivo de definição de fluxo no VS Code.

  3. Use o editor visual do prompt flow para fazer alterações no seu fluxo, como ajustar os prompts em variantes ou adicionar mais nós.

    Captura de tela do editor visual do prompt flow no VS Code.

  4. Para testar seu fluxo, selecione o ícone Executar na parte superior do editor visual, ou para testar qualquer nó, selecione o ícone Executar na parte superior do nó.

    Captura de tela do VS Code mostrando a execução do fluxo ou de um nó no editor visual.

Use o SDK e a CLI do prompt flow

Se você preferir trabalhar diretamente no código, ou usar Jupyter, PyCharm, Visual Studio ou outro ambiente de desenvolvimento integrado (IDE), você pode modificar diretamente o código YAML no arquivo flow.dag.yaml.

Captura de tela de um arquivo YAML no VS Code destacando a entrada padrão e o diretório de fluxo.

Você pode então disparar uma única execução de fluxo para teste usando a CLI ou o SDK do prompt flow no terminal da seguinte forma.

Para disparar uma execução a partir do diretório de trabalho, execute o seguinte código:

pf flow test --flow <directory-name>

Os valores de retorno são os logs de teste e saídas.

Captura de tela da saída de teste de fluxo no PowerShell.

Enviar execuções para a nuvem a partir de um repositório local

Depois de estar satisfeito com os resultados do seu teste local, você pode usar a CLI ou o SDK do prompt flow para enviar execuções para a nuvem a partir do repositório local. O procedimento e o código a seguir são baseados no Projeto de Demonstração de Classificação da Web no GitHub. Você pode clonar o repositório do projeto ou baixar o código do prompt flow para seu computador local.

Instalar o SDK de prompt flow

Instale o SDK/CLI do prompt flow do Azure executando pip install promptflow[azure] promptflow-tools.

Se você estiver usando o projeto de demonstração, obtenha o SDK e outros pacotes necessários instalando requirements.txt com
pip install -r <path>/requirements.txt.

Conectar-se ao seu workspace do Azure Machine Learning

az login

Faça upload do fluxo e crie uma execução

Prepare o arquivo run.yml para definir a configuração para essa execução de fluxo na nuvem.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl

column_mapping:
  url: ${data.url}

# Define cloud compute resource

resources:
  instance_type: <compute-type>

# If using compute instance compute type, also specify instance name
#  compute: <compute-instance-name> 

# Specify connections

  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

Você pode especificar o nome da conexão e da implantação para cada ferramenta no fluxo que requer uma conexão. Se você não especificar o nome da conexão e da implantação, a ferramenta usará a conexão e implantação no arquivo flow.dag.yaml. Use o seguinte código para formatar conexões:

...
connections:
  <node-name>:
    connection: <connection-name>
      deployment_name: <deployment-name>
...

Crie a execução.

pfazure run create --file run.yml

Crie uma execução de fluxo de avaliação

Prepare o arquivo run_evaluation.yml para definir a configuração para essa execução de fluxo de avaliação na nuvem.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl
run: <id-of-base-flow-run>
column_mapping:
  <input-name>: ${data.<column-from-test-dataset>}
  <input-name>: ${run.outputs.<column-from-run-output>}

resources:
  instance_type: <compute-type>
  compute: <compute_instance_name> 

connections:
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

Crie a execução de avaliação.

pfazure run create --file run_evaluation.yml

Visualizar os resultados da execução

Enviar a execução do fluxo para a nuvem retorna a URL da nuvem da execução. Você pode abrir a URL para exibir os resultados da execução no Estúdio do Azure Machine Learning. Você também pode executar os seguintes comandos da CLI ou do SDK para exibir os resultados da execução.

Transmitir os logs

pfazure run stream --name <run-name>

Exibir saídas de execução

pfazure run show-details --name <run-name>

Exibir as métricas de execução de avaliação

pfazure run show-metrics --name <evaluation-run-name>

Integrar com o DevOps

Uma combinação de um ambiente de desenvolvimento local e um sistema de controle de versão como o Git é geralmente mais efetiva para o desenvolvimento iterativo. Você pode fazer modificações e testar seu código localmente e, em seguida, enviar as alterações para o Git. Esse processo cria um registro contínuo das suas alterações e oferece a capacidade de reverter para versões anteriores, se necessário.

Quando você precisar compartilhar fluxos em diferentes ambientes, poderá transmiti-los para um repositório de código baseado em nuvem como o GitHub ou o Azure Repos. Essa estratégia permite que você acesse a versão mais recente do código de qualquer localização e fornece ferramentas para colaboração e gerenciamento de código.

Ao seguir essas práticas, as equipes poderão criar um ambiente colaborativo contínuo, eficiente e produtivo para o desenvolvimento do prompt flow.

Por exemplo, pipelines LLMOps de ponta a ponta que executam fluxos de classificação da Web, confira Configurar GenAIOps de ponta a ponta com o prompt Flow e o GitHub e o projeto de demonstração de Classificação da Web do GitHub.

Executar fluxos de execução do fluxo em pipelines de CI

Depois de desenvolver e testar seu fluxo com sucesso e registrá-lo como a versão inicial, você estará pronto para iterações de ajuste e teste. Nesta pré-visualização, você pode disparar execuções de fluxo, incluindo execuções de teste em lote e avaliação, usando a CLI do prompt flow para automatizar etapas no seu pipeline de CI.

Ao longo do ciclo de vida das suas iterações de fluxo, você pode usar a CLI para automatizar as seguintes operações:

  • Executar o prompt flow após um pull request
  • Execução da avaliação do fluxo de prompts solicitada para garantir que os resultados sejam de alta qualidade
  • Registrar modelos de prompt flow
  • Implantar modelos de prompt flow

Use a interface do estúdio para desenvolvimento contínuo

Em qualquer ponto do desenvolvimento do fluxo, você pode voltar à interface do Estúdio do Azure Machine Learning e usar recursos e experiências em nuvem para fazer alterações no seu fluxo.

Para continuar desenvolvendo e trabalhando com as versões mais atualizadas dos arquivos de fluxo, você pode acessar um terminal na página Notebook e transferir os arquivos de fluxo mais recentes do seu repositório. Ou você pode importar diretamente uma pasta de fluxo local como um novo fluxo de rascunho para fazer a transição perfeita entre o desenvolvimento local e de nuvem.

Captura de tela da tela Criar um novo fluxo com a opção Carregar para o local destacada.

Implantar o fluxo como um ponto de extremidade online

A última etapa para ir para a produção é implantar seu fluxo como um ponto de extremidade online no Azure Machine Learning. Esse processo permite que você integre seu fluxo ao seu aplicativo e o torne disponível para uso. Para obter mais informações sobre como implantar seu fluxo, confira Implantar fluxos no ponto de extremidade online gerenciado do Azure Machine Learning para inferência em tempo real.

Colaborar no desenvolvimento do fluxo

A colaboração entre os membros da equipe pode ser essencial ao desenvolver um aplicativo baseado em LLM com o prompt flow. Os membros da equipe podem estar criando e testando o mesmo fluxo, trabalhando em diferentes facetas do fluxo ou fazendo alterações e aprimoramentos iterativos simultaneamente. Essa colaboração requer uma abordagem eficiente e simplificada para compartilhar código, acompanhar modificações, gerenciar versões e integrar alterações ao projeto final.

O SDK/CLI do prompt flow e a extensão do Prompt flow do VS Code facilitam a colaboração fácil no desenvolvimento de fluxo baseado em código dentro de um repositório de código-fonte. Você pode usar um sistema de controle de código-fonte baseado em nuvem como o GitHub ou o Azure Repos para acompanhar alterações, gerenciar versões e integrar essas modificações ao projeto final.

Siga as melhores práticas de desenvolvimento colaborativo

  1. Configurar um repositório de código centralizado.

    A primeira etapa do processo colaborativo envolve configurar um repositório de código como a base para o código do projeto, incluindo o código do prompt flow. Esse repositório centralizado permite organização eficiente, controle de alterações e colaboração entre os membros da equipe.

  2. Autor e teste único do seu fluxo localmente no VS Code com a extensão Prompt flow.

    Depois que o repositório estiver configurado, os membros da equipe poderão usar o VS Code com a extensão Prompt flow para criação local e teste de entrada única do fluxo. O ambiente de desenvolvimento integrado padronizado promove a colaboração entre vários membros que trabalham em diferentes aspectos do fluxo.

    Captura de tela do desenvolvimento local.

  3. Use a CLI ou SDK do pfazure para enviar execuções em lote e execuções de avaliação de fluxos locais para a nuvem.

    Após o desenvolvimento e teste local, os membros da equipe poderão usar a CLI/SDK do prompt flow para enviar e avaliar execuções em lote e de avaliação para a nuvem. Esse processo permite o uso de computação em nuvem, armazenamento persistente de resultados, criação de ponto de extremidade para implantações e gerenciamento eficiente na interface do estúdio.

    Captura de tela do comando pfazure para enviar a execução para a nuvem.

  4. Exibir e gerenciar os resultados da execução na interface do espaço de trabalho do Estúdio do Azure Machine Learning.

    Depois que enviarem execuções para a nuvem, os membros da equipe poderão acessar a interface do estúdio para exibir os resultados e gerenciar experimentos com eficiência. O espaço de trabalho em nuvem fornece um local centralizado para reunir e gerenciar históricos de execuções, logs, instantâneos, resultados abrangentes e entradas e saídas no nível da instância.

    Captura de tela do instantâneo de execução de nuvem.

  5. Use a lista Execuções que registra todo o histórico de execuções para comparar facilmente os resultados de diferentes execuções, auxiliando na análise de qualidade e ajustes necessários.

    Captura de tela da lista de execuções no espaço de trabalho.

  6. Continue usando o desenvolvimento iterativo local.

    Após analisar os resultados dos experimentos, os membros da equipe podem retornar ao ambiente local e ao repositório de código para mais desenvolvimento e ajuste fino e enviar iterativamente execuções subsequentes para a nuvem. Essa abordagem iterativa garante aprimoramento consistente até que a equipe esteja satisfeita com a qualidade para produção.

  7. Use a implantação em uma etapa para produção no estúdio.

    Quando a equipe estiver totalmente confiante na qualidade do fluxo, poderá implantá-lo como um ponto de extremidade online em um ambiente de nuvem robusto. A implantação como um ponto de extremidade online pode ser baseada em um instantâneo de execução, permitindo um serviço estável e seguro, alocação de recursos adicional, acompanhamento de uso e monitoramento de logs na nuvem.

    Captura de tela da implantação do fluxo de um instantâneo de execução.

    O assistente de Implantação do Estúdio do Azure Machine Learning ajuda você a configurar sua implantação com facilidade.

    Captura de tela do assistente de implantação.