LMQL: Uma Linguagem de Programação para Interação com Modelos de Linguagem
LMQL é uma linguagem de programação projetada especificamente para interagir com Modelos de Linguagem de Grande Escala (LLMs). Ela permite a criação de prompts robustos e modulares, utilizando tipos, templates, restrições e um tempo de execução otimizador.
Principais Características
- Tipos e Templates: LMQL suporta tipos e templates, garantindo que os prompts sejam estruturados e consistentes.
- Restrições: É possível aplicar restrições ao gerar respostas, como limitar o comprimento da resposta ou especificar pontos de parada.
- Otimização de Tempo de Execução: O tempo de execução de LMQL é otimizado para garantir que os prompts sejam processados de maneira eficiente.
Exemplo de Uso
Um exemplo básico de uso de LMQL pode ser visto no código abaixo, que pergunta ao modelo o significado da vida, do universo e de tudo mais:
@lmql.query
def meaning_of_life():
'''lmql
# strings de nível superior são prompts
"Q: Qual é a resposta para a vida, o universo e tudo mais?"
# geração via variáveis (com restrições)
"A: [RESPOSTA]" onde \
len(RESPOSTA) < 120 e STOPS_AT(RESPOSTA, ".")
# resultados são diretamente acessíveis
print("LLM retornou", RESPOSTA)
# use variáveis tipadas para garantir
# formato de saída
"A resposta é [NUM: int]"
# programas de consulta são apenas funções
return NUM
'''
# então, do Python, você pode apenas fazer isso
meaning_of_life()
# 42
Benefícios
- Portabilidade: LMQL permite que seu código LLM seja portátil entre vários backends com uma única linha de código.
- Modularidade: Com suporte a consultas aninhadas, LMQL permite a reutilização de componentes de prompt.
- Facilidade de Uso: A construção e geração de prompts são implementadas via fluxo de controle expressivo em Python e interpolação de strings.
LMQL é uma ferramenta poderosa para desenvolvedores que buscam interagir de maneira eficiente e robusta com LLMs, oferecendo uma abordagem inovadora para a criação de prompts e geração de respostas.