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.
Pré-requisitos
Um workspace do Azure Machine Learning. Para criar um, confira Criar recursos para começar.
Um ambiente Python local com o SDK do Azure Machine Learning Python v2 instalado, criado seguindo as instruções em Introdução.
Observação
Esse ambiente é separado do ambiente que a sessão de computação usa para executar o fluxo, que você define como parte do fluxo. Para obter mais informações, confira Gerenciar sessão de computação do prompt flow no Estúdio do Azure Machine Learning.
Visual Studio Code com as extensões Python e Prompt flow instaladas.
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.
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.
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.
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.
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.
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:
No VS Code com a extensão Prompt flow ativada, abra uma pasta de prompt flow.
Abra o arquivo flow.dag.yaml e selecione o link Editor Visual na parte superior do arquivo.
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.
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ó.
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.
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.
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 compip 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.
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
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.
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.
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.
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.
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.
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.
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.
O assistente de Implantação do Estúdio do Azure Machine Learning ajuda você a configurar sua implantação com facilidade.