import { useState, useEffect } from 'react' import { FiDownload, FiTrash2, FiInfo, FiSearch, FiFilter, FiCpu, FiDatabase, FiCloud, FiCheckCircle, FiXCircle } from 'react-icons/fi' import axios from 'axios' export default function ModelSelector() { const [models, setModels] = useState([]) const [selectedModel, setSelectedModel] = useState(null) const [isLoading, setIsLoading] = useState(false) const [downloadedModels, setDownloadedModels] = useState([]) const [searchTerm, setSearchTerm] = useState('') const [filterType, setFilterType] = useState('all') const [showDetails, setShowDetails] = useState(false) useEffect(() => { fetchModels() const saved = localStorage.getItem('downloadedModels') if (saved) { setDownloadedModels(JSON.parse(saved)) } }, []) const fetchModels = async () => { try { setIsLoading(true) const response = await axios.get('/api/models') setModels(response.data) } catch (error) { console.error('Error fetching models:', error) } finally { setIsLoading(false) } } const handleDownload = async (model) => { setIsLoading(true) setSelectedModel(model) try { await new Promise(resolve => setTimeout(resolve, 1500)) const updatedModels = [...downloadedModels, model] setDownloadedModels(updatedModels) localStorage.setItem('downloadedModels', JSON.stringify(updatedModels)) } catch (error) { console.error('Download failed:', error) } finally { setIsLoading(false) } } const handleRemove = (modelId) => { const updatedModels = downloadedModels.filter(m => m.id !== modelId) setDownloadedModels(updatedModels) localStorage.setItem('downloadedModels', JSON.stringify(updatedModels)) } const filteredModels = models.filter(model => { const matchesSearch = model.name.toLowerCase().includes(searchTerm.toLowerCase()) || model.description.toLowerCase().includes(searchTerm.toLowerCase()) const matchesFilter = filterType === 'all' || model.type === filterType return matchesSearch && matchesFilter }) const getModelStatus = (modelId) => { return downloadedModels.some(m => m.id === modelId) ? 'downloaded' : 'available' } return (
{model.description}
{selectedModel.description}
{selectedModel.type}
{selectedModel.size}
{selectedModel.version || '1.0'}
{selectedModel.updatedAt || 'N/A'}
{`// Import the model
const model = require('${selectedModel.name.toLowerCase().replace(/\s+/g, '-')}')
// Initialize with your parameters
const instance = new model({
temperature: 0.7,
maxTokens: 100
})
// Use the model
const result = instance.generate('Write a function to calculate factorial')`}
{model.size}