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?
| Vorteil | Beschreibung |
|---|---|
| 🆓 Kostenlos | Keine API-Kosten, jemals |
| 🔒 Privat | Daten bleiben auf Ihrem Gerät |
| 📴 Offline | Funktioniert ohne Internet |
| 🎛️ Kontrolle | Wählen Sie ein beliebiges Modell, passen Sie Einstellungen an |
| ⚡ Schnell | Keine 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
| Model | Size | RAM Needed | Best For |
|---|---|---|---|
llama3.2 | 3B | 4GB | Schnell, universell einsetzbar |
llama3.2:7b | 7B | 8GB | Bessere Qualität |
qwen2.5:7b | 7B | 8GB | Beste Tool-Aufrufe |
mistral | 7B | 8GB | Code und Schlussfolgerung |
codellama | 7B | 8GB | Code-Generierung |
gemma2 | 9B | 10GB | Ausgewogene Leistung |
llama3.1:70b | 70B | 48GB | Höchste Qualität |
Modellwahl
- Begrenzter RAM (8GB)? →
llama3.2(3B) - Benötigen Sie Tool-Aufrufe? →
qwen2.5:7b - Schreiben Sie Code? →
codellamaodermistral - 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.2anstelle vonllama3.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
- Model Providers - Cloud-basierte LLM-Anbieter
- Local Models (mistral.rs) - Native Rust-Inferenz
Zurück: ← Model Providers | Weiter: Local Models (mistral.rs) →