# 🤝 Nova AI'ya Katkıda Bulunma Rehberi **Teknova Nova AI** projesine katkıda bulunmak istediğiniz için teşekkürler! Bu rehber, katkı sürecini kolaylaştırmak için hazırlanmıştır. ## 🎯 Katkı Türleri ### 🐛 **Bug Reports (Hata Bildirimi)** - Detaylı hata açıklaması - Tekrar edilebilir adımlar - Sistem bilgileri (OS, Python version) - Error logs ve screenshots ### ✨ **Feature Requests (Özellik İstekleri)** - Özelliğin amacını açıklayın - Kullanım senaryolarını belirtin - Mevcut alternatiflerle karşılaştırın ### 🔧 **Code Contributions (Kod Katkıları)** - Bug fixes - Performance improvements - New features - Documentation updates ### 📚 **Documentation** - README improvements - Code comments - Tutorial yazıları - API documentation ## 🚀 Başlangıç Adımları ### 1️⃣ **Repository'yi Fork Edin** ```bash # GitHub'da Fork butonuna tıklayın # Sonra local'e clone edin: git clone https://github.com/YOUR-USERNAME/novaai.git cd novaai ``` ### 2️⃣ **Development Environment Kurun** ```bash # Virtual environment oluşturun python -m venv venv source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows # Dependencies yükleyin pip install -r requirements.txt pip install -r requirements-dev.txt # Dev dependencies ``` ### 3️⃣ **Model Dosyalarını Hazırlayın** ```bash # MODEL_SETUP.md rehberini takip edin mkdir nova-ai-model # Model dosyalarınızı bu klasöre yerleştirin ``` ## 📋 Development Workflow ### 🌿 **Branch Oluşturma** ```bash # Main branch'ten yeni branch oluşturun git checkout main git pull origin main git checkout -b feature/amazing-feature # Veya bug fix için: git checkout -b fix/bug-description ``` ### 💻 **Code Style** ```python # Python kod standartları: # - PEP 8 compliance # - Type hints kullanın # - Docstrings ekleyin def nova_chat(message: str, history: List[Dict]) -> str: """ Nova AI ile sohbet fonksiyonu. Args: message: Kullanıcı mesajı history: Sohbet geçmişi Returns: Nova AI yanıtı """ # Implementation here pass ``` ### 🧪 **Testing** ```bash # Testleri çalıştırın python -m pytest tests/ # Linting kontrolleri flake8 . black --check . mypy . # Security check bandit -r . ``` ### 📝 **Commit Messages** ```bash # Anlamlı commit messages yazın: git commit -m "✨ Add: Nova AI temperature control feature - Add temperature parameter to chat function - Update Gradio interface with slider - Add tests for temperature validation - Update documentation Fixes #123" ``` ## 🔍 Code Review Süreci ### 📋 **Pull Request Checklist** - [ ] Code changes test edildi - [ ] Yeni features için testler eklendi - [ ] Documentation güncellendi - [ ] Commit messages açıklayıcı - [ ] Code style check'leri geçiyor - [ ] No breaking changes (veya belirtildi) ### 🎯 **Pull Request Template** ```markdown ## 📝 Description Brief description of changes ## 🔧 Type of Change - [ ] Bug fix - [ ] New feature - [ ] Breaking change - [ ] Documentation update ## 🧪 Testing - [ ] Tests pass locally - [ ] Added tests for new features - [ ] Manual testing completed ## 📋 Checklist - [ ] Code follows style guidelines - [ ] Self-review completed - [ ] Documentation updated - [ ] No conflicts with main branch ``` ## 🛠️ Development Guidelines ### 🎯 **Nova AI Specific Guidelines** #### 🧠 **Model Integration** ```python # Model loading best practices: def load_nova_model(model_path: str) -> Tuple[Any, Any]: """Load Nova AI model with error handling.""" try: tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.float16, device_map="auto" ) return model, tokenizer except Exception as e: logger.error(f"Model loading failed: {e}") raise ``` #### 🌐 **API Design** ```python # FastAPI endpoint conventions: @app.post("/chat", response_model=ChatResponse) async def chat_endpoint(request: ChatRequest) -> ChatResponse: """Nova AI chat endpoint with proper error handling.""" try: # Validate input if not request.message.strip(): raise HTTPException(400, "Message cannot be empty") # Process with Nova AI response = await nova_chat(request.message, request.history) return ChatResponse( response=response, model="Teknova Nova AI", timestamp=datetime.utcnow() ) except Exception as e: logger.error(f"Chat error: {e}") raise HTTPException(500, "Internal server error") ``` #### 🎨 **UI/UX Standards** ```python # Gradio interface guidelines: with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.HTML("""
Özgün yapay zeka teknolojisi