"API-ключ отсутствует"]; } // Инструкция пользователю вместо system prompt $task = "Анализируй текст документа и выполни следующие шаги: 1. Определи тип документа (договор, претензия, ответ на претензию, подтверждение оплаты и т. д.). 2. Проверь, соответствует ли название файла его содержимому. 3. Если файл связан с ранее загруженными, обнови анализ. 4. Определи стороны спора (истец, ответчик), если применимо. 5. Проверь текст на наличие нецензурной лексики. 6. Вынеси вердикт: 'Прошло модерацию' или 'Не прошло модерацию' с указанием причин. 📌 Важно: - Если документ связан с ранее загруженными, укажи, как он влияет на анализ. - Если документ новый, обработай его отдельно."; if (!empty($previousDocuments)) { $task .= "\n\nРанее загруженные документы:\n" . json_encode($previousDocuments, JSON_UNESCAPED_UNICODE); } $body = json_encode([ "model" => "o1-mini", // Используется модель без system prompt "messages" => [ ["role" => "user", "content" => $task], // Инструкция как ввод пользователя ["role" => "user", "content" => $text] // Сам текст документа ], "max_completion_tokens" => 4000 ]); logMessage("Запрос к GPT-4-Turbo: " . substr($body, 0, 1000)); $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => 'https://api.proxyapi.ru/openai/v1/chat/completions', // Исправленный URL CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $body, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', // Указан правильный заголовок 'Authorization: Bearer ' . $api_key ] ]); $response = curl_exec($curl); if ($response === false) { logMessage("Ошибка CURL: " . curl_error($curl)); return ["error" => "Ошибка запроса API"]; } curl_close($curl); $response_data = json_decode($response, true); if (json_last_error() !== JSON_ERROR_NONE) { logMessage("Ошибка JSON: " . json_last_error_msg()); return ["error" => "Ошибка декодирования JSON"]; } logMessage("Ответ от GPT-4-Turbo: " . substr($response, 0, 1000)); return $response_data; } // Функция обработки PDF-файлов function processPDFFiles() { logMessage("Запуск обработки PDF-файлов..."); if (!shell_exec("which pdftotext")) { logMessage("Ошибка: pdftotext не установлен."); return json_encode(["error" => "pdftotext не найден"]); } $files = glob(SCAN_DIR . '/*.pdf'); if (empty($files)) { logMessage("Нет файлов для обработки."); return json_encode(["error" => "Нет файлов в директории " . SCAN_DIR]); } $documentAnalysis = []; foreach ($files as $pdfFile) { logMessage("Обрабатываем PDF: $pdfFile"); $text = shell_exec("pdftotext -layout " . escapeshellarg($pdfFile) . " -"); if ($text === null) { logMessage("Ошибка: pdftotext не смог обработать файл $pdfFile."); continue; } if (empty(trim($text))) { logMessage("Файл $pdfFile содержит только изображения или пуст."); $documentAnalysis[] = ["file" => basename($pdfFile), "error" => "Файл содержит только изображения."]; continue; } logMessage("Текст успешно извлечен, отправляем в GPT-4-Turbo."); $gptAnalysis = AnalyzeTextWithGPT($text, $documentAnalysis, basename($pdfFile)); if (!$gptAnalysis) { logMessage("Ошибка: GPT-4-Turbo не вернул ответ."); $documentAnalysis[] = ["file" => basename($pdfFile), "error" => "GPT-4-Turbo не ответил"]; continue; } $documentAnalysis[] = ["file" => basename($pdfFile), "analysis" => $gptAnalysis]; } logMessage("Обработка всех файлов завершена."); return json_encode(["status" => "complete", "results" => $documentAnalysis], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); } // Запуск обработки echo processPDFFiles(); ?>