import React, { useState, useEffect } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Switch } from '@/components/ui/switch'; import { Slider } from '@/components/ui/slider'; import { ArrowLeft, Upload, Save } from 'lucide-react'; import '../App.css'; const CreateProject = ({ onBack, onProjectCreated }) => { const [formData, setFormData] = useState({ name: '', description: '', base_model: '', rank: 4, alpha: 32, dropout: 0.1, learning_rate: 0.0001, batch_size: 1, num_epochs: 10, use_8bit_optimizer: true, use_gradient_checkpointing: true, mixed_precision: 'fp16' }); const [availableModels, setAvailableModels] = useState([]); const [loading, setLoading] = useState(false); const [datasetFile, setDatasetFile] = useState(null); useEffect(() => { fetchAvailableModels(); }, []); const fetchAvailableModels = async () => { try { const response = await fetch('/api/models'); const data = await response.json(); setAvailableModels(data); } catch (error) { console.error('Erro ao buscar modelos:', error); } }; const handleInputChange = (field, value) => { setFormData(prev => ({ ...prev, [field]: value })); }; const handleFileChange = (event) => { const file = event.target.files[0]; setDatasetFile(file); }; const handleSubmit = async (event) => { event.preventDefault(); setLoading(true); try { // Create project const response = await fetch('/api/projects', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(formData), }); if (!response.ok) { throw new Error('Erro ao criar projeto'); } const project = await response.json(); // Upload dataset if provided if (datasetFile) { const formDataUpload = new FormData(); formDataUpload.append('dataset', datasetFile); const uploadResponse = await fetch(`/api/projects/${project.id}/upload-dataset`, { method: 'POST', body: formDataUpload, }); if (!uploadResponse.ok) { throw new Error('Erro ao fazer upload do dataset'); } } onProjectCreated(project); } catch (error) { console.error('Erro ao criar projeto:', error); alert('Erro ao criar projeto: ' + error.message); } finally { setLoading(false); } }; return (
{/* Header */}

Criar Novo Projeto LoRA

Configure os parâmetros para seu novo projeto de treinamento

{/* Basic Information */} Informações Básicas Configure as informações básicas do seu projeto
handleInputChange('name', e.target.value)} placeholder="Ex: Meu Primeiro LoRA" required />