Ollama (Modèles Locaux)

Exécutez des LLMs localement en toute confidentialité - pas de clés API, pas d'internet, pas de coûts.

Présentation

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

Pourquoi Ollama ?

AvantageDescription
🆓 GratuitPas de coûts API, jamais
🔒 PrivéLes données restent sur votre machine
📴 Hors ligneFonctionne sans internet
🎛️ ContrôleChoisissez n'importe quel modèle, personnalisez les réglages
RapidePas de network latency

Étape 1 : Installer Ollama

macOS

brew install ollama

Linux

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

Windows

Téléchargez depuis ollama.com


Étape 2 : Démarrer le Serveur

ollama serve

Vous devriez voir :

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"

Étape 3 : Télécharger un Modèle

Dans un nouveau terminal :

# Modèle de démarrage recommandé (3B parameters, rapide)
ollama pull llama3.2

# Autres modèles populaires
ollama pull qwen2.5:7b    # Excellent tool calling
ollama pull mistral       # Bon pour le code
ollama pull codellama     # Génération de code
ollama pull gemma2        # Le modèle efficace de Google

Étape 4 : Ajouter à Votre Projet

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

Étape 5 : Utilisation dans le code

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

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // No API key needed!
    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 the agent...
    Ok(())
}

Exemple complet et fonctionnel

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

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    
    // No API key needed!
    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()?;

    // Run interactive session
    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"

Options de configuration

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

let config = OllamaConfig::new("llama3.2")
    .with_base_url("http://localhost:11434")  // Custom server URL
    .with_temperature(0.7)                     // Creativity (0.0-1.0)
    .with_max_tokens(2048);                    // Max response length

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

Modèles recommandés

ModèleTailleRAM NécessaireIdéal pour
llama3.23B4GBRapide, usage général
llama3.2:7b7B8GBMeilleure qualité
qwen2.5:7b7B8GBMeilleur appel d'outil
mistral7B8GBCode et raisonnement
codellama7B8GBGénération de code
gemma29B10GBPerformance équilibrée
llama3.1:70b70B48GBQualité la plus élevée

Choisir un modèle

  • RAM limitée (8GB) ?llama3.2 (3B)
  • Besoin d'appels d'outil ?qwen2.5:7b
  • Écriture de code ?codellama ou mistral
  • Meilleure qualité ?llama3.1:70b (nécessite 48GB+ de RAM)

Appel d'outil avec Ollama

Ollama prend en charge l'appel de fonction avec les modèles compatibles :

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

// qwen2.5 has excellent tool calling support
let model = OllamaModel::new(OllamaConfig::new("qwen2.5:7b"))?;

let weather_tool = Arc::new(FunctionTool::new(
    "get_weather",
    "Get weather for a location",
    |_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("Help users check the weather.")
    .model(Arc::new(model))
    .tool(weather_tool)
    .build()?;

Note : L'appel d'outil utilise le mode non-streaming pour une meilleure fiabilité avec les modèles locaux.


Exemple de sortie

👤 Utilisateur : Bonjour ! Que pouvez-vous faire ?

🤖 Ollama (llama3.2) : Bonjour ! Je suis un assistant IA local fonctionnant sur votre 
machine. Je peux vous aider avec :
- Répondre aux questions
- Écrire et éditer du texte
- Expliquer des concepts
- Aide au codage de base

Tout est entièrement privé - rien ne quitte votre ordinateur !

Dépannage

"Connexion refusée"

# Assurez-vous que Ollama est en cours d'exécution
ollama serve

"Modèle introuvable"

# Téléchargez d'abord le modèle
ollama pull llama3.2

Réponses lentes

  • Utilisez un modèle plus petit (llama3.2 au lieu de llama3.1:70b)
  • Fermez les autres applications pour libérer de la RAM
  • Envisagez l'accélération GPU si disponible

Vérifier les modèles disponibles

ollama list

Exécution des exemples

# Depuis le dossier official_docs_examples
cd official_docs_examples/models/providers_test
cargo run --bin ollama_example

Lié


Précédent: ← Fournisseurs de modèles | Suivant: Modèles locaux (mistral.rs) →