Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the hustle domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114
Guia rápido para usar LLM, uma ferramenta de linha de comando e biblioteca Python criada por Simon Willison - Daniel Kossmann

Parte do meu processo de aprendizado em inteligência artificial envolve não apenas usá-la diariamente, mas também explorar maneiras de melhorar meu uso. Isso inclui aprimorar sua facilidade de uso e velocidade, assim como aumentar gradualmente a complexidade das minhas interações.

Isso me levou a ferramentas de linha de comando, como o Fabric, que possui muitos modelos de prompts, mas o fato de eu precisar salvar manualmente cada saída me incomodava. Ao assistir AI tools for software engineers, but without the hype – with Simon Willison (Co-Creator of Django), do Pragmatic Engineer Podcast, descobri o LLM, uma ferramenta de linha de comando e biblioteca Python para interagir com LLM, que automaticamente salva os resultados em um banco de dados SQLite. Isso era exatamente o que eu estava procurando. Demorou um pouco para eu experimentá-lo, mas após assistir a outro vídeo (Language models on the command-line w/ Simon Willison), finalmente decidi testá-lo. Como esse processo não foi isento de dificuldades, decidi criar um guia rápido para que você possa experimentar essa ferramenta mais rápido do que eu.

Instalação e configuração

Instalando o pacote

Estou usando Ubuntu 24.04, mas tirando esta seção, tudo o que está escrito funcionará em outros Sistemas Operacionais, como Mac e Windows.

A maneira mais fácil de instalá-lo é rodando:

pipx install llm
Bash

Configurando a OpenAI

Agora vamos configurar a OpenAI. Se você precisar de ajuda, escrevi anteriormente explicando como obter a chave da API do OpenAI e algumas dicas para manter os custos sob controle.

llm keys set openai
Bash

Definindo um modo padrão

O comando a seguir listará todos os modelos disponíveis.

llm models
Bash

Para definir um modelo padrão, basta rodar

llm models default MODELNAME
Bash

Atualmente estou usando gpt-4o-mini porque é o mais barato.

Para visualizar o modelo atual, rode

llm models default
Bash

Comandos mais utilizados

Abaixo está uma lista dos comandos que mais uso. Se você quiser aprender mais, confira a documentação de uso da LLM.

Prompt único

llm "MESSAGE"
Bash

Ou você pode usá-lo com a saída de outro comando (prompt do sistema):

cat mycode.py | llm -s "Explique este código"
Bash

Continuar a última conversa

llm "MESSAGE" -c
Bash

Para continuar uma conversa que não é a mais recente, primeiro obtenha seu ID usando llm logs e depois digite llm "MESSAGE" --cid ID.

Definir modelo específico para um prompt

llm "MESSAGE" -m MODELNAME
Bash

Modo chat

llm chat
Bash

Para abrir um chat para continuar seu último prompt, use llm chat -c.

Modelos

Documentação oficial para modelos de prompt.

Criar modelo

llm --system 'PROMPTMESSAGE' --save TEMPLATENAME
Bash

Usar modelo

Prompt único:

llm "MESSAGE" -t TEMPLATENAME
Bash

Chat:

llm chat -t TEMPLATENAME
Bash

Dicas para melhorar sua experiência

Use com pbpaste e pbcopy

Isso é muito útil, pois elimina a necessidade de copiar e colar entradas ou saídas ao usar o LLM. Se você não usa Mac, escrevi sobre como usar pbcopy e pbpaste no Linux (Ubuntu ou outros).

Aqui está um exemplo para melhorar um conteúdo que copiei para a minha área de transferência (CTRL+V):

pbpaste | llm -s "melhore o inglês" | pbcopy
Bash

O comando acima não exibe nenhuma saída porque é copiado para a sua área de transferência. No entanto, se você gostaria de visualizar a saída, você pode rodar o seguinte comando:

pbpaste | llm -s "melhore o inglês" | tee >(pbcopy)
Bash

Formatar saída em Markdown

Uma solução é usar a biblioteca Rich do Python para renderizar Markdown com a saída do comando:

llm "MESSAGE" | python3 -m rich.markdown -
Bash

Explore logs com Datasette

Datasette também é uma ferramenta criada por Simon, para explorar e publicar dados. Após instalá-lo, a maneira mais simples de usá-lo é:

datasette $(llm logs path)
Bash

Para verificar o status do seu log, rode llm logs status.

Saiba mais sobre o registro do LLM no SQLite.

Exemplos reais de uso

Melhorar meu inglês escrito

Eu criei um modelo chamado improve-english com o seguinte conteúdo:

system: Correct and English writing, explaining why in markdown format. For the output, separate in sections (##) and for the improved version keep the original format.
improve-english.yaml

Toda vez que preciso usá-lo, abro rapidamente o Guake e rodo:

pbpaste | llm -t improve-english | python3 -m rich.markdown -
Bash

Traduzir minhas postagens de blog

Estou fazendo alguns testes para traduzir o conteúdo do inglês para o português brasileiro, usando:

pbpaste | llm -s "translate this content from English to Brazilian Portuguese without changing it or it's structure, output in markdown" | pbcopy
Bash

Conclusão

Espero que este post tenha te ajudado a configurar rapidamente esta ferramenta e a entender melhor como você pode usá-la para melhorar seu uso diário de IA em geral. Ainda há muito que quero aprender, como usar plugins ou rodar modelos locais, e espero escrever sobre isso no futuro.

O que mais me empolga nesta ferramenta é a capacidade de usar o histórico de logs para construir outros projetos que possam ajudar a aprimorar meu processo de aprendizado.



Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *