24 pontos por xguru 2024-12-03 | Ainda não há comentários. | Compartilhar no WhatsApp
  • 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.

Ainda não há comentários.