promptenhancer / src /utils /constants.ts
Tobs248's picture
# Rolle
eee3ce2 verified
Raw
History Blame Contribute Delete
7.37 kB
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>