#!/usr/bin/env python3 """ Script sederhana untuk menjalankan fine-tuning Novita AI """ import os import sys from pathlib import Path # Import NovitaAIClient dari script yang sudah ada sys.path.append('scripts') from novita_ai_setup_v2 import NovitaAIClient, create_sample_dataset def main(): print("šŸš€ Novita AI Fine-tuning - Auto Run") print("=" * 50) # Check environment variables api_key = os.getenv('NOVITA_API_KEY') if not api_key: print("āŒ NOVITA_API_KEY tidak ditemukan") print("Silakan set: export NOVITA_API_KEY='your_key'") return base_url = os.getenv('NOVITA_BASE_URL', 'https://api.novita.ai/openai') print(f"šŸ”‘ API Key: {api_key[:10]}...{api_key[-10:]}") print(f"🌐 Base URL: {base_url}") # Create client client = NovitaAIClient(api_key) client.base_url = base_url # Test connection print("\n1ļøāƒ£ Testing connection...") if not client.test_connection(): print("āŒ Koneksi gagal") return # Get available models print("\n2ļøāƒ£ Getting available models...") models = client.get_available_models() if not models: print("āŒ Tidak bisa mendapatkan daftar model") return # Select model automatically (Llama 3.2 1B Instruct if available) selected_model = None preferred_models = [ "meta-llama/llama-3.2-1b-instruct", "meta-llama/llama-3.2-3b-instruct", "qwen/qwen3-4b-fp8", "qwen/qwen3-8b-fp8" ] print("\nšŸŽÆ Selecting model...") for preferred in preferred_models: if isinstance(models, dict) and 'data' in models: for model in models['data']: if model.get('id') == preferred: selected_model = preferred print(f"āœ… Selected: {preferred}") break elif isinstance(models, list): for model in models: if model.get('id') == preferred: selected_model = preferred print(f"āœ… Selected: {preferred}") break if selected_model: break if not selected_model: # Fallback to first available model if isinstance(models, dict) and 'data' in models and models['data']: selected_model = models['data'][0].get('id') elif isinstance(models, list) and models: selected_model = models[0].get('id') if selected_model: print(f"āš ļø Fallback to: {selected_model}") else: print("āŒ Tidak ada model yang tersedia") return # Create dataset print("\n3ļøāƒ£ Preparing dataset...") training_file = create_sample_dataset() # Create fine-tuning job print(f"\n4ļøāƒ£ Creating fine-tuning job...") print(f" Model: {selected_model}") print(f" Training file: {training_file}") job = client.create_fine_tuning_job(selected_model, training_file) if job: print(f"\nāœ… Fine-tuning job created successfully!") print(f" Job ID: {job.get('id')}") print(f" Status: {job.get('status', 'unknown')}") print(f" Model: {job.get('model', 'unknown')}") print(f"\nšŸ“‹ Next steps:") print(f"1. Monitor job status") print(f"2. Check logs for progress") print(f"3. Download fine-tuned model when complete") else: print("\nāŒ Failed to create fine-tuning job") print("šŸ’” Check the error messages above") if __name__ == "__main__": main()