Ollama (Modelos Locais)

Execute LLMs localmente com total privacidade - sem chaves de API, sem internet, sem custos.

Visão Geral

┌─────────────────────────────────────────────────────────────────────┐
│                         Ollama Local Setup                          │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   Your Machine                                                      │
│   ┌─────────────────────────────────────────────────────────────┐  │
│   │                                                             │  │
│   │   ┌──────────────┐      ┌──────────────┐                   │  │
│   │   │  ADK-Rust    │ ───▶ │   Ollama     │                   │  │
│   │   │  Agent       │      │   Server     │                   │  │
│   │   └──────────────┘      └──────┬───────┘                   │  │
│   │                                │                            │  │
│   │                         ┌──────▼───────┐                   │  │
│   │                         │  Local LLM   │                   │  │
│   │                         │  (llama3.2)  │                   │  │
│   │                         └──────────────┘                   │  │
│   │                                                             │  │
│   └─────────────────────────────────────────────────────────────┘  │
│                                                                     │
│   🔒 100% Private - Data never leaves your machine                 │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Por que Ollama?

BenefícioDescrição
🆓 GratuitoSem custos de API, nunca
🔒 PrivadoOs dados permanecem na sua máquina
📴 OfflineFunciona sem internet
🎛️ ControleEscolha qualquer modelo, personalize as configurações
RápidoSem latência de rede

Passo 1: Instalar Ollama

macOS

brew install ollama

Linux

curl -fsSL https://ollama.com/install.sh | sh

Windows

Baixe em ollama.com


Passo 2: Iniciar o Servidor

ollama serve

Você deve ver:

Couldn't find '/Users/you/.ollama/id_ed25519'. Generating new private key.
Your new public key is: ssh-ed25519 AAAA...
time=2024-01-05T12:00:00.000Z level=INFO source=server.go msg="Listening on 127.0.0.1:11434"

Passo 3: Baixar um Modelo

Em um novo terminal:

# Modelo inicial recomendado (3B parâmetros, rápido)
ollama pull llama3.2

# Outros modelos populares
ollama pull qwen2.5:7b    # Excelente para chamada de ferramentas
ollama pull mistral       # Bom para código
ollama pull codellama     # Geração de código
ollama pull gemma2        # Modelo eficiente do Google

Passo 4: Adicionar ao Seu Projeto

[dependencies]
adk-model = { version = "0.2", features = ["ollama"] }

Passo 5: Usar no Código

use adk_model::ollama::{OllamaModel, OllamaConfig};
use adk_agent::LlmAgentBuilder;
use std::sync::Arc;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Nenhuma chave de API necessária!
    let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;

    let agent = LlmAgentBuilder::new("local_assistant")
        .instruction("You are a helpful assistant running locally.")
        .model(Arc::new(model))
        .build()?;

    // Use o Agent...
    Ok(())
}

Exemplo Completo de Funcionamento

use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    
    // Nenhuma chave de API necessária!
    let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;

    let agent = LlmAgentBuilder::new("ollama_assistant")
        .description("Ollama-powered local assistant")
        .instruction("You are a helpful assistant running locally via Ollama. Be concise.")
        .model(Arc::new(model))
        .build()?;

    // Executar sessão interativa
    Launcher::new(Arc::new(agent)).run().await?;
    
    Ok(())
}

Cargo.toml

[dependencies]
adk-rust = { version = "0.2", features = ["cli", "ollama"] }
tokio = { version = "1", features = ["full"] }
dotenvy = "0.15"
anyhow = "1.0"

Opções de Configuração

use adk_model::ollama::{OllamaModel, OllamaConfig};

let config = OllamaConfig::new("llama3.2")
    .with_base_url("http://localhost:11434")  // URL do servidor personalizado
    .with_temperature(0.7)                     // Criatividade (0.0-1.0)
    .with_max_tokens(2048);                    // Comprimento máximo da resposta

let model = OllamaModel::new(config)?;

Modelos Recomendados

ModeloTamanhoRAM NecessáriaMelhor Para
llama3.23B4GBRápido, propósito geral
llama3.2:7b7B8GBMelhor qualidade
qwen2.5:7b7B8GBMelhor uso de ferramentas
mistral7B8GBCódigo e raciocínio
codellama7B8GBGeração de código
gemma29B10GBDesempenho equilibrado
llama3.1:70b70B48GBMais alta qualidade

Escolhendo um Modelo

  • RAM limitada (8GB)?llama3.2 (3B)
  • Precisa de uso de ferramentas?qwen2.5:7b
  • Escrevendo código?codelama ou mistral
  • Melhor qualidade?llama3.1:70b (requer 48GB+ RAM)

Uso de Ferramentas com Ollama

Ollama suporta o uso de funções com modelos compatíveis:

use adk_model::ollama::{OllamaModel, OllamaConfig};
use adk_agent::LlmAgentBuilder;
use adk_tool::FunctionTool;
use std::sync::Arc;

// qwen2.5 tem excelente suporte para uso de ferramentas
let model = OllamaModel::new(OllamaConfig::new("qwen2.5:7b"))?;

let weather_tool = Arc::new(FunctionTool::new(
    "get_weather",
    "Obter o tempo para um local",
    |_ctx, args| async move {
        let location = args.get("location").and_then(|v| v.as_str()).unwrap_or("unknown");
        Ok(serde_json::json!({
            "location": location,
            "temperature": "72°F",
            "condition": "Sunny"
        }))
    },
));

let agent = LlmAgentBuilder::new("weather_assistant")
    .instruction("Ajude os usuários a verificar o tempo.")
    .model(Arc::new(model))
    .tool(weather_tool)
    .build()?;

Nota: O uso de ferramentas utiliza o modo não-streaming para confiabilidade com modelos locais.


Exemplo de Saída

👤 Usuário: Olá! O que você pode fazer?

🤖 Ollama (llama3.2): Olá! Eu sou um assistente de IA local rodando na sua 
máquina. Posso ajudar com:
- Responder perguntas
- Escrever e editar texto
- Explicar conceitos
- Ajuda básica com código

Tudo completamente privado - nada sai do seu computador!

Solução de Problemas

"Conexão recusada"

# Certifique-se de que o Ollama está em execução
ollama serve

"Modelo não encontrado"

# Baixe o modelo primeiro
ollama pull llama3.2

Respostas lentas

  • Use um modelo menor (llama3.2 em vez de llama3.1:70b)
  • Feche outros aplicativos para liberar RAM
  • Considere aceleração por GPU, se disponível

Verificar modelos disponíveis

ollama list

Executando Exemplos

# Da pasta official_docs_examples
cd official_docs_examples/models/providers_test
cargo run --bin ollama_example

Relacionado


Anterior: ← Provedores de Modelo | Próximo: Modelos Locais (mistral.rs) →