Integre o fluxo de prompt com o DevOps para aplicativos baseados em LLM
O fluxo de prompt do Azure Machine Learning é um método code-first amigável e fácil de usar para desenvolver e iterar fluxos para desenvolvimento de aplicativos baseados em LLM (modelo de linguagem grande). O fluxo de prompt fornece um SDK e CLI, uma extensão de código do Visual Studio e uma interface do usuário de criação de fluxo. Essas ferramentas facilitam o desenvolvimento do fluxo local, a execução do fluxo local e o acionamento da execução de avaliação e a transição de fluxos entre ambientes de espaço de trabalho locais e em nuvem.
Você pode combinar a experiência de fluxo de prompt e os recursos de código com operações de desenvolvedor (DevOps) para aprimorar seus fluxos de trabalho de desenvolvimento de aplicativos baseados em LLM. Este artigo se concentra na integração do fluxo de prompt e do DevOps para aplicativos baseados em LLM do Azure Machine Learning.
O diagrama a seguir mostra a interação do desenvolvimento de fluxo de prompt local e baseado em nuvem com o DevOps.
Pré-requisitos
Uma área de trabalho do Azure Machine Learning. Para criar um, consulte Criar recursos para começar.
Um ambiente Python local com o SDK do Python do Azure Machine Learning v2 instalado, criado seguindo as instruções em Introdução.
Nota
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, consulte Gerenciar sessão de computação de fluxo de prompt no estúdio do Azure Machine Learning.
Visual Studio Code com as extensões de fluxo Python e Prompt instaladas.
Usar uma experiência code-first no fluxo de prompt
O desenvolvimento de aplicativos baseados em LLM geralmente segue um processo padronizado de engenharia de aplicativos 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.
A integração do DevOps com a experiência de código de fluxo imediato oferece aos desenvolvedores de código um processo de iteração GenAIOps ou LLMOps mais eficiente, com os seguintes recursos e benefícios principais:
Controle de versão de fluxo no repositório de código. Você pode definir arquivos de fluxo no formato YAML e eles permanecem alinhados com arquivos de origem referenciados na mesma estrutura de pastas.
Integração de fluxo de execução com pipelines de CI/CD. Você pode integrar perfeitamente o fluxo de prompt em seus pipelines de CI/CD e processo de entrega usando a CLI ou SDK de fluxo de prompt para acionar automaticamente as 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 sem esforço a pasta de fluxo de volta para o Azure Machine Learning para criação, teste e implantação adicionais usando recursos de nuvem.
Código de fluxo de prompt de acesso
Cada fluxo de prompt tem uma estrutura de pasta 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 Users/<username>/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 feitas nos arquivos refletem diretamente no armazenamento de compartilhamento de arquivos.
A pasta de fluxo para um fluxo baseado em LLM contém os seguintes arquivos de chave.
flow.dag.yaml é o arquivo de definição de fluxo primário no formato YAML. Este arquivo é essencial para criar e definir o fluxo de prompt. 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 no formato Python (.py) ou Jinja 2 (.jinja2) configuram as ferramentas e os nós no fluxo. A ferramenta Python usa arquivos Python para definir a lógica Python personalizada. A ferramenta prompt e a ferramenta LLM usam arquivos Jinja 2 para definir o contexto do prompt.
Arquivos não-fonte, como utilitários e arquivos de dados, podem ser incluídos na pasta de fluxo junto com os arquivos de origem.
Para visualizar e editar o código bruto do flow.dag.yaml e dos arquivos de origem no editor de arquivos, ative o modo de arquivo bruto.
Como alternativa, você pode acessar e editar todas as suas pastas de fluxo e arquivos na página Blocos de Anotações do estúdio do Azure Machine Learning.
Baixe e faça check-in do código de fluxo de prompt
Para verificar seu fluxo em seu repositório de código, exporte a pasta de fluxo do estúdio de Aprendizado de Máquina do Azure para sua máquina local. Selecione o ícone de download na seção Arquivos da página de criação de fluxo para baixar um pacote ZIP contendo todos os arquivos de fluxo. Em seguida, você pode verificar esse arquivo em 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, consulte Integração do Git para o Azure Machine Learning.
Desenvolver e testar localmente
À medida que você refina e ajusta seu fluxo ou prompts durante o desenvolvimento iterativo, você pode realizar várias iterações localmente em seu repositório de código. A versão da comunidade do VS Code, a extensão de fluxo do VS Code Prompt e o SDK e a CLI locais do fluxo de prompt facilitam o desenvolvimento e o teste locais puros sem a vinculação do Azure.
Trabalhar localmente permite que você faça e teste alterações rapidamente, sem a necessidade de atualizar o repositório de código principal a cada vez. Para obter mais detalhes e orientações sobre como usar versões locais, consulte a comunidade GitHub de fluxo de prompt.
Usar a extensão de fluxo do VS Code Prompt
Usando a extensão Prompt flow VS Code, você pode facilmente criar seu fluxo localmente no editor 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 de fluxo de prompt:
No VS Code com a extensão de fluxo de prompt habilitada, abra uma pasta de fluxo de prompt.
Abra o arquivo flow.dag.yaml e selecione o link Editor visual na parte superior do arquivo.
Use o editor visual de fluxo de prompt para fazer alterações no 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ó.
Usar o SDK e a CLI do fluxo de prompt
Se 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 .
Em seguida, você pode acionar uma única execução de fluxo para teste usando a CLI ou SDK de fluxo de prompt no terminal da seguinte maneira.
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
Quando estiver satisfeito com os resultados do teste local, você poderá usar a CLI ou SDK de fluxo de prompt 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 de fluxo de prompt para sua máquina local.
Instalar o SDK de fluxo de prompt
Instale o SDK do fluxo de prompt do Azure/CLI executando pip install promptflow[azure] promptflow-tools
o .
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 espaço de trabalho do Azure Machine Learning
az login
Carregue o fluxo e crie uma execução
Prepare o arquivo run.yml para definir a configuração para esse fluxo executado 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 a 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
Criar uma execução de fluxo de avaliação
Prepare o arquivo de run_evaluation.yml para definir a configuração para esse fluxo de avaliação executado 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
Ver resultados da execução
O envio da execução de 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 CLI ou SDK para exibir os resultados da execução.
Transmitir os logs
pfazure run stream --name <run-name>
Ver saídas de execução
pfazure run show-details --name <run-name>
Ver métricas de execução de avaliação
pfazure run show-metrics --name <evaluation-run-name>
Integração com DevOps
Uma combinação de um ambiente de desenvolvimento local e um sistema de controle de versão como o Git é normalmente mais eficaz para o desenvolvimento iterativo. Você pode fazer modificações e testar seu código localmente e, em seguida, confirmar as alterações no Git. Esse processo cria um registro contínuo de suas alterações e oferece a capacidade de reverter para versões anteriores, se necessário.
Quando precisar compartilhar fluxos em diferentes ambientes, você poderá enviá-los por push 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 de código mais recente de qualquer local e fornece ferramentas para colaboração e gerenciamento de código.
Seguindo essas práticas, as equipes podem criar um ambiente colaborativo perfeito, eficiente e produtivo para o desenvolvimento imediato do fluxo.
Por exemplo, pipelines LLMOps de ponta a ponta que executam fluxos de classificação da Web, consulte Configurar GenAIOps de ponta a ponta com prompt Flow e GitHub e o projeto de demonstração GitHub Web Classification.
O fluxo de gatilho é executado em pipelines de CI
Depois de desenvolver e testar com sucesso seu fluxo e verificá-lo como a versão inicial, você estará pronto para ajustar e testar iterações. Nesta etapa, você pode acionar execuções de fluxo, incluindo testes em lote e execuções de avaliação, usando a CLI de fluxo de prompt para automatizar etapas em seu pipeline de CI.
Durante todo o ciclo de vida de suas iterações de fluxo, você pode usar a CLI para automatizar as seguintes operações:
- Executando o fluxo de prompt após uma solicitação pull
- Execução de avaliação de fluxo imediata para garantir que os resultados sejam de alta qualidade
- Registrando modelos de fluxo de prompt
- Implantando modelos de fluxo de prompt
Use a interface do usuário do estúdio para desenvolvimento contínuo
Em qualquer ponto do desenvolvimento do fluxo, você pode voltar à interface do usuário do estúdio do Azure Machine Learning e usar recursos e experiências de 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 Bloco de Anotações e extrair os arquivos de fluxo mais recentes do 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 em nuvem.
Implantar o fluxo como um ponto de extremidade online
A última etapa para entrar em produção é implantar seu fluxo como um ponto de extremidade online no Azure Machine Learning. Este processo permite-lhe integrar o seu fluxo na sua aplicação e disponibiliza-o para utilização. Para obter mais informações sobre como implantar seu fluxo, consulte Implantar fluxos no ponto de extremidade online gerenciado do Azure Machine Learning para inferência em tempo real.
Colabore no desenvolvimento de fluxos
A colaboração entre os membros da equipe pode ser essencial ao desenvolver um aplicativo baseado em LLM com fluxo imediato. Os membros da equipe podem estar criando e testando o mesmo fluxo, trabalhando em diferentes facetas do fluxo ou fazendo alterações iterativas e aprimoramentos simultaneamente. Essa colaboração requer uma abordagem eficiente e simplificada para compartilhar código, rastrear modificações, gerenciar versões e integrar alterações no projeto final.
O SDK de fluxo de prompt/CLI e a extensão de fluxo VS Code Prompt facilitam a colaboração 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 origem baseado em nuvem, como o GitHub ou o Azure Repos, para controlar alterações, gerenciar versões e integrar essas modificações no projeto final.
Siga as melhores práticas de desenvolvimento colaborativo
Configure um repositório de código centralizado.
A primeira etapa do processo colaborativo envolve a configuração de um repositório de código como base para o código do projeto, incluindo o código de fluxo imediato. Esse repositório centralizado permite organização eficiente, controle de alterações e colaboração entre os membros da equipe.
Crie e teste seu fluxo localmente no VS Code com a extensão de fluxo Prompt.
Depois que o repositório estiver configurado, os membros da equipe poderão usar o VS Code com a extensão de fluxo Prompt 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 aspetos do fluxo.
Use a CLI ou SDK
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 locais, os membros da equipe podem usar a CLI/SDK de fluxo de prompt para enviar e avaliar execuções em lote e avaliação para a nuvem. Esse processo permite o uso de computação em nuvem, armazenamento de resultados persistentes, criação de pontos finais para implantações e gerenciamento eficiente na interface do usuário do estúdio.
Exiba e gerencie os resultados de execução na interface do usuário do espaço de trabalho do estúdio do Azure Machine Learning.
Depois de enviar execuções para a nuvem, os membros da equipe podem acessar a interface do usuário do estúdio para visualizar os resultados e gerenciar experimentos de forma eficiente. O espaço de trabalho na nuvem fornece um local centralizado para coletar e gerenciar o histórico de execução, 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, ajudando na análise de qualidade e nos ajustes necessários.
Continue a usar o desenvolvimento iterativo local.
Depois de 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 um aprimoramento consistente até que a equipe esteja satisfeita com a qualidade para a produção.
Use a implantação em uma etapa para a produção no estúdio.
Quando a equipe estiver totalmente confiante na qualidade do fluxo, poderá implantá-lo perfeitamente como um endpoint on-line em um ambiente de nuvem robusto. A implantação como um ponto de extremidade on-line pode ser baseada em um instantâneo de execução, permitindo um serviço estável e seguro, alocação de recursos e rastreamento de uso adicionais e monitoramento de logs na nuvem.
O assistente de Implantação do estúdio do Azure Machine Learning ajuda você a configurar facilmente sua implantação.