This template can be used for both Azure AI Studio and Azure Machine Learning.
It can be used for both AZURE and LOCAL execution.
It supports all types of flow - python Class flows, Function flows and YAML flows.
It supports Github, Azure DevOps and Jenkins CI/CD orchestration.
It supports pure python based Evaluation as well using promptflow-evals package.
It should be used for INNER-LOOP Experimentation and Evaluation.
It should be used for OUTER-LOOP Deployment and Inferencing.
NOTE: A new FAQ section is added to help Engineers, Data Scientist and developers find answers to general questions on configuring and using this template.
Perguntas frequentes AQUI
Large Language Model Operations, ou LLMOps, tornou-se a base da engenharia rápida e eficiente e do desenvolvimento e implantação de aplicativos induzidos por LLM. À medida que a procura por aplicações induzidas por LLM continua a aumentar, as organizações necessitam de um processo coeso e simplificado para gerir o seu ciclo de vida de ponta a ponta.
A ascensão da IA e dos grandes modelos de linguagem (LLMs) transformou vários setores, permitindo o desenvolvimento de aplicações inovadoras com capacidades de compreensão e geração de texto semelhantes às humanas. Esta revolução abriu novas possibilidades em áreas como atendimento ao cliente, criação de conteúdo e análise de dados.
À medida que os LLMs evoluem rapidamente, a importância da Prompt Engineering torna-se cada vez mais evidente. A Prompt Engineering desempenha um papel crucial no aproveitamento de todo o potencial dos LLMs, criando prompts eficazes que atendem a cenários de negócios específicos. Este processo permite que os desenvolvedores criem soluções de IA personalizadas, tornando a IA mais acessível e útil para um público mais amplo.
É uma estrutura de experimentação e avaliação para Prompt Flow. Simplesmente não são pipelines de CI/CD para Prompt Flow, embora o suporte. Possui um rico conjunto de recursos para experimentação, avaliação, implantação e monitoramento do Prompt Flow. É uma solução completa ponta a ponta para operacionalização do Prompt Flow.
O modelo dá suporte ao Azure AI Studio e ao Azure Machine Learning. Dependendo da configuração, o modelo pode ser usado tanto para o Azure AI Studio quanto para o Azure Machine Learning. Ele fornece uma experiência de migração perfeita para experimentação, avaliação e implantação do Prompt Flow em todos os serviços.
Este modelo oferece suporte a diferentes tipos de fluxos, permitindo definir e executar fluxos de trabalho com base em seus requisitos específicos. Os dois principais tipos de fluxo suportados são:
Fluxos Flexíveis
Fluxos de gráfico acíclico direcionado (DAG)
Um dos recursos poderosos deste projeto é a capacidade de detectar automaticamente o tipo de fluxo e executá-lo de acordo. Isso permite que você experimente diferentes tipos de fluxo e escolha aquele que melhor atende às suas necessidades.
Este modelo suporta:
Gerenciar fluxos baseados em grandes idiomas, desde a experimentação local até a implantação de produção, está longe de ser simples e não é uma tarefa única para todos.
Cada fluxo tem seu ciclo de vida único, desde a experimentação inicial até a implantação, e cada estágio apresenta seu próprio conjunto de desafios.
As organizações muitas vezes lidam com vários fluxos simultaneamente, cada um com seus objetivos, requisitos e complexidades. Isso pode rapidamente se tornar complicado sem ferramentas de gerenciamento adequadas.
Envolve lidar com vários fluxos, seus ciclos de vida exclusivos, experimentar várias configurações e garantir implantações tranquilas.
É aí que entra o fluxo LLMOps com Prompt . O fluxo LLMOps com Prompt é um "modelo e orientação de LLMOps" para ajudá-lo a criar aplicativos infundidos com LLM usando o fluxo Prompt. Ele fornece os seguintes recursos:
Hospedagem de código centralizado: este repositório oferece suporte à hospedagem de código para vários fluxos com base no fluxo de prompt, fornecendo um único repositório para todos os seus fluxos. Pense nesta plataforma como um único repositório onde reside todo o seu código de fluxo de prompt. É 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 desfruta de seu próprio ciclo de vida, permitindo transições suaves da experimentação local até a implantação em produção.
Experimentação de variantes e hiperparâmetros: experimente múltiplas variantes e hiperparâmetros, avaliando variantes de fluxo com facilidade. Variantes e hiperparâmetros são como ingredientes de uma receita. Esta plataforma permite experimentar diferentes combinações de variantes em vários nós de um fluxo.
Implantação A/B: implemente implantações A/B perfeitamente, permitindo comparar diferentes versões de fluxo sem esforço. Assim como nos testes A/B tradicionais para sites, esta plataforma facilita a implantação A/B para fluxos de fluxo imediatos. Isso significa que você pode comparar facilmente diferentes versões de um fluxo em um ambiente real para determinar qual tem melhor desempenho.
Relacionamentos de conjunto de dados/fluxo muitos para muitos: Acomode vários conjuntos de dados para cada padrão e fluxo de avaliação, garantindo versatilidade em teste e avaliação de fluxo. A plataforma foi projetada para acomodar vários conjuntos de dados para cada fluxo.
Vários alvos de implantação: o repositório suporta a implantação de fluxos para Kubernetes e cálculos gerenciados pelo Azure orientados por meio de configuração, garantindo que seus fluxos possam ser dimensionados conforme necessário.
Relatórios abrangentes: gere relatórios detalhados para cada configuração de variante, permitindo que você tome decisões informadas. Fornece coleta detalhada de métricas para todas as execuções e experimentos em massa de variantes, permitindo decisões baseadas em dados em arquivos CSV e HTML.
Oferece BYOF (traga seus próprios fluxos). Uma plataforma completa para o desenvolvimento de vários casos de uso relacionados a aplicativos com LLM.
Oferece desenvolvimento baseado em configuração . Não há necessidade de escrever código padrão extenso.
Fornece execução imediata de experimentação e avaliação localmente e na nuvem.
Fornece cadernos para avaliação local dos prompts. Fornece biblioteca de funções para experimentação local.
Teste de endpoint no pipeline após a implantação para verificar sua disponibilidade e prontidão.
Fornece Human-in-loop opcional para validar métricas imediatas antes da implantação.
LLMOps com fluxo Prompt fornece recursos para aplicativos simples e complexos com infusão de LLM. É totalmente personalizável de acordo com as necessidades da aplicação.
Cada caso de uso (conjunto de padrões de fluxo de prompt e fluxos de avaliação) deve seguir a estrutura de pastas conforme mostrado aqui:
Além disso, há um arquivo experiment.yaml
que configura o caso de uso (consulte a descrição e especificações do arquivo para obter mais detalhes). Há também um arquivo sample-request.json contendo dados de teste para testar endpoints após a implantação.
A pasta '.azure-pipelines' contém os pipelines comuns do Azure DevOps para a plataforma e quaisquer alterações neles afetarão a execução de todos os fluxos.
A pasta '.github' contém os fluxos de trabalho do Github para a plataforma, bem como os casos de uso. Isso é um pouco diferente do Azure DevOps porque todos os fluxos de trabalho do Github devem estar nesta única pasta para execução.
A pasta '.jenkins' contém os pipelines declarativos Jenkins para a plataforma, bem como os casos de uso e trabalhos individuais.
A pasta 'docs' contém documentação para guias passo a passo para Azure DevOps, Github Workflow e configuração relacionada ao Jenkins.
A pasta 'llmops' contém todo o código relacionado à execução, avaliação e implantação do fluxo.
A pasta ‘dataops’ contém todo o código relacionado à implantação do pipeline de dados.
A pasta 'local_execution' contém scripts python para executar localmente o fluxo padrão e de avaliação.
O projeto inclui 6 exemplos que demonstram diferentes cenários:
Localização: ./web_classification Importância: Demonstra o resumo do conteúdo do site com múltiplas variantes, mostrando a flexibilidade e opções de personalização disponíveis no modelo.
Localização: ./named_entity_recognition Importância: Mostra a extração de entidades nomeadas do texto, o que é valioso para várias tarefas de processamento de linguagem natural e extração de informações.
Localização: ./math_coding Importância: Apresenta a capacidade de realizar cálculos matemáticos e gerar trechos de código, destacando a versatilidade do template no tratamento de tarefas computacionais.
Localização: ./chat_with_pdf Importância: Demonstra uma interface conversacional para interagir com documentos PDF, aproveitando o poder da geração aumentada de recuperação (RAG) para fornecer respostas precisas e relevantes.
Localização: ./function_flows Importância: Demonstra a geração de trechos de código com base em prompts do usuário, mostrando o potencial para automatizar tarefas de geração de código.
Localização: ./class_flows Importância: Apresenta uma aplicação de chat construída usando fluxos baseados em classes, ilustrando a estruturação e organização de interfaces conversacionais mais complexas.
O repo ajuda na implantação em Kubernetes, Kubernetes ARC, Azure Web Apps e computação gerenciada AzureML, juntamente com implantação A/B para computação gerenciada AzureML.
A execução do pipeline consiste em vários estágios e trabalhos em cada estágio:
O repositório gera vários relatórios (exemplos de execuções de experimentos e métricas são mostrados):
Para aproveitar os recursos da execução local , siga estas etapas de instalação:
git clone https://github.com/microsoft/llmops-promptflow-template.git
aoai
. Adicione uma linha aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
com valores atualizados para api_key e api_base. Se conexões adicionais com nomes diferentes forem usadas em seus fluxos, elas deverão ser adicionadas adequadamente. Atualmente, flua com AzureOpenAI como fornecedor conforme suportado. experiment_name=
connection_name_1={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
connection_name_2={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
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 na documentação aqui.
Escreva scripts python semelhantes aos exemplos fornecidos na pasta local_execution.
DataOps combina aspectos de DevOps, metodologias ágeis e práticas de gerenciamento de dados para agilizar o processo de coleta, processamento e análise de dados. DataOps pode ajudar a disciplinar a construção de conjuntos de dados (treinamento, experimentação, avaliação, etc.) necessários para o desenvolvimento de aplicativos LLM.
Os pipelines de dados são mantidos separados dos fluxos de engenharia imediatos. Os pipelines de dados criam os conjuntos de dados e os conjuntos de dados são registrados como ativos de dados no Azure ML para consumo dos fluxos. Essa abordagem ajuda a dimensionar e solucionar problemas de forma independente em diferentes partes do sistema.
Para obter detalhes sobre como começar a usar o DataOps, siga este documento – Como configurar o DataOps.
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA), declarando que você tem o direito de nos conceder, e realmente nos concede, os direitos de uso de sua contribuição. Para obter detalhes, visite https://cla.opensource.microsoft.com.
Quando você envia uma solicitação pull, um bot CLA determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, verificação de status, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.
Este projeto pode conter marcas registradas ou logotipos de projetos, produtos ou serviços. O uso autorizado de marcas registradas ou logotipos da Microsoft está sujeito e deve seguir as Diretrizes de Marcas Registradas e Marcas da Microsoft. O uso de marcas registradas ou logotipos da Microsoft em versões modificadas deste projeto não deve causar confusão nem implicar patrocínio da Microsoft. Qualquer uso de marcas registradas ou logotipos de terceiros está sujeito às políticas desses terceiros.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.
Direitos autorais (c) Microsoft Corporation. Todos os direitos reservados.
Licenciado sob a licença MIT.