O toolkit de engenharia de prompts da Uber
(uber.com)- Para obter saídas precisas e adequadas de LLMs, é essencial um design de prompt sofisticado
- O design de prompts permite que até usuários sem familiaridade com machine learning controlem a saída do modelo com overhead mínimo
- A Uber desenvolveu um toolkit centralizado para possibilitar experimentação rápida e iterativa com LLMs
- Criação e gerenciamento de templates de prompt
- Uso de RAG e de datasets em tempo de execução
- Funcionalidades:
- Suporte a instruções de sistema, contextualização dinâmica, geração offline em massa (inferência de LLM) e avaliação de respostas
- Controle de versão, colaboração e verificações de segurança (checagem de alucinações, framework padronizado de avaliação e políticas de segurança)
Ciclo de vida da engenharia de prompts
O ciclo de vida da engenharia de prompts é composto por duas etapas:
- Fase de desenvolvimento: composta por três etapas: exploração de LLMs, iteração de templates de prompt e avaliação
- Etapa de exploração de LLMs: explorar os LLMs disponíveis por meio do catálogo de modelos e do GenAI Playground, além de testar respostas dos LLMs com prompts
- Etapa de iteração de templates de prompt: entender requisitos específicos de negócio, coletar dados de exemplo, criar/analisar/testar prompts, avaliar respostas e revisá-las quando necessário. Com auto-prompting, não é preciso criar templates de prompt do zero
- Etapa de avaliação: testar templates de prompt com datasets maiores para medir desempenho. É possível avaliar o desempenho usando um LLM como juiz ou avaliadores de LLM personalizados baseados em código
- Fase de produção (Productionization): apenas templates de prompt que passarem os limiares na fase de avaliação são colocados em produção. O uso em ambiente de produção é rastreado/monitorado, e os dados de uso do sistema são coletados para melhorar o processo
Arquitetura
- UI/SDK de templates de prompt: gerenciamento de templates de prompt e revisões. Integrado com GetAPI e Execute API
- Catálogo de modelos LLM: interface com os modelos LLM implantados
- Modelos e prompts são armazenados em ETCD e UCS e usados no pipeline de geração offline e no pipeline de avaliação de templates de prompt
Criação de templates de prompt
- O prompt builder do toolkit de prompts gera prompts automaticamente para os usuários
- Ajuda a descobrir técnicas avançadas de prompting adequadas a casos de uso específicos de IA
- O construtor automático de prompts, baseado no framework interno Langfx construído sobre LangChain, segue as etapas abaixo
- 1. Integração de boas práticas de engenharia de prompts
- 2. Fornecimento de instruções detalhadas de listagem de templates e alguns exemplos para ajudar na geração de prompts
- 3. Uso de modelos LLM para dar suporte à geração de prompts
- Diretrizes avançadas de prompting: o prompt builder gera prompts usando os princípios abaixo
- Prompting CoT (Chain of Thought): possibilita capacidades de raciocínio complexo por meio de etapas intermediárias de raciocínio
- Auto-CoT: usa a expressão-guia "think step by step". Para eliminar esforço manual, utiliza o prompt "Let's think step by step" com o LLM
- Encadeamento de prompts: pode ser usado em cenários com múltiplas tarefas ou transformações
- ToT (Tree of Thought): generaliza o prompting chain-of-thought e incentiva a exploração de pensamentos que podem ser usados como etapas intermediárias para resolução geral de problemas com modelos de linguagem
- APE (Automatic Prompt Engineering): framework para automatizar a geração e seleção de instruções
- Prompting CoT multimodal: integra texto e imagens em um framework de duas etapas. A etapa 1 gera fundamentação com base em informações multimodais, e a etapa 2 infere a resposta usando a fundamentação gerada
- Gerenciamento de revisões
- A iteração de templates de prompt segue boas práticas de iteração baseada em código
- Para testar respostas e datasets, os usuários podem modificar instruções e parâmetros do modelo
- Cada iteração de um template de prompt exige revisão de código. Depois de aprovada e mesclada, uma nova revisão do template de prompt é criada
Avaliação de templates de prompt
Para avaliar o desempenho dos templates de prompt, vários componentes trabalham em conjunto:
- Dois mecanismos de avaliação
- Uso de LLM como avaliador. Útil para tarefas em que qualidade subjetiva ou nuances linguísticas são importantes
- Avaliação de desempenho usando código personalizado do usuário. Útil para medir aspectos específicos do desempenho
- Template de prompt de avaliação: template amigável ao usuário que fornece instruções, exemplos simples, métricas, formato de resposta etc. para a avaliação
- Template de prompt real: template usado em produção. É hidratado em tempo de execução e usado para avaliação de desempenho
- Opções de dataset de entrada: dataset dourado rotulado ou dataset derivado do tráfego de produção
- Cada template é avaliado considerando instruções específicas, contexto, modelo relacionado e parâmetros
Casos de uso na Uber
Serviço offline de LLM
O pipeline de geração offline em lote de LLM facilita inferência em lote para gerar respostas de LLM em larga escala:
- Pode ser usado no caso de verificação de nomes de usuário de consumidores
- No MA Studio, basta selecionar e inserir o dataset relevante
- O template de prompt é hidratado dinamicamente com o dataset
Serviço online de LLM
Os templates de prompt incluem placeholders dinâmicos que precisam ser substituídos por valores específicos de runtime:
- Atualmente, com sintaxe de template baseada em Jinja, só há suporte para substituição de tipo string
- Suporte a fan-out entre prompt, template e modelo
- Template: os templates de API incluem a capacidade de formatar payloads expostos pelo modelo de dados genérico na estrutura de API específica de cada fornecedor
- Prompt e modelo: o prompt é fixado a um modelo e template específicos. O serviço busca o prompt e o executa chamando a API de genAI com os parâmetros necessários de modelo e template
Exploração dessas funcionalidades com um caso de uso de resumo:
- Em um cenário em que vários atendentes podem lidar com um ticket de suporte (contact), um novo atendente precisa revisar o ticket para entender o contexto ou pedir ao cliente para explicar novamente o problema
- Isso é resolvido fornecendo um resumo na transferência entre atendentes
Monitoramento
O monitoramento mede o desempenho dos templates de prompt de produção usados em produção:
- Um pipeline diário de monitoramento de desempenho executa avaliação de desempenho sobre o tráfego de produção
- Monitoramento de métricas por iteração de produção do template de prompt, como latência, exatidão e precisão
- O dashboard MES é atualizado diariamente com métricas de monitoramento de desempenho
Conclusão
O toolkit de engenharia de prompts da Uber é um framework abrangente para melhorar a interação e o uso de LLMs em várias etapas de desenvolvimento e produção:
- Dá suporte desde a exploração inicial das capacidades de LLM no Gen AI Playground até a iteração detalhada e a criação de templates de prompt
- A arquitetura do toolkit oferece uma abordagem sistemática para o design de prompts, integrando técnicas avançadas de diretrizes e métodos robustos de avaliação
- O ciclo de vida estruturado, do desenvolvimento dos templates de prompt ao uso em produção e monitoramento, garante que cada template seja rigorosamente testado e otimizado para desempenho
- Há planos futuros de integração com RAG para avaliação online e avaliação, além de RAG para geração offline
Ainda não há comentários.