Adicionar funcionalidades com IA em nossas aplicações é uma tarefa que parece simples, mas também pode ser desafiadora. Com a facilidade de integrar modelos de linguagem de alto nível (LLM) como OpenAI, Antropic ou Google, a complexidade reside na capacidade de controlar o conteúdo gerado por esses modelos.
Padronização de Mensagens
O caso mais comum de integração de IA envolve a padronização de mensagens do usuário, permitindo que a aplicação execute ações específicas. Por exemplo, em um app de agenda, um usuário pode enviar mensagens como 'quero ver minha agenda da semana' ou 'marque uma reunião para 12h amanhã com fulaninho'. A IA é então usada para interpretar essas solicitações e determinar quais ações devem ser executadas.
Prompt Engineering
A primeira abordagem para controlar o formato das mensagens geradas pela IA é o Prompt Engineering. Isso envolve orientar o modelo a gerar respostas em um formato específico, geralmente JSON. Embora isso possa parecer uma solução simples, a orientação não é garantia de que o modelo seguirá o formato desejado. Além disso, a aplicação ainda precisa lidar com possíveis falhas ou respostas fora do formato.
Prefix Filling
Para dar um empurrãozinho no modelo para gerar respostas em um formato específico, o Prefix Filling é uma técnica comum. Aqui, além da mensagem do usuário/sistema, fornecemos um trecho inicial da resposta do modelo. Isso permite que o modelo continue a partir do trecho fornecido, o que pode ser útil para gerar respostas em formatos específicos, como JSON.
Constrained Decoding
O JSON Mode e o Constrained Decoding são técnicas avançadas que garantem que as respostas geradas pelo modelo sejam em formato JSON e sigam um determinado schema. Essas técnicas são especialmente úteis para garantir que as respostas geradas pelo modelo sejam consistentes e previsíveis, facilitando a integração e a otimização da experiência do usuário.
Conclusão
Com a integração de IA em nossas aplicações, controlar o formato das mensagens geradas é uma tarefa crucial. Com as técnicas de Prompt Engineering, Prefix Filling, JSON Mode e Constrained Decoding, podemos facilitar a integração e otimizar a experiência do usuário, garantindo que as respostas geradas pelo modelo sejam precisas e previsíveis.