import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card' import { Slider } from '@/components/ui/slider' import { Label } from '@/components/ui/label' import { Badge } from '@/components/ui/badge' import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Cloud, Brain, Zap } from 'lucide-react' interface ModelInfo { model_name: string name: string supports_thinking: boolean description: string size_gb: string is_loaded: boolean type: 'local' | 'api' } interface ModelParametersTabProps { models: ModelInfo[] selectedModel: string | null setSelectedModel: (model: string) => void autoLoadingModel: string | null temperature: number setTemperature: (temp: number) => void maxTokens: number setMaxTokens: (tokens: number) => void } export function ModelParametersTab({ models, selectedModel, setSelectedModel, autoLoadingModel, temperature, setTemperature, maxTokens, setMaxTokens }: ModelParametersTabProps) { return ( <> {/* Model Selection */} Model
{/* Generation Parameters */} Parameters {/* Temperature Slider */}
{temperature}
setTemperature(value[0])} max={2} min={0} step={0.1} className="w-full mb-3" />
0.0 (Focused) 1.0 (Balanced) 2.0 (Creative)
{temperature <= 0.3 ? "🎯 Very focused and deterministic responses" : temperature <= 0.7 ? "⚖️ Balanced creativity and consistency" : temperature <= 1.2 ? "🎨 More creative and varied responses" : "🚀 Highly creative, unpredictable responses" }
{/* Max Tokens Slider */}
{maxTokens}
setMaxTokens(value[0])} max={4000} min={50} step={50} className="w-full mb-3" />
50 (Short) 1024 (Medium) 4000 (Long)
{maxTokens <= 200 ? "📝 Brief responses, good for quick answers" : maxTokens <= 1000 ? "📄 Medium responses, balanced length" : maxTokens <= 2000 ? "📋 Long responses, detailed explanations" : "📚 Very long responses, comprehensive content" }
) }