'Промпт не может быть пустым']); exit; } try { switch ($action) { case 'generate_image': $result = generateImage($prompt); break; case 'generate_video': $result = generateVideo($prompt); break; case 'generate_music': $result = generateMusic($prompt); break; default: throw new Exception('Неизвестное действие'); } echo json_encode($result); } catch (Exception $e) { echo json_encode(['error' => $e->getMessage()]); } exit; } // =================== ФУНКЦИИ =================== function replicateRequest($modelVersion, $input, $timeout = 120) { // 1. Создаём предсказание $ch = curl_init(REPLICATE_API_URL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Token ' . REPLICATE_API_KEY, 'Content-Type: application/json' ]); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([ 'version' => $modelVersion, 'input' => $input ])); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode !== 201) { $error = json_decode($response, true)['detail'] ?? 'Ошибка создания предсказания'; throw new Exception($error); } $prediction = json_decode($response, true); $getUrl = $prediction['urls']['get']; $predictionId = $prediction['id']; // 2. Ожидаем завершения (polling) $start = time(); while (time() - $start < $timeout) { $ch = curl_init($getUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Token ' . REPLICATE_API_KEY ]); $response = curl_exec($ch); $status = json_decode($response, true); curl_close($ch); if ($status['status'] === 'succeeded') { // Извлекаем URL результата (модели могут возвращать массив или строку) $output = $status['output']; if (is_array($output)) { $output = reset($output); } return ['url' => $output]; } elseif ($status['status'] === 'failed') { throw new Exception('Ошибка генерации: ' . ($status['error'] ?? 'неизвестная ошибка')); } sleep(2); } throw new Exception('Превышено время ожидания (возможно, очередь Replicate)'); } function generateImage($prompt) { // Модель flux-schnell: принимает prompt, output_format (webp/jpeg/png) $input = [ 'prompt' => $prompt, 'go_fast' => true, 'guidance' => 3, 'output_format' => 'webp' ]; return replicateRequest('black-forest-labs/flux-schnell', $input); } function generateVideo($prompt) { // Mochi-1 preview: принимает prompt, num_frames= (опционально) $input = [ 'prompt' => $prompt, 'num_inference_steps' => 50, 'guidance_scale' => 4.5, ]; // Версия модели genmo/mochi-1-preview return replicateRequest('genmo/mochi-1-preview', $input, 180); // 3 минуты на видео } function generateMusic($prompt) { // Meta MusicGen: принимает prompt, duration (секунды), temperature и др. $input = [ 'prompt' => $prompt, 'duration' => 8, 'temperature' => 0.8, 'top_k' => 250, 'top_p' => 0.95 ]; // Используем популярную версию Meta MusicGen (large) return replicateRequest('meta/musicgen', $input); } ?> AI Генератор (Replicate) | Картинки, Видео, Музыка

✨ Neural Forge AI

Генерация картинок, видео и музыки через Replicate API

🖼️ Изображение

✨ Ваше изображение появится здесь

🎬 Видео (Genmo Mochi-1)

🎥 Видео появится после обработки

🎵 Музыка (MusicGen)

🎧 Аудиофрагмент будет здесь