Ollama: Interação Básica via CLI

O CLI é o canal direto para conversar com Modelos de Linguagem Grande locais — digite uma pergunta, pressione Enter para obter uma resposta, sem necessidade de código.

💡 Dica: Ao usar ollama run pela primeira vez com um Modelo específico, o Ollama fará o download automático do arquivo do Modelo (2GB-40GB+) do repositório remoto antes de iniciar a Inferência. Execuções subsequentes do mesmo Modelo carregam diretamente dos arquivos locais, sem necessidade de novo download. Recomendamos baixar o Modelo antecipadamente: ollama pull <model>.

📋 Pré-requisitos: Você precisa dominar o seguinte primeiro

1. O Que Você Vai Aprender


2. Uma História Real de Uma Fundadora de SaaS

(1) O Problema: Escrever SQL à Mão É Muito Lento

Alice fundou a plataforma de e-commerce GlobalShop e escreve dezenas de consultas SQL complexas diariamente para analisar dados de negócios. Ir de requisitos de produto a instruções SQL leva uma média de 15 minutos por consulta, com erros frequentes nas condições JOIN. Ela precisa de uma ferramenta para converter rapidamente linguagem natural em SQL.

(2) A Solução: CLI Gera SQL em Segundos

Usando o CLI do Ollama com um System Prompt, Alice insere "consultar contagem de usuários ativos do mês passado" e obtém SQL completo em 3 segundos:

BASH
ollama run llama3.2 "Write a SQL query to count active users last month"

3. Aprofundamento no Comando ollama run

ℹ️ Nota: Os exemplos neste curso focam em demonstrações de funcionalidade real. Concentre-se na sintaxe dos comandos CLI, significado dos parâmetros e uso do modo interativo.

(1) Dois Modos de Execução

Modo Comando Comportamento
Modo single-shot ollama run model "prompt" Sai após a saída
Modo interativo ollama run model Entra em diálogo contínuo
100%
sequenceDiagram
    participant U as Usuário
    participant O as Ollama CLI
    participant S as Servidor Ollama
    U->>O: ollama run llama3.2
    O->>S: Check if model loaded
    S-->>O: Model ready
    O-->>U: >>> prompt
    U->>O: What is machine learning?
    O->>S: POST /api/generate
    S-->>O: Streaming response
    O-->>U: Machine learning is...

▶ Exemplo 1: Modos Single-shot e Interativo

BASH
# Single-shot: ask and exit
ollama run llama3.2 "Explain recursion in one sentence"
# Recursion is a function that calls itself to solve smaller instances of the same problem.

# Interactive: stay in conversation
ollama run llama3.2
>>> What is Python?
Python is a high-level programming language...
>>> Can you give an example?       # Context preserved
Sure! Here's a simple Python example:
    print("Hello, World!")

Saída:

TEXT
I'm a helpful AI assistant running locally on your machine...

(2) Parâmetros Principais do Run

Parâmetro Finalidade Exemplo
--verbose Mostrar tempo e velocidade de Inferência ollama run --verbose llama3.2 "Hello"
--system Definir System Prompt ollama run --system "Reply in JSON" llama3.2 "List colors"
--prompt-template Template de prompt personalizado ollama run --prompt-template "Q: {{.Prompt}}\nA:" llama3.2 "What is AI?"

▶ Exemplo 2: Comando Run com Parâmetros

BASH
# Show performance metrics
ollama run --verbose llama3.2 "Hello"
# ...response...
# total duration:       1.2s
# load duration:        800ms
# prompt eval count:    12 token(s)
# prompt eval speed:    15.0 tokens/s
# eval count:           45 token(s)
# eval speed:           30.0 tokens/s

# Set system prompt inline
ollama run --system "Reply in JSON format only" llama3.2 "List 3 colors"
# {"colors": ["red", "blue", "green"]}

Saída:

TEXT
I'm a helpful AI assistant running locally on your machine...

4. Diálogo de Múltiplas Rodadas com ollama chat

(1) Diferenças entre chat e run

Recurso ollama run ollama chat
Contexto Mantém a rodada anterior por padrão Mensagens explícitas de múltiplas rodadas
Formato de mensagem Texto puro Suporta distinção de papel (user/assistant/system)
Mapeamento de API /api/generate /api/chat
Caso de uso Perguntas rápidas Conversas estruturadas

