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:

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