"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, DropdownMenuSeparator, } from "@/components/ui/dropdown-menu"; import { Badge } from "@/components/ui/badge"; import { ChevronDown, Cpu, Sparkles, Brain } from "lucide-react"; import { cn } from "@/lib/utils"; export interface ModelOption { id: string; name: string; description: string; provider: string; providerLabel: string; icon?: React.ComponentType<{ className?: string }>; } interface ModelSelectorProps { selectedModel: string; onModelChange: (modelId: string) => void; className?: string; } const models: ModelOption[] = [ { id: "deepseek-reasoner", name: "DeepSeek-R1", description: "深度推理模型,适合复杂分析任务", provider: "deepseek-official", providerLabel: "DeepSeek", icon: Brain, }, { id: "deepseek-chat", name: "DeepSeek-V3", description: "通用模型,速度快、能力强", provider: "deepseek-official", providerLabel: "DeepSeek", icon: Sparkles, }, ]; export default function ModelSelector({ selectedModel, onModelChange, className, }: ModelSelectorProps) { const [isOpen, setIsOpen] = useState(false); const selectedModelData = models.find((model) => model.id === selectedModel) || models[0]; const IconComponent = selectedModelData.icon || Cpu; return (
选择AI模型
{models.map((model) => { const ModelIcon = model.icon || Cpu; const isSelected = model.id === selectedModel; return ( { onModelChange(model.id); setIsOpen(false); }} className={cn( "flex items-start space-x-3 p-3 cursor-pointer", isSelected && "bg-muted/50" )} >
{model.name} {isSelected && ( 已选择 )}

{model.description}

); })}
); }