Ollama (Lokale Modelle)

Führen Sie LLMs lokal mit vollständiger Privatsphäre aus – keine API-Schlüssel, kein Internet, keine Kosten.

Übersicht

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

Warum Ollama?

VorteilBeschreibung
🆓 KostenlosKeine API-Kosten, jemals
🔒 PrivatDaten bleiben auf Ihrem Gerät
📴 OfflineFunktioniert ohne Internet
🎛️ KontrolleWählen Sie ein beliebiges Modell, passen Sie Einstellungen an
SchnellKeine Netzwerklatenz

Schritt 1: Ollama installieren

macOS

brew install ollama

Linux

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

Windows

Herunterladen von ollama.com


Schritt 2: Den Server starten

ollama serve

Sie sollten Folgendes sehen:

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"

Schritt 3: Ein Modell herunterladen

In einem neuen Terminal:

# Empfohlenes Startmodell (3B Parameter, schnell)
ollama pull llama3.2

# Andere beliebte Modelle
ollama pull qwen2.5:7b    # Exzellente Werkzeugaufrufe
ollama pull mistral       # Gut für Code
ollama pull codellama     # Codegenerierung
ollama pull gemma2        # Googles effizientes Modell

Schritt 4: Zu Ihrem Projekt hinzufügen

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

Schritt 5: Verwendung im Code

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

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Kein API-Schlüssel erforderlich!
    let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;

    let agent = LlmAgentBuilder::new("local_assistant")
        .instruction("Du bist ein hilfreicher Assistent, der lokal läuft.")
        .model(Arc::new(model))
        .build()?;

    // Verwende den Agenten...
    Ok(())
}

Vollständiges funktionierendes Beispiel

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

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    
    // Kein API-Schlüssel erforderlich!
    let model = OllamaModel::new(OllamaConfig::new("llama3.2"))?;

    let agent = LlmAgentBuilder::new("ollama_assistant")
        .description("Ollama-gestützter lokaler Assistent")
        .instruction("Du bist ein hilfreicher Assistent, der lokal über Ollama läuft. Sei prägnant.")
        .model(Arc::new(model))
        .build()?;

    // Interaktive Sitzung starten
    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"

Konfigurationsoptionen

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

let config = OllamaConfig::new("llama3.2")
    .with_base_url("http://localhost:11434")  // Benutzerdefinierte Server-URL
    .with_temperature(0.7)                     // Kreativität (0.0-1.0)
    .with_max_tokens(2048);                    // Maximale Antwortlänge

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

Empfohlene Modelle

ModelSizeRAM NeededBest For
llama3.23B4GBSchnell, universell einsetzbar
llama3.2:7b7B8GBBessere Qualität
qwen2.5:7b7B8GBBeste Tool-Aufrufe
mistral7B8GBCode und Schlussfolgerung
codellama7B8GBCode-Generierung
gemma29B10GBAusgewogene Leistung
llama3.1:70b70B48GBHöchste Qualität

Modellwahl

  • Begrenzter RAM (8GB)?llama3.2 (3B)
  • Benötigen Sie Tool-Aufrufe?qwen2.5:7b
  • Schreiben Sie Code?codellama oder mistral
  • Beste Qualität?llama3.1:70b (benötigt 48GB+ RAM)

Tool Calling mit Ollama

Ollama unterstützt Funktion-Aufrufe mit kompatiblen Modellen:

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

// qwen2.5 hat exzellente Unterstützung für Tool Calling
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("Helfen Sie Benutzern, das Wetter zu überprüfen.")
    .model(Arc::new(model))
    .tool(weather_tool)
    .build()?;

Hinweis: Tool Calling verwendet den Nicht-Streaming-Modus für Zuverlässigkeit mit lokalen Modellen.


Beispielausgabe

👤 User: Hallo! Was können Sie tun?

🤖 Ollama (llama3.2): Hallo! Ich bin ein lokaler KI-Assistent, der auf Ihrem 
Computer läuft. Ich kann helfen bei:
- Beantwortung von Fragen
- Schreiben und Bearbeiten von Text
- Erklären von Konzepten
- Grundlegende Programmierhilfe

Alles komplett privat – nichts verlässt Ihren Computer!

Fehlerbehebung

"Verbindung verweigert"

# Stellen Sie sicher, dass Ollama läuft
ollama serve

"Modell nicht gefunden"

# Laden Sie das Modell zuerst herunter
ollama pull llama3.2

Langsames Antwortverhalten

  • Verwenden Sie ein kleineres Modell (llama3.2 anstelle von llama3.1:70b)
  • Schließen Sie andere Anwendungen, um RAM freizugeben
  • Ziehen Sie eine GPU-Beschleunigung in Betracht, falls verfügbar

Verfügbare Modelle prüfen

ollama list

Beispiele ausführen

# Aus dem official_docs_examples Ordner
cd official_docs_examples/models/providers_test
cargo run --bin ollama_example

Verwandt


Zurück: ← Model Providers | Weiter: Local Models (mistral.rs) →