Spaces:
Running
Running
| ts | |
| import { AIModelInfo, AIModel, AICategory } from '@/types' | |
| /** | |
| * Maximum character limits for different purposes | |
| */ | |
| export const CHARACTER_LIMITS = { | |
| INPUT: 8000, | |
| WARNING: 2000, | |
| MINIMUM: 20, | |
| TOKEN_ESTIMATE_FACTOR: 4 // Approximate characters per token | |
| } as const | |
| /** | |
| * Animation durations in milliseconds | |
| */ | |
| export const ANIMATION_DURATIONS = { | |
| FAST: 150, | |
| NORMAL: 300, | |
| SLOW: 500, | |
| COPY_FEEDBACK: 2000 | |
| } as const | |
| /** | |
| * Available AI models with their metadata | |
| */ | |
| export const AI_MODELS: AIModelInfo[] = [ | |
| // LLM Models | |
| { | |
| id: 'gpt-5', | |
| name: 'GPT-5', | |
| category: 'llm', | |
| description: 'Neueste Version von OpenAIs GPT-Modell', | |
| maxTokens: 128000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'gpt-5.1', | |
| name: 'GPT-5.1', | |
| category: 'llm', | |
| description: 'Optimierte GPT-5 Variante mit verbesserter Reasoning-Fähigkeit', | |
| maxTokens: 128000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'claude-4.5-opus', | |
| name: 'Claude 4.5 Opus', | |
| category: 'llm', | |
| description: 'Anthropics leistungsstärkstes Modell für komplexe Reasoning-Aufgaben', | |
| maxTokens: 200000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'claude-4.5-sonnet', | |
| name: 'Claude 4.5 Sonnet', | |
| category: 'llm', | |
| description: 'Ausgewogenes Claude-Modell für vielseitige Anwendungen', | |
| maxTokens: 200000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'claude-4.5-haiku', | |
| name: 'Claude 4.5 Haiku', | |
| category: 'llm', | |
| description: 'Schnelles Claude-Modell für effiziente Aufgaben', | |
| maxTokens: 200000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'gemini-3-pro', | |
| name: 'Gemini 3 Pro', | |
| category: 'llm', | |
| description: 'Google DeepMinds fortschrittlichstes Multimodal-Modell', | |
| maxTokens: 1000000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'llama-3', | |
| name: 'Llama 3', | |
| category: 'llm', | |
| description: 'Metas Open-Source Large Language Model', | |
| maxTokens: 128000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'mistral-large', | |
| name: 'Mistral Large', | |
| category: 'llm', | |
| description: 'Mistral AIs leistungsstarkes europäisches LLM', | |
| maxTokens: 32000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'mixtral', | |
| name: 'Mixtral', | |
| category: 'llm', | |
| description: 'Mistral AIs Sparse Mixture of Experts Modell', | |
| maxTokens: 32000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'minimax2', | |
| name: 'MiniMax2', | |
| category: 'llm', | |
| description: 'MiniMax Chinas fortschrittliches LLM', | |
| maxTokens: 245000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'kimik2', | |
| name: 'KimiK2', | |
| category: 'llm', | |
| description: 'Moonshot AIs Long-Context LLM', | |
| maxTokens: 200000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'deepseek', | |
| name: 'DeepSeek', | |
| category: 'llm', | |
| description: 'Chinas Open-Source Alternative mit starken Coding-Fähigkeiten', | |
| maxTokens: 128000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'qwen3', | |
| name: 'Qwen3', | |
| category: 'llm', | |
| description: 'Alibaba Clouds Quantum Series LLM', | |
| maxTokens: 131072, | |
| supportsStreaming: true | |
| }, | |
| // Development Tools | |
| { | |
| id: 'manus', | |
| name: 'MANUS', | |
| category: 'code', | |
| description: 'AI-gestützte Full-Stack-Entwicklung', | |
| maxTokens: 32000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'replit-agent', | |
| name: 'Replit Agent', | |
| category: 'code', | |
| description: 'Replit\'s AI-Assistent für Code-Entwicklung', | |
| maxTokens: 16000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'bolt-new', | |
| name: 'Bolt.new', | |
| category: 'code', | |
| description: 'StackBlitzs AI für schnelle Web-Entwicklung', | |
| maxTokens: 32000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'v0-dev', | |
| name: 'v0.dev', | |
| category: 'code', | |
| description: 'Verkels UI-Komponenten-Generator', | |
| maxTokens: 16000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'cursor-ai', | |
| name: 'Cursor AI', | |
| category: 'code', | |
| description: 'AI-fähiger Code-Editor mit In-Context-Wissen', | |
| maxTokens: 32000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'github-copilot', | |
| name: 'GitHub Copilot', | |
| category: 'code', | |
| description: 'GitHub & OpenAIs Code-Completion-Assistent', | |
| maxTokens: 16000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'google-antigravity', | |
| name: 'Google Antigravity', | |
| category: 'code', | |
| description: 'Google\'s experimenteller Code-Assistent', | |
| maxTokens: 32000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'kiro', | |
| name: 'Kiro', | |
| category: 'code', | |
| description: 'KI-basierte Code-Entwicklungsplattform', | |
| maxTokens: 16000, | |
| supportsStreaming: true | |
| }, | |
| { | |
| id: 'minimax-agent', | |
| name: 'MiniMax Agent', | |
| category: 'code', | |
| description: 'MiniMax\'s Entwickler-Assistent', | |
| maxTokens: 32000, | |
| supportsStreaming: true | |
| }, | |
| // Specialized Tools | |
| { | |
| id: 'base44', | |
| name: 'Base44', | |
| category: 'special', | |
| description: 'Spezialisiertes Tool für komplexe AI-Workflows', | |
| maxTokens: 32000, | |
| supportsStreaming: false | |
| }, | |
| { | |
| id: 'midjourney', | |
| name: 'Midjourney', | |
| category: 'image', | |
| description: 'KI-Bildgenerator für künstlerische Bilder', | |
| maxTokens: 4000, | |
| supportsStreaming: false | |
| }, | |
| { | |
| id: 'dall-e-3', | |
| name: 'DALL-E 3', | |
| category: 'image', | |
| description: 'OpenAIs fortschrittlicher Bildgenerator', | |
| maxTokens: 4000, | |
| supportsStreaming: false | |
| }, | |
| { | |
| id: 'stable-diffusion', | |
| name: 'Stable Diffusion', | |
| category: 'image', | |
| description: 'Open-Source KI-Bildgenerator', | |
| maxTokens: 4000, | |
| supportsStreaming: false | |
| }, | |
| { | |
| id: 'runwayml', | |
| name: 'RunwayML', | |
| category: 'image', | |
| description: 'KI-Plattform für kreative Inhalte und Videos', | |
| maxTokens: 4000, | |
| supportsStreaming: false | |
| } | |
| ] | |
| /** | |
| * Category display names in German | |
| */ | |
| export const CATEGORY_NAMES: Record<AICategory, string> = { | |
| llm: 'LLM-Modelle', | |
| code: 'Entwicklungstools', | |
| image: 'Bildgeneratoren', | |
| special: 'Spezialisierte Tools' | |
| } as const | |
| /** | |
| * Category descriptions in German | |
| */ | |
| export const CATEGORY_DESCRIPTIONS: Record<AICategory, string> = { | |
| llm: 'Large Language Models für Konversation und Textgenerierung', | |
| code: 'AI-Tools für Code-Entwicklung und -Generierung', | |
| image: 'KI-Bildgeneratoren für visuelle Inhalte', | |
| special: 'Spezialisierte Tools für einzigartige Anwendungsfälle' | |
| } as const | |
| /** | |
| * Get models by category | |
| */ | |
| export function getModelsByCategory(category: AICategory): AIModelInfo[] { | |
| return AI_MODELS.filter(model => model.category === category) | |
| } | |
| /** | |
| * Find model by ID | |
| */ | |
| export function getModelById(id: AIModel): AIModelInfo | undefined { | |
| return AI_MODELS.find(model => model.id === id) | |
| } | |
| /** | |
| * Check if character count exceeds warning threshold | |
| */ | |
| export function getCharacterWarning(count: number): { type: 'warning' | 'error' | null, message: string | null } { | |
| if (count === 0) { | |
| return { type: null, message: null } | |
| } | |
| if (count < CHARACTER_LIMITS.MINIMUM) { | |
| return { | |
| type: 'warning', | |
| message: 'Prompt ist sehr kurz. Erwäge mehr Details hinzuzufügen für bessere Ergebnisse.' | |
| } | |
| } | |
| if (count > CHARACTER_LIMITS.WARNING) { | |
| return { | |
| type: 'warning', | |
| message: `Achtung: Sehr langer Prompt (${count} Zeichen) könnte Token-Limits einiger KIs überschreiten.` | |
| } | |
| } | |
| return { type: null, message: null } | |
| } | |
| </html> |