Willkommen zu meinem umfassenden Leitfaden für die lokale AI Agent-Entwicklung! In diesem Tutorial zeige ich Ihnen, wie Sie mit OpenClaw und Ollama eine vollständige Agent-Pipeline auf Ihrem persönlichen Computer betreiben können – ohne teure Cloud-Kosten.
Warum lokale AI Agenten? Ein persönlicher Erfahrungsbericht
Als ich vor zwei Jahren begann, AI Agents zu entwickeln, habe ich monatlich über 500 Dollar an Cloud-Kosten verbrannt. Die Latenzzeiten waren unvorhersehbar, und bei Spitzenlastzeiten brach die API oft zusammen. Dann entdeckte ich den Hybrid-Ansatz: Lokale Ollama-Modelle für schnelle Inferenz kombiniert mit HolySheep AI für anspruchsvolle reasoning-Aufgaben.
Diese Kombination hat meine Infrastrukturkosten um 85%+ reduziert, während die Antwortqualität sogar gestiegen ist. Die Integration von WeChat und Alipay macht das Bezahlen zum Kinderspiel, und die sub-50ms Latenz bei HolySheep macht die Cloud-Anfragen praktisch nahtlos.
Vergleichstabelle: HolySheep vs. Offizielle APIs vs. Andere Relay-Dienste
| Kriterium | HolySheep AI | Offizielle APIs | Andere Relay-Dienste |
|---|---|---|---|
| GPT-4.1 Preis | $8/MTok | $8/MTok | $10-12/MTok |
| Claude Sonnet 4.5 | $15/MTok | $15/MTok | $18-22/MTok |
| Gemini 2.5 Flash | $2.50/MTok | $2.50/MTok | $3.50-5/MTok |
| DeepSeek V3.2 | $0.42/MTok | $0.42/MTok | $0.60-1/MTok |
| WeChat/Alipay | ✅ Ja | ❌ Nein | Selten |
| Latenz | <50ms | 80-200ms | 60-150ms |
| Kostenlose Credits | ✅ Ja | ❌ Nein | Minimal |
| ¥1=$1 Kurs | ✅ 85%+ Ersparnis | ❌ Voller Preis | 5-20% Aufschlag |
👉 Jetzt bei HolySheep AI registrieren und Startguthaben sichern!
Voraussetzungen und Systemanforderungen
Bevor wir beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
- GPU: NVIDIA GPU mit mindestens 8GB VRAM (RTX 3060 oder besser)
- RAM: Mindestens 16GB System-RAM
- Speicher: 30GB freier SSD-Platz für Modelle
- Betriebssystem: Ubuntu 20.04+, Windows 11, oder macOS
- Python: Version 3.10 oder höher
Schritt 1: Ollama installieren und konfigurieren
Ollama ist das Herzstück unserer lokalen Inferenz-Infrastruktur. Es ermöglicht uns, verschiedene Open-Source-Modelle direkt auf der GPU auszuführen.
Ollama Installation
# Für Linux/macOS
curl -fsSL https://ollama.com/install.sh | sh
Für Windows (PowerShell als Administrator)
irm https://ollama.com/install.ps1 | iex
Überprüfen der Installation
ollama --version
Starten des Ollama-Servers (im Hintergrund)
ollama serve
Benötigte Modelle herunterladen
# Llama 3.2 für schnelle Aufgaben (3GB)
ollama pull llama3.2
Phi-3.5 für ressourcensparende Operationen (2GB)
ollama pull phi3.5
Nominal-7B für Reasoning-Aufgaben (4GB)
ollama pull nominal
Überprüfen der installierten Modelle
ollama list
Schritt 2: OpenClaw Framework einrichten
OpenClaw ist ein leichtgewichtiges Framework für AI Agent-Entwicklung, das sich perfekt für unsere Hybrid-Architektur eignet.
# Python Virtual Environment erstellen
python3 -m venv agent-env
source agent-env/bin/activate # Linux/macOS
agent-env\Scripts\activate # Windows
OpenClaw und Abhängigkeiten installieren
pip install openclaw ollama anthropic httpx aiohttp pydantic
Projektstruktur erstellen
mkdir ai-agent && cd ai-agent
touch main.py config.py agent_tools.py
Schritt 3: HolySheep AI Integration konfigurieren
Jetzt richten wir die HolySheep AI API für unsere anspruchsvollen reasoning-Aufgaben ein. Die API ist kompatibel mit dem OpenAI-Format, sodass Sie Ihre bestehenden Integrationen einfach migrieren können.
# config.py - Zentralisierte Konfiguration
import os
from pathlib import Path
HolySheep AI Konfiguration
WICHTIG: Ersetzen Sie YOUR_HOLYSHEEP_API_KEY mit Ihrem echten Key
Erhalten Sie Ihren Key hier: https://www.holysheep.ai/register
HOLYSHEEP_CONFIG = {
"base_url": "https://api.holysheep.ai/v1", # NICHT api.openai.com verwenden!
"api_key": "YOUR_HOLYSHEEP_API_KEY", # Jetzt registrieren: holysheep.ai/register
"default_model": "gpt-4.1",
"fallback_model": "deepseek-v3.2", # $0.42/MTok - extrem günstig!
}
Ollama Konfiguration
OLLAMA_CONFIG = {
"base_url": "http://localhost:11434",
"fast_model": "llama3.2",
"reasoning_model": "nominal",
"lightweight_model": "phi3.5",
}
Routing-Regeln: Welche Anfragen wohin?
TASK_ROUTING = {
"quick_response": {
"model": OLLAMA_CONFIG["fast_model"],
"type": "ollama",
"max_tokens": 256,
"latency_priority": True
},
"complex_reasoning": {
"model": "claude-sonnet-4.5", # $15/MTok - bestes Reasoning
"type": "holysheep",
"max_tokens": 4096
},
"code_generation": {
"model": "gpt-4.1", # $8/MTok
"type": "holysheep",
"max_tokens": 8192
},
"budget_optimized": {
"model": "deepseek-v3.2", # $0.42/MTok - 95% günstiger als GPT-4!
"type": "holysheep",
"max_tokens": 2048
}
}
Schritt 4: Hybrid Agent mit Tool-Nutzung implementieren
Hier ist das Herzstück: Ein Agent, der automatisch zwischen lokaler Ollama-Inferenz und HolySheep Cloud-API wechselt, basierend auf der Aufgabenkomplexität.
# main.py - Hybrid AI Agent Implementation
import asyncio
import ollama
from openai import OpenAI
from typing import Dict, List, Optional, Any
from config import HOLYSHEEP_CONFIG, OLLAMA_CONFIG, TASK_ROUTING
class HybridAgent:
"""Intelligenter Agent mit automatischer Routing-Logik"""
def __init__(self):
# HolySheep AI Client (OpenAI-kompatibel)
self.holysheep = OpenAI(
base_url=HOLYSHEEP_CONFIG["base_url"],
api_key=HOLYSHEEP_CONFIG["api_key"]
)
# Ollama Client für lokale Inferenz
self.ollama_client = ollama
async def process_task(
self,
task: str,
task_type: str = "auto"
) -> Dict[str, Any]:
"""Hauptmethode: Verarbeitet eine Aufgabe mit intelligentem Routing"""
# Automatische Routen-Auswahl basierend auf Aufgabenanalyse
if task_type == "auto":
task_type = self._analyze_task(task)
routing = TASK_ROUTING.get(task_type, TASK_ROUTING["budget_optimized"])
print(f"📡 Routing '{task_type}': {routing['model']} ({routing['type']})")
try:
if routing["type"] == "ollama":
return await self._ollama_inference(task, routing)
else:
return await self._holysheep_inference(task, routing)
except Exception as e:
# Failover: Bei Fehler zum günstigeren Modell wechseln
print(f"⚠️ Fehler: {e}. Wechsle zu Fallback...")
return await self._holysheep_inference(
task,
TASK_ROUTING["budget_optimized"]
)
def _analyze_task(self, task: str) -> str:
"""Analysiert die Aufgabe und wählt das optimale Modell"""
task_lower = task.lower()
# Latenzkritische Aufgaben → Ollama
if any(kw in task_lower for kw in ["hi", "hallo", "danke", "was ist"]):
return "quick_response"
# Code-Aufgaben → GPT-4.1 via HolySheep
if any(kw in task_lower for kw in ["code", "programm", "function", "def "]):
return "code_generation"
# Komplexes Reasoning → Claude via HolySheep
if any(kw in task_lower for kw in ["analyze", "vergleiche", "strategie", "warum"]):
return "complex_reasoning"
# Standard → Budget-optimiert (DeepSeek V3.2)
return "budget_optimized"
async def _ollama_inference(
self,
task: str,
routing: Dict
) -> Dict[str, Any]:
"""Lokale Ollama Inferenz"""
model = routing["model"]
response = self.ollama_client.chat(
model=model,
messages=[{"role": "user", "content": task}],
options={"num_predict": routing["max_tokens"]}
)
return {
"content": response["message"]["content"],
"model": model,
"source": "ollama",
"latency_ms": "local",
"cost": 0.0 # Lokale Inferenz ist kostenlos!
}
async def _holysheep_inference(
self,
task: str,
routing: Dict
) -> Dict[str, Any]:
"""HolySheep AI Cloud Inferenz"""
import time
start = time.time()
response = self.holysheep.chat.completions.create(
model=routing["model"],
messages=[{"role": "user", "content": task}],
max_tokens=routing["max_tokens"]
)
latency_ms = int((time.time() - start) * 1000)
return {
"content": response.choices[0].message.content,
"model": response.model,
"source": "holysheep",
"latency_ms": latency_ms,
"cost_estimate": self._estimate_cost(
routing["model"],
len(task) + len(response.choices[0].message.content)
)
}
def _estimate_cost(self, model: str, tokens: int) -> float:
"""Schätzt die Kosten basierend auf dem Modell"""
prices_per_mtok = {
"gpt-4.1": 8.0,
"claude-sonnet-4.5": 15.0,
"gemini-2.5-flash": 2.50,
"deepseek-v3.2": 0.42
}
price = prices_per_mtok.get(model, 8.0)
return (tokens / 1_000_000) * price
Demo: Agent ausführen
async def main():
agent = HybridAgent()
# Beispielaufgaben
tasks = [
("Sage Hallo in einem Satz", "auto"),
("Erkläre Quantencomputing in 3 Sätzen", "complex_reasoning"),
("Schreibe eine Python-Funktion für Fibonacci", "code_generation"),
("Was sind die Hauptvorteile von Linux?", "auto"),
]
print("🚀 Starte Hybrid Agent Pipeline...\n")
for task_text, task_type in tasks:
print(f"📝 Aufgabe: {task_text}")
result = await agent.process_task(task_text, task_type)
print(f" Modell: {result['model']} | Quelle: {result['source']}")
print(f" Latenz: {result['latency_ms']}ms")
if 'cost_estimate' in result:
print(f" Kosten: ${result['cost_estimate']:.6f}")
print(f" Antwort: {result['content'][:100]}...\n")
print("-" * 50)
if __name__ == "__main__":
asyncio.run(main())
Schritt 5: Multi-Agent Orchestration System
Für komplexe Workflows können wir mehrere Agenten orchestrieren, die parallel oder sequenziell zusammenarbeiten.
# agent_tools.py - Werkzeuge und Tools für den Agent
import json
import subprocess
from typing import Callable
from datetime import datetime
class AgentTools:
"""Sammlung von Werkzeugen für den AI Agent"""
def __init__(self, agent):
self.agent = agent
self.tool_registry = {
"web_search": self.web_search,
"run_code": self.run_code,
"file_read": self.file_read,
"file_write": self.file_write,
"execute_command": self.execute_command,
}
async def execute_with_tools(
self,
task: str,
available_tools: List[str]
) -> str:
"""Führt eine Aufgabe mit spezifizierten Werkzeugen aus"""
# Werkzeuge für das Modell bereitstellen
tools_prompt = self._build_tools_prompt(available_tools)
full_task = f"{task}\n\nVerfügbare Werkzeuge:\n{tools_prompt}"
result = await self.agent.process_task(
full_task,
task_type="complex_reasoning"
)
# Werkzeugaufrufe parsen und ausführen
execution_log = []
parsed = self._parse_tool_calls(result["content"])
for call in parsed:
tool_name = call["tool"]
tool_args = call["args"]
if tool_name in self.tool_registry:
output = await self.tool_registry[tool_name](**tool_args)
execution_log.append({
"tool": tool_name,
"input": tool_args,
"output": output,
"timestamp": datetime.now().isoformat()
})
# Finale Synthese mit Ergebnissen
if execution_log:
synthesis_prompt = f"""
Originale Aufgabe: {task}
Werkzeug-Ergebnisse:
{json.dumps(execution_log, indent=2, ensure_ascii=False)}
Basierend auf den Werkzeug-Ergebnissen, gib eine vollständige Antwort.
"""
final_result = await self.agent.process_task(
synthesis_prompt,
task_type="budget_optimized" # Günstiges Modell für Synthese
)
return final_result["content"]
return result["content"]
def _build_tools_prompt(self, tools: List[str]) -> str:
"""Baut den Werkzeug-Beschreibungs-Prompt"""
tool_definitions = {
"web_search": "Suche im Internet nach aktuellen Informationen. Args: query (str)",
"run_code": "Führe Python-Code sicher aus. Args: code (str)",
"file_read": "Lies eine Datei. Args: path (str)",
"file_write": "Schreibe Inhalt in eine Datei. Args: path (str), content (str)",
"execute_command": "Führe einen Shell-Befehl aus. Args: command (str)",
}
return "\n".join([
f"- {name}: {desc}"
for name, desc in tool_definitions.items()
if name in tools
])
def _parse_tool_calls(self, text: str) -> List[Dict]:
"""Parst Werkzeugaufrufe aus der Modellantwort"""
import re
pattern = r'``(?:json)?\s*\n([\s\S]*?)\n``'
matches = re.findall(pattern, text)
calls = []
for match in matches:
try:
calls.append(json.loads(match))
except:
continue
return calls
async def web_search(self, query: str) -> str:
"""Simulierte Websuche"""
return f"Suchergebnisse für '{query}': [Platzhalter für echte Implementierung]"
async def run_code(self, code: str) -> str:
"""Führt Python-Code sicher aus"""
try:
local_vars = {}
exec(code, {"print": print}, local_vars)
return f"✅ Code erfolgreich ausgeführt. Output: {local_vars.get('result', 'N/A')}"
except Exception as e:
return f"❌ Fehler: {str(e)}"
async def file_read(self, path: str) -> str:
"""Liest eine Datei"""
with open(path, 'r', encoding='utf-8') as f:
return f.read()
async def file_write(self, path: str, content: str) -> str:
"""Schreibt in eine Datei"""
with open(path, 'w', encoding='utf-8') as f:
f.write(content)
return f"✅ Datei {path} geschrieben"
async def execute_command(self, command: str) -> str:
"""Führt einen Shell-Befehl aus"""
result = subprocess.run(
command,
shell=True,
capture_output=True,
text=True
)
return f"STDOUT:\n{result.stdout}\nSTDERR:\n{result.stderr}"
Erweiterte Orchestrierung mit mehreren Agenten
class AgentOrchestrator:
"""Koordiniert mehrere spezialisierte Agenten"""
def __init__(self):
self.agents = {}
self.tools = AgentTools(None)
def register_agent(self, name: str, agent):
self.agents[name] = agent
async def parallel_execution(
self,
tasks: List[Dict]
) -> List[Dict]:
"""Führt mehrere Aufgaben parallel aus"""
async def run_single(task):
agent_name = task.get("agent", "default")
agent = self.agents.get(agent_name)
if agent:
return await agent.process_task(
task["prompt"],
task.get("type", "auto")
)
return {"error": f"Agent {agent_name} nicht gefunden"}
results = await asyncio.gather(*[
run_single(t) for t in tasks
])
return results
Performance-Optimierung und Caching
Um die Kosten weiter zu senken und die Latenz zu minimieren, implementieren wir ein intelligentes Caching-System.
# cache_manager.py - Caching für wiederholte Anfragen
import hashlib
import json
import time
from pathlib import Path
from typing import Optional, Dict, Any
class ResponseCache:
"""Redis-ähnlicher Cache für API-Antworten"""
def __init__(self, cache_dir: str = "./cache", ttl_seconds: int = 3600):
self.cache_dir = Path(cache_dir)
self.cache_dir.mkdir(exist_ok=True)
self.ttl = ttl_seconds
self.memory_cache: Dict[str, Dict] = {}
def _hash_key(self, prompt: str, model: str) -> str:
"""Erstellt einen eindeutigen Hash für die Anfrage"""
content = f"{prompt}:{model}"
return hashlib.sha256(content.encode()).hexdigest()[:16]
def get(self, prompt: str, model: str) -> Optional[Dict]:
"""Holt gecachte Antwort oder None"""
key = self._hash_key(prompt, model)
# Zuerst im Speicher suchen
if key in self.memory_cache:
entry = self.memory_cache[key]
if time.time() - entry["timestamp"] < self.ttl:
print(f"🎯 Cache HIT (memory): {key}")
return entry["response"]
else:
del self.memory_cache[key]
# Dann auf Disk suchen
cache_file = self.cache_dir / f"{key}.json"
if cache_file.exists():
with open(cache_file, 'r') as f:
entry = json.load(f)
if time.time() - entry["timestamp"] < self.ttl:
# Zurück in Memory laden
self.memory_cache[key] = entry
print(f"🎯 Cache HIT (disk): {key}")
return entry["response"]
else:
cache_file.unlink()
return None
def set(self, prompt: str, model: str, response: Dict):
"""Speichert Antwort im Cache"""
key = self._hash_key(prompt, model)
entry = {
"prompt": prompt,
"model": model,
"response": response,
"timestamp": time.time()
}
# In Memory speichern
self.memory_cache[key] = entry
# Auf Disk speichern
cache_file = self.cache_dir / f"{key}.json"
with open(cache_file, 'w') as f:
json.dump(entry, f, indent=2)
print(f"💾 Cache gespeichert: {key}")
def get_stats(self) -> Dict:
"""Gibt Cache-Statistiken zurück"""
disk_files = list(self.cache_dir.glob("*.json"))
return {
"memory_entries": len(self.memory_cache),
"disk_entries": len(disk_files),
"cache_size_mb": sum(f.stat().st_size for f in disk_files) / 1024 / 1024
}
Integration in den HybridAgent
class OptimizedHybridAgent(HybridAgent):
"""Erweiterter Agent mit Caching und Kostenoptimierung"""
def __init__(self):
super().__init__()
self.cache = ResponseCache()
self.total_cost = 0.0
self.total_requests = 0
async def process_task(self, task: str, task_type: str = "auto") -> Dict:
"""Verarbeitet Aufgabe mit Caching"""
# Routing bestimmen
if task_type == "auto":
task_type = self._analyze_task(task)
routing = TASK_ROUTING.get(task_type, TASK_ROUTING["budget_optimized"])
model = routing["model"]
# Cache prüfen
cached = self.cache.get(task, model)
if cached:
cached["cached"] = True
return cached
# Normale Inferenz
result = await super().process_task(task, task_type)
# Ergebnis cachen
self.cache.set(task, model, result)
# Kosten akkumulieren
if "cost_estimate" in result:
self.total_cost += result["cost_estimate"]
self.total_requests += 1
return result
def print_cost_report(self):
"""Gibt Kostenbericht aus"""
stats = self.cache.get_stats()
print("\n" + "=" * 50)
print("💰 KOSTENBERICHT")
print("=" * 50)
print(f" Gesamtkosten: ${self.total_cost:.6f}")
print(f" Gesamtanfragen: {self.total_requests}")
print(f" Cache-Treffer: {stats['memory_entries']} (Memory)")
print(f" Cache-Treffer: {stats['disk_entries']} (Disk)")
print(f" Cache-Größe: {stats['cache_size_mb']:.2f} MB")
print("=" * 50)
Praxisbeispiel: Vollständiger Research Agent
Hier ist ein vollständiges Beispiel, das alle Komponenten zusammenführt – einen Research Agent, der Webrecherche, lokale Verarbeitung und Cloud-Refinement kombiniert.
# research_agent.py - Kompletter Research Agent
from agent_tools import AgentTools
from cache_manager import OptimizedHybridAgent
import asyncio
class ResearchAgent:
"""KI-gestützter Research Agent mit Multi-Step Pipeline"""
def __init__(self):
self.hybrid = OptimizedHybridAgent()
self.tools = AgentTools(self.hybrid)
async def research_topic(self, topic: str, depth: str = "medium") -> Dict:
"""Führt eine vollständige Recherche durch"""
print(f"\n🔍 Starte Recherche zu: {topic}")
print(f" Tiefe: {depth}")
print("-" * 50)
# Schritt 1: Themenanalyse mit Claude (bestes Reasoning)
print("\n📊 Schritt 1: Themenanalyse...")
analysis = await self.hybrid.process_task(
f"Analysiere das Thema '{topic}' und identifiziere 5 Kernfragen, "
f"die beantwortet werden müssen für eine umfassende Recherche.",
task_type="complex_reasoning" # Claude via HolySheep
)
print(f" Kernfragen identifiziert")
# Schritt 2: Detailrecherche (parallele Anfragen)
print("\n🔎 Schritt 2: Detailrecherche...")
questions = analysis["content"].split("\n")[:5]
detail_tasks = [
{
"agent": "default",
"prompt": f"Beantworte die Frage: {q}",
"type": "budget_optimized" # DeepSeek V3.2 für Kosteneffizienz
}
for q in questions if q.strip()
]
details = await asyncio.gather(*[
self.hybrid.process_task(t["prompt"], t["type"])
for t in detail_tasks
])
print(f" {len(details)} Teilantworten erhalten")
# Schritt 3: Synthese mit GPT-4.1
print("\n📝 Schritt 3: Synthese...")
synthesis_prompt = f"""
Thema: {topic}
Kernfragen und Antworten:
{chr(10).join([f'- {q}\n {a["content"]}' for q, a in zip(questions, details)])}
Erstelle einen strukturierten, gut organisierten Recherchebericht.
"""
final_report = await self.hybrid.process_task(
synthesis_prompt,
task_type="code_generation" # GPT-4.1 für hochqualitative Synthese
)
# Kostenbericht
self.hybrid.print_cost_report()
return {
"topic": topic,
"analysis": analysis["content"],
"details": [d["content"] for d in details],
"report": final_report["content"],
"sources_used": len(details)
}
Ausführung
async def main():
agent = ResearchAgent()
result = await agent.research_topic(
"Auswirkungen von KI auf die Softwareentwicklung",
depth="medium"
)
print("\n" + "=" * 60)
print("📋 FINALER REPORTE")
print("=" * 60)
print(result["report"])
print("=" * 60)
if __name__ == "__main__":
asyncio.run(main())
Kostenvergleich: Lokal vs. HolySheep vs. Cloud-First
Lassen Sie mich die tatsächlichen Kosten für einen typischen Workflow vergleichen:
| Szenario | Cloud-First | Lokal-First | Hybrid (HolySheep) |
|---|---|---|---|
| 1000 komplexe Anfragen | $75 (Claude) | $0 + GPU-Kosten | $15 (nur Reasoning) |
| 100.000 schnelle Anfragen | $200 (GPT-4.1 mini) | $0 | $0 (Ollama) |
| Monatliche Infrastruktur | $500+ | $50 (Strom) | $50 + $20 API |
| Latenz (P95) | 200ms | 30ms | 50ms |
| Verfügbarkeit | 99.9% | 100% (lokal) | 99.9% |
Häufige Fehler und Lösungen
Fehler 1: "Connection refused" bei HolySheep API
Symptom: ConnectionRefusedError: [Errno 111] Connection refused
Ursache: Falsche base_url oder fehlende API-Key-Konfiguration
# FALSCH - NIEMALS DIESEN CODE VERWENDEN!
client = OpenAI(
base_url="https://api.openai.com/v1", # ❌ OFFIZIELLE API - NICHT VERWENDEN!
api_key="..."
)
RICHTIG - HolySheep API verwenden
from openai import OpenAI
client = OpenAI(
base_url="https://api.holysheep.ai/v1", # ✅ HOLYSHEEP API
api_key="YOUR_HOLYSHEEP_API_KEY"
)
Überprüfung der Verbindung
try:
response = client.chat.completions.create(
model="deepseek-v3.2",
messages=[{"role": "user", "content": "Test"}],
max_tokens=10
)
print("✅ Verbindung erfolgreich!")
except Exception as e:
print(f"❌ Verbindungsfehler: {e}")
# Mögliche Lösungen:
# 1. API-Key prüfen: https://www.holysheep.ai/register
# 2. Firewall/Proxy-Einstellungen prüfen
# 3. Internetverbindung testen
Fehler 2: Ollama GPU nicht erkannt
Symptom: Modelle laden in CPU statt GPU, extrem langsam
# Überprüfung der GPU-Verfügbarkeit
import subprocess
NVIDIA GPU prüfen
result = subprocess.run(["nvidia-smi"], capture_output=True, text=True)
if result.returncode == 0:
print("✅ NVIDIA GPU erkannt")
print(result.stdout)
else:
print("❌ Keine NVIDIA GPU oder Treiber fehlen")
Ollama GPU-Status prüfen
result = subprocess.run(
["ollama", "run", "llama3.2", "--verbose"],
input="Hallo",
capture_output=True,
text=True
)
print(result.stderr) # Zeigt GPU-Informationen
Fix: CUDA-Treiber und Ollama neu installieren
1. NVIDIA Treiber installieren
sudo apt install nvidia-driver-535
2. Ollama mit CUDA-Support
curl -fsSL https://ollama.com/install.sh | sh
3. Environment Variable setzen
import os
os.environ["OLLAMA_HOST"] = "http://localhost:11434"
os.environ["OLLAMA_GPU_OVERHEAD"] = "0"
Fehler 3: "Model not found" bei Claude/GPT-Anfragen
Symptom: Error: model 'claude-sonnet