6 pontos por xguru 2024-12-03 | Ainda não há comentários. | Compartilhar no WhatsApp
  • No início de 2023, o LinkedIn começou a lançar um portfólio de produtos que utilizam recursos de GenAI
  • Os primeiros produtos de GenAI começaram com o simples modelo de "entrada de prompt, saída de string" e evoluíram para experiências de agentes conversacionais com suporte a memória de contexto
  • Ao construir uma stack tecnológica para aplicações GenAI, a empresa implementou uma abordagem para equilibrar time-to-market e alavancagem de longo prazo

Gênese e evolução

  • Houve a necessidade de construir um framework que oferecesse mecanismos padronizados para tarefas comuns
  • Como a maior parte da stack de serving online do LinkedIn é programada em Java, o início foi com um midtier Java compartilhado
  • À medida que os casos de uso aumentaram, esse midtier se tornou um gargalo de desenvolvimento e operação, levando à divisão em vários serviços midtier Java específicos por caso de uso
  • Engenheiros de IA preferem Python para workflows offline baseados em LLM, prompt engineering e avaliação
  • No curto prazo, decidiu-se manter stacks online e offline fragmentadas, mas no longo prazo optou-se por usar Python também no serving online
  • Foi construído um framework Python para serving online com base no projeto open source LangChain
  • Foi iniciado um projeto, com foco em Python, para habilitar suporte em Python às dependências centrais de infraestrutura
  • Atualmente, o framework de aplicações GenAI é um wrapper fino construído sobre o LangChain

Gerenciamento de prompts

  • Prompt engineering é o principal mecanismo para "programar" LLMs
  • No início, usava-se interpolação manual de strings no código, mas isso era propenso a erros e não escalava
  • Foi introduzido um componente Prompt Source of Truth e padronizado o uso da linguagem de templates Jinja
  • A biblioteca de resolução de prompts foi reescrita de Java para Python
  • Com o surgimento de UIs conversacionais, passou a ser necessária mais estrutura para os papéis de humano e IA na conversa
  • No fim, houve convergência para a OpenAI Chat Completions API

Automação de tarefas por meio de skills

  • A abstração de skills foi estendida para aplicações GenAI e usada como mecanismo de automação de tarefas
  • No início, isso foi construído com código customizado que encapsulava APIs internas e externas do LinkedIn usando esquemas JSON amigáveis para LLM
  • Surgiram problemas como implementação duplicada de skills, mudanças em skills downstream e especificação manual de skills pelos desenvolvedores
  • Foi introduzido o conceito de Skill Inversion, permitindo que o downstream defina as skills e as exponha ao aplicativo chamador
  • Um serviço centralizado de registro de skills, plugins de build e ferramentas dinâmicas do LangChain simplificaram os processos de acesso, desenvolvimento e operação de skills
  • A stack tecnológica está evoluindo para gerar gradualmente abstrações de skills para todas as APIs, permitindo que LLMs interajam de forma fluida

Consciência de contexto e personalização

  • Como LLMs são stateless por padrão, consciência de contexto e personalização são difíceis
  • No início, usava-se Couchbase ou Espresso DB como armazenamento, e cada equipe era responsável por configuração de banco de dados, escrita/leitura etc.
  • Como a janela de contexto dos LLMs é limitada, passaram a ser necessários recursos de busca semântica (com uso de embeddings) e resumo
  • Foi construída uma infraestrutura de memória conversacional aproveitando a stack de mensageria do LinkedIn
  • Foi introduzido o conceito de Experiential Memory, derivado da experiência de interação entre usuário e aplicação
  • Isso foi integrado ao framework de aplicações GenAI para que desenvolvedores possam usar o recurso sem atrito

Inferência de modelos e fine-tuning

  • No início, eram usados apenas LLMs fornecidos pelo serviço Azure OpenAI
  • LLMs como o Llama, ajustados finamente para tarefas específicas do LinkedIn, mostraram qualidade semelhante ou superior à de modelos comerciais
  • A empresa está trabalhando para tornar transparente a experiência de desenvolvimento de aplicações entre modelos externos e internos
  • A camada de inferência expõe a OpenAI Chat Completions API para todos os LLMs
  • Por meio de hooks de configuração no framework de aplicações, é possível alternar facilmente entre modelos on-premises e externos

Migração

  • É importante migrar rapidamente de soluções legadas customizadas para soluções padronizadas
  • Uma equipe enxuta, composta por engenheiros com conhecimento profundo da stack Java e da nova stack, ficou responsável pela migração
  • Foi usada uma abordagem gradual, migrando componentes individuais um a um
  • O processo começou por apps simples e pequenos, avançando para apps complexos e grandes
  • Engenheiros seniores foram pareados com novos desenvolvedores Python para que pudessem aprender Python na prática

Considerações finais

  • A nova stack tecnológica de aplicações GenAI estabelece uma base sólida para adotar o desenvolvimento AI-first e construir apps de GenAI de forma eficiente e responsável
  • Ela terá papel importante para alcançar a visão de oferecer oportunidades econômicas a todos os membros da força de trabalho global
  • Ainda há muitos desafios a serem resolvidos
  • À medida que a fronteira das experiências de produto se desloca de assistentes conversacionais para agentes de IA, novos requisitos de capacidade e operação estão aumentando rapidamente. Mais detalhes sobre isso também serão divulgados posteriormente

Ainda não há comentários.

Ainda não há comentários.