import type { ModelDescription } from './types'

export const API_BASE = 'http://192.168.178.100:8000/api/mac-mini'

// Aktionen die Internet benötigen
export const INTERNET_REQUIRED_ACTIONS = [
  { action: 'LLM Modelle herunterladen', description: 'Ollama pull benötigt Verbindung zu ollama.com' },
  { action: 'Docker Base Images pullen', description: 'Neue Images von Docker Hub/GHCR' },
  { action: 'npm/pip/go Packages', description: 'Beim ersten Build oder neuen Dependencies' },
  { action: 'Git Pull/Push', description: 'Code-Synchronisation mit Remote-Repository' },
]

export const MODEL_DATABASE: Record<string, ModelDescription> = {
  'llama3.2-vision:11b': {
    name: 'Llama 3.2 Vision 11B', category: 'vision', size: '7.8 GB',
    description: 'Metas multimodales Vision-Modell. Kann Bilder und PDFs analysieren, Text aus Handschrift extrahieren.',
    useCases: ['Handschrifterkennung', 'Bild-Analyse', 'Dokumentenverarbeitung', 'OCR-Aufgaben'],
    recommended: true
  },
  'llama3.2-vision:90b': {
    name: 'Llama 3.2 Vision 90B', category: 'vision', size: '55 GB',
    description: 'Größte Version von Llama Vision. Beste Qualität für komplexe Bildanalyse.',
    useCases: ['Komplexe Handschrift', 'Detaillierte Bild-Analyse', 'Mathematische Formeln'],
  },
  'minicpm-v': {
    name: 'MiniCPM-V', category: 'vision', size: '5.5 GB',
    description: 'Kompaktes Vision-Modell mit gutem Preis-Leistungs-Verhältnis für OCR.',
    useCases: ['Schnelle OCR', 'Einfache Handschrift', 'Tabellen-Erkennung'],
    recommended: true
  },
  'llava:13b': {
    name: 'LLaVA 13B', category: 'vision', size: '8 GB',
    description: 'Large Language-and-Vision Assistant. Gut für Bild-zu-Text Aufgaben.',
    useCases: ['Bildbeschreibung', 'Handschrift', 'Diagramm-Analyse'],
  },
  'llava:34b': {
    name: 'LLaVA 34B', category: 'vision', size: '20 GB',
    description: 'Größere LLaVA-Version mit besserer Genauigkeit.',
    useCases: ['Komplexe Dokumente', 'Wissenschaftliche Notation', 'Detailanalyse'],
  },
  'bakllava': {
    name: 'BakLLaVA', category: 'vision', size: '4.7 GB',
    description: 'Verbesserte LLaVA-Variante mit Mistral-Basis.',
    useCases: ['Schnelle Bildanalyse', 'Handschrift', 'Formular-Verarbeitung'],
  },
  'qwen2.5:14b': {
    name: 'Qwen 2.5 14B', category: 'text', size: '9 GB',
    description: 'Alibabas neuestes Sprachmodell. Exzellent für deutsche Texte und Bewertungsaufgaben.',
    useCases: ['Klausurkorrektur', 'Aufsatzbewertung', 'Feedback-Generierung', 'Grammatikprüfung'],
    recommended: true
  },
  'qwen2.5:7b': {
    name: 'Qwen 2.5 7B', category: 'text', size: '4.7 GB',
    description: 'Kleinere Qwen-Version, schneller bei ähnlicher Qualität.',
    useCases: ['Schnelle Korrektur', 'Einfache Bewertungen', 'Rechtschreibprüfung'],
  },
  'qwen2.5:32b': {
    name: 'Qwen 2.5 32B', category: 'text', size: '19 GB',
    description: 'Große Qwen-Version für komplexe Bewertungsaufgaben.',
    useCases: ['Detaillierte Analyse', 'Abitur-Klausuren', 'Komplexe Argumentation'],
  },
  'llama3.1:8b': {
    name: 'Llama 3.1 8B', category: 'text', size: '4.7 GB',
    description: 'Metas schnelles Textmodell. Gute Balance aus Geschwindigkeit und Qualität.',
    useCases: ['Allgemeine Korrektur', 'Schnelles Feedback', 'Zusammenfassungen'],
  },
  'llama3.1:70b': {
    name: 'Llama 3.1 70B', category: 'text', size: '40 GB',
    description: 'Großes Llama-Modell für anspruchsvolle Aufgaben.',
    useCases: ['Komplexe Klausuren', 'Tiefgehende Analyse', 'Wissenschaftliche Texte'],
  },
  'mistral': {
    name: 'Mistral 7B', category: 'text', size: '4.1 GB',
    description: 'Effizientes europäisches Modell mit guter deutscher Sprachunterstützung.',
    useCases: ['Deutsche Texte', 'Schnelle Verarbeitung', 'Allgemeine Korrektur'],
  },
  'mixtral:8x7b': {
    name: 'Mixtral 8x7B', category: 'text', size: '26 GB',
    description: 'Mixture-of-Experts Modell. Kombiniert Geschwindigkeit mit hoher Qualität.',
    useCases: ['Komplexe Korrektur', 'Multi-Aspekt-Bewertung', 'Wissenschaftliche Arbeiten'],
  },
  'gemma2:9b': {
    name: 'Gemma 2 9B', category: 'text', size: '5.5 GB',
    description: 'Googles kompaktes Modell. Gut für Instruktionen und Bewertungen.',
    useCases: ['Strukturierte Bewertung', 'Feedback', 'Zusammenfassungen'],
  },
  'phi3': {
    name: 'Phi-3', category: 'text', size: '2.3 GB',
    description: 'Microsofts kleines aber leistungsfähiges Modell.',
    useCases: ['Schnelle Checks', 'Einfache Korrektur', 'Ressourcenschonend'],
  },
}

export const RECOMMENDED_MODELS = {
  handwriting: [
    { model: 'llama3.2-vision:11b', reason: 'Beste Balance aus Qualität und Geschwindigkeit für Handschrift' },
    { model: 'minicpm-v', reason: 'Schnell und ressourcenschonend für einfache Handschrift' },
    { model: 'llava:13b', reason: 'Gute Alternative mit bewährter Vision-Architektur' },
  ],
  grading: [
    { model: 'qwen2.5:14b', reason: 'Beste Qualität für deutsche Klausurkorrektur' },
    { model: 'llama3.1:8b', reason: 'Schnell für einfache Bewertungen' },
    { model: 'mistral', reason: 'Europäisches Modell mit guter Sprachqualität' },
  ]
}