(2) Referência de Comandos Slash

Comando Função
/clear Limpar contexto da conversa
/help Mostrar todos os comandos
/set parameter Definir parâmetros de Inferência
/set system Definir System Prompt
/info Mostrar informações do Modelo
/exit ou Ctrl+D Sair da conversa

▶ Exemplo 3: Diálogo de Múltiplas Rodadas e Ajuste de Parâmetros

BASH
# Start chat session
ollama chat llama3.2

>>> /set system You are a helpful data analyst
System prompt set.

>>> Analyze this: sales dropped 20% last quarter
The 20% sales drop could indicate several issues...

>>> What visualization would you recommend?
I'd suggest a line chart showing quarterly trends...

>>> /set parameter temperature 0.3
Set parameter 'temperature' to 0.3

>>> Give me the SQL for that analysis
SELECT quarter, revenue FROM sales_data...

>>> /clear
Cleared session context.

>>> /exit

Saída:

TEXT
# Command executed successfully

5. System Prompt e Fundamentos de Prompt Engineering

💡 Dica: System Prompt é a forma mais eficaz de controlar o comportamento do Modelo. Um System Prompt claro transforma um "assistente geral" em uma "ferramenta especializada" — quanto mais específico, melhor. "Você é um especialista em PostgreSQL, retorne apenas SQL" é 10x mais eficaz que "Você é um assistente."

(1) O Papel do System Prompt

O System Prompt define o papel, regras e formato de saída do Modelo antes da conversa começar:

100%
graph TB
    SP[System Prompt<br/>Papel + Regras + Formato] --> C[Contexto da Conversa]
    U[Mensagem do Usuário] --> C
    C --> M[Resposta do Modelo]
    M --> C
Papel Exemplo de System Prompt Efeito
Especialista SQL "You are a SQL expert. Only output valid SQL." Produz apenas instruções SQL
Tradutor "You are a translator. Translate to French." Traduz automaticamente
Atendimento ao Cliente "You are a customer service agent. Be polite and concise." Respostas educadas e concisas
Revisor de Código "You are a code reviewer. Point out bugs and improvements." Foca em problemas de código

▶ Exemplo 4: Cenário de Geração de SQL da Alice

BASH
# Alice's SQL assistant with System Prompt
ollama run --system "You are a PostgreSQL expert. Given a natural language question, output ONLY the SQL query. No explanations, no markdown, just the SQL." llama3.2

>>> Count users who registered in the last 30 days and made at least one purchase
SELECT COUNT(DISTINCT u.id)
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.created_at >= NOW() - INTERVAL '30 days'
  AND o.id IS NOT NULL;

>>> Find the top 5 products by revenue this month
SELECT p.name, SUM(oi.quantity * oi.price) AS revenue
FROM products p
JOIN order_items oi ON p.id = oi.product_id
JOIN orders o ON oi.order_id = o.id
WHERE o.created_at >= DATE_TRUNC('month', CURRENT_DATE)
GROUP BY p.id, p.name
ORDER BY revenue DESC
LIMIT 5;

Saída:

TEXT
I'm a helpful AI assistant running locally on your machine...

6. Integração com Pipeline e Shell

ℹ️ Info: No modo pipeline, ollama run lê a entrada do stdin e aguarda a resposta completa antes de enviar para stdout. Isso significa que o modo pipeline é não-streaming, adequado para processamento em lote em vez de interação em tempo real.

(1) Modo Pipeline do CLI

O CLI do Ollama integra-se perfeitamente com pipelines Unix para fluxos de trabalho automatizados:

Modo Comando Caso de Uso
Entrada stdin echo "prompt" | ollama run model Invocação via script
Redirecionamento de saída ollama run model "prompt" > output.txt Salvar resultados
Pipeline encadeado cat data.txt | ollama run model | jq . Pós-processamento

▶ Exemplo 5: Integração com Script Shell

BASH
# Batch translate product descriptions
echo "Translate to French: Premium wireless headphones" | ollama run llama3.2

# Generate commit messages from git diff
git diff --staged | ollama run llama3.2 "Write a concise git commit message for these changes"

# Summarize a log file
cat /var/log/app.log | tail -100 | ollama run llama3.2 "Summarize the key errors in this log"

Saída:

TEXT
I'm a helpful AI assistant running locally on your machine...

7. Exemplo Abrangente: Script de Assistente SQL da Alice

⚠️ Aviso: SQL gerado por LLM pode conter erros de sintaxe ou falhas lógicas — nunca execute diretamente em um banco de dados de produção. Sempre verifique em um ambiente de teste primeiro, ou adicione verificações de segurança com LIMIT e EXPLAIN antes de executar.

BASH
#!/bin/bash
# ============================================
# Comprehensive: Alice's SQL Assistant
# Natural language to SQL with context awareness
# ============================================

MODEL="llama3.2"
SYSTEM="You are a PostgreSQL expert. Output ONLY valid SQL. No explanations, no markdown fences."

# Interactive mode with preset system prompt
sql_chat() {
    echo "SQL Assistant ready. Type your query in natural language (or 'exit'):"
    ollama run --system "$SYSTEM" "$MODEL"
}

# Single-shot: pipe question, get SQL
sql_ask() {
    local question="$1"
    echo "$question" | ollama run --system "$SYSTEM" "$MODEL"
}

# Batch mode: process questions from file
sql_batch() {
    local input_file="$1"
    local output_file="sql_output_$(date +%Y%m%d_%H%M%S).sql"
    while IFS= read -r question; do
        echo "-- Question: $question" >> "$output_file"
        sql_ask "$question" >> "$output_file"
        echo "" >> "$output_file"
    done < "$input_file"
    echo "Batch complete: $output_file"
}

# Main menu
case "${1:-interactive}" in
    ask)   sql_ask "$2" ;;
    batch) sql_batch "$2" ;;
    *)     sql_chat ;;
esac
💻 Saída:

TEXT
-- Question: Count users registered last month
SELECT COUNT(*) FROM users
WHERE created_at >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '1 month')
  AND created_at < DATE_TRUNC('month', CURRENT_DATE);

-- Question: Top 10 products by sales
SELECT p.name, SUM(oi.quantity) AS total_sold
FROM products p
JOIN order_items oi ON p.id = oi.product_id
GROUP BY p.id, p.name
ORDER BY total_sold DESC
LIMIT 10;

❓ Perguntas Frequentes

P: Devo usar ollama run ou ollama chat? R: Use ollama run para perguntas rápidas de uso único; use ollama chat para conversas contínuas com contexto. Ambos funcionam para desenvolvimento diário — run é mais leve, chat suporta distinção de papel.

P: Conversas no CLI podem salvar histórico? R: O contexto é preservado dentro de uma sessão interativa, mas limpo ao sair. Para persistência, use redirecionamento de pipeline para um arquivo ou gerencie o histórico de conversas via REST API.

P: Como posso tornar a saída mais consistente e estável? R: Defina uma temperatura baixa (0.1-0.3) para saída mais determinística. No CLI, use /set parameter temperature 0.2 para ajustar. Temperatura mais alta (0.7-1.0) produz saída mais aleatória e criativa.

P: Por que não há saída streaming no modo pipeline? R: O modo pipeline (entrada stdin) é não-streaming por padrão, aguardando a resposta completa antes de enviar. Adicionar --verbose mostra o processo de Inferência, mas a saída ainda é o resultado completo.

P: Um System Prompt longo afeta o desempenho? R: Sim. O System Prompt conta para a janela de contexto (padrão 2048 tokens); um excessivamente longo reduz o espaço disponível para conversa. Recomendamos manter abaixo de 200 tokens.

P: Como fazer perguntas em outros idiomas no CLI? R: Basta digitar no seu idioma diretamente. Modelos como llama3.2 e qwen2 suportam múltiplos idiomas. Para a melhor experiência em chinês, recomendamos ollama run qwen2.


📖 Resumo


📝 Exercícios

  1. Básico (Dificuldade ⭐): Use ollama run para um diálogo interativo de pelo menos 3 rodadas, experimentando os comandos /set system e /clear.
  2. Intermediário (Dificuldade ⭐⭐): Crie um "assistente de revisão de código" com um System Prompt, envie um trecho de código para revisão e observe como a configuração de papel afeta a saída.
  3. Avançado (Dificuldade ⭐⭐⭐): Escreva um script Shell que leia uma lista de requisitos de um arquivo, gere SQL em lote e envie para um arquivo, incluindo tratamento de erros e mecanismos de timeout.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%