Modelo de Linguagem
Uma biblioteca de código aberto chamada Outlines introduz certeza determinística no processo de geração de saída de Modelos de Linguagem Grande (LLMs) para uma geração mais confiável de saídas estruturadas. Normalmente, ao solicitar a um LLM uma saída estruturada, como objetos JSON, por exemplo, é necessário um mix de criação cuidadosa de prompts com um “toque” de sorte para obter a saída estruturada perfeita. Caso contrário, pode ser difícil fazer com que o modelo obtenha a saída estruturada esperada. Mas isso foi antes de uma nova biblioteca de código aberto chegar ao cenário: Outlines. Esta biblioteca é projetada para prevenir problemas típicos experimentados por LLMs em casos de uso específicos de saída, como alucinações. Mais precisamente, ela introduz um grau de certeza determinística no processo de geração de saída.
Antes de mergulhar completamente no primeiro caso de uso, você pode se perguntar como a Outlines funciona e como ela garante a correção em saídas de modelo estruturadas. No nível de inferência, ela mascara tokens “sintaticamente ilegais” durante a geração em vez de tentar corrigir o texto ruim uma vez gerado. Isso torna virtualmente impossível quebrar as regras subjacentes ao formato de saída específico procurado. Vamos ver um primeiro exemplo em que estamos construindo um pipeline de análise para bilhetes de suporte ao cliente e queremos exatamente uma opção de uma lista limitada e aprovada de opções possíveis. Isso é basicamente como um problema de classificação, e a função generate.choice() nos ajuda a imitar isso, forçando o modelo em mãos a escolher uma das literais ou classes pré-definidas.
Para começar, vamos instalar a Outlines juntamente com os transformadores para carregar LLMs pré-treinados. O código seguinte usa a Outlines.from_transformers() para carregar um modelo pré-treinado auxiliado pelas classes auto do Hugging Face para um modelo e seu tokenizer associado. Mas o melhor de tudo é que ambos estão envoltos em um objeto Outlines que mais tarde ajudará a dizer ao modelo exatamente o que obter. No estágio de inferência, passamos não apenas o prompt do usuário que pede para classificar uma revisão, mas também um objeto Literal que contém as restrições de saída que o modelo deve limitar. O resultado é uma saída estruturada perfeita, sem a necessidade de sorte ou intervenção manual.
Um exemplo interessante é quando definimos um objeto Pydantic que define a estrutura desejada para um objeto JSON que descreve um personagem fictício com um nome, descrição e idade. Em seguida, usamos o modelo Outlines anteriormente embrulhado, passando o objeto personagem para garantir que a saída gerada siga estritamente essa estrutura para o objeto JSON solicitado. O resultado é um objeto JSON perfeitamente estruturado, sem erros ou informações desnecessárias. Isso é especialmente útil quando trabalhamos com APIs ou bancos de dados que exigem saídas estruturadas específicas.
Outro exemplo é quando estamos construindo uma API que exige uma carga útil JSON bem definida para atualizar um banco de dados. Pedir a um LLM padrão para obter essa saída geralmente resulta em caracteres de traço, como vírgulas, que podem causar a falha de um analisador JSON. Com a Outlines, definimos nosso esquema de carga útil JSON novamente com um objeto de classe personalizada baseado em Pydantic. Em seguida, usamos o modelo Outlines para gerar a saída, garantindo que ela siga estritamente o esquema definido. O resultado é uma carga útil JSON perfeita, pronta para ser usada em nossa API.
Como os LLMs são treinados para serem “amantes de conversa” capazes de quebrar a sintaxe ou alucinar para “soar como humanos” em suas conversas conosco, obter saídas estruturadas confiáveis como objetos JSON limpos pode parecer um pouco doloroso. No entanto, com a Outlines, isso se torna muito mais fácil. Essa biblioteca de código aberto introduz certeza determinística no processo de geração de saída de LLMs, permitindo uma geração mais confiável de saídas estruturadas. Neste artigo, mostramos três casos de uso simples, mas úteis, para iniciantes com essa ferramenta interessante.
A Outlines é uma ferramenta poderosa que pode ser usada em uma variedade de casos de uso, desde a geração de saídas estruturadas para APIs e bancos de dados até a criação de conteúdo estruturado para sites e aplicativos. Com sua capacidade de introduzir certeza determinística no processo de geração de saída de LLMs, ela pode ser uma ferramenta valiosa para qualquer um que trabalhe com LLMs. Além disso, a Outlines é de código aberto, o que significa que é gratuita e pode ser usada por qualquer pessoa. Se você está trabalhando com LLMs e precisa de saídas estruturadas confiáveis, a Outlines é definitivamente uma ferramenta que você deve considerar.
Iván Palomares Carrascosa é um líder, escritor, palestrante e consultor em Inteligência Artificial, Aprendizado de Máquina, Aprendizado Profundo e LLMs. Ele treina e orienta outros em como aproveitar a Inteligência Artificial no mundo real. Se você está interessado em aprender mais sobre a Outlines e como usá-la em seus projetos, recomendamos que você leia o artigo original e explore a documentação da biblioteca.
Além disso, se você está interessado em aprender mais sobre Inteligência Artificial, Aprendizado de Máquina e LLMs, recomendamos que você assine o boletim informativo do KDnuggets, que oferece notícias, artigos e recursos sobre esses tópicos. Você também pode baixar o e-book gratuito “KDnuggets Artificial Intelligence Pocket Dictionary” para aprender mais sobre os conceitos e termos-chave da Intel