HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/laravel/public/test-gpt.php
<?php
try {
    $url = 'https://notam.foach.site/gpt.php';

    $data = [
        'input' => 'D0284/25 NOTAMN\nQ)UTSD/QFAAH/IV/NBO/A/000/999/3848N06546E005\nA)UTSK B)2503300000 C)2510252359\nE)AD OPR HR:\n MON      0000-0535  1405-1820  2105-2359\n TUE      0000-0510  2105-2359\n WED      0000-0400  1555-2359\n THU      0000-0400  2105-2359\n FRI      0000-0400\n SAT      0020-0400  2105-2359\n SUN      0000-0400  2105-2359.',
        'key' => "sk-server-h8kYvYQrscNCYY2tCtWFT3BlbkFJJuDh3VanVvfRPNmUqfmV",
        'prompt' => 'Разбей запрос на блоки: Блок A (аэропорт/место), Блок B (время начала действия), Блок C (время окончания действия), Блок D (время действия по дням), Блок E (информация об объектах), Блок F: (часто отсутствует, если нет ограничений по высоте или другим характеристикам), Блок G: (часто отсутствует, если нет ограничений по высоте или другим характеристикам)
Преобразуй каждый блок по отдельности в JSON соответствующего названия: A_Line, B_Line, C_Line, D_Line, E_Line, F_Line, G_Line
Не используй данные из блока Q в других блоках.

Верни JSON, который уже содержит некоторые заполненные поля и получите структурированный JSON
Не используй markdown. Пропускай: пустые блоки, пустые строки, пустые массивы
1. термины Alfa, Bravo, Charlie, Delta, Echo, Foxtrot, Golf, Hotel, India, Juliet, Kilo, Lima, Mike, November, Oscar, Papa, Quebec, Romeo, Sierra, Tango, Uniform, Victor, Whiskey, X-Ray, Yankee, Zulu заменяй на первую букву слова, делая её заглавной
2. В полях с координатами заменяй буквы в следующем соответствии: {"В":"E", "З":"W", "Ю":"S", "С":"N"}
3. примеры записи координат:
372447N1291131E {"Latitude": "372447N", "Longitude": "1291131E”}  
372447С1291131В {"Latitude": "372447N", "Longitude": "1291131E”}  
37.2447N 129.1131E {"Latitude": "372447N", "Longitude": "1291131E”}  
37.2447С 129.1131В {"Latitude": "372447N", "Longitude": "1291131E”} 
244255.84N 0513419.27E {"Latitude": "244255.84N", "Longitude": "0513419.27E”} 
N244255.84 E0513419.27 {"Latitude": "244255.84N", "Longitude": "0513419.27E”} 
С244255.84 В0513419.27 {"Latitude": "244255.84N", "Longitude": "0513419.27E”} 
Ю244255.84 З0513419.27 {"Latitude": "244255.84S", "Longitude": "0513419.27W”} 
S244255.84 W0513419.27 {"Latitude": "244255.84S", "Longitude": "0513419.27W”} 
Ю 244255.84 З 0513419.27 {"Latitude": "244255.84S", "Longitude": "0513419.27W”} 
244255.84 N 0513419.27 E {"Latitude": "244255.84N", "Longitude": "0513419.27E”} 
244255.84N 0513419.27W {"Latitude": "244255.84N", "Longitude": "0513419.27W”} 
244255.84S 0513419.27E {"Latitude": "244255.84S", "Longitude": "0513419.27E”} 
162844.7N1034249.8E {"Latitude": "162844.7N", "Longitude": "1034249.8E”} 
С60.57 В076.29 {"Latitude": "6057N", "Longitude": "07629E”} 
С60 57.6 В076 29.1 {"Latitude": "605736N", "Longitude": "0762906E”} 
С60 В076 {"Latitude": "60N", "Longitude": "076E”} 
N60 E076 {"Latitude": "60N", "Longitude": "076E”} 
60N 076E {"Latitude": "60N", "Longitude": "076E”} 
60С 076В {"Latitude": "60N", "Longitude": "076E”} 
60Ю 076З {"Latitude": "60S", "Longitude": "076W”} 
60S 076W {"Latitude": "60S", "Longitude": "076W”} 
S60 W076 {"Latitude": "60S", "Longitude": "076W”} 
Ю60 З076 {"Latitude": "60S", "Longitude": "076W”}
4. Табличные данные могут быть представлены как
\r\nRWY   TORA   TODA        ASDA   LDA
\r\n01R   2721   2781(3.6)   2721   2721
\r\n19L   2781   2841(1.6)   2781   2671

или
RWY  STOP WAY(M)  CWY(M)   STRIP(M)  RESA(M) RMK
\n-------------------------------------------------------
\n18L  150X75       250X150  3780X280  90X90
\n-------------------------------------------------------
\n36R  150X75       330X150  3780X280  90X90
\n-------------------------------------------------------
\nSECONDARY\nRUNWAY
\n18R   NIL         320X150  3274X280  90X90
\n-------------------------------------------------------
5. Текстовые поля кроме Other и Reference и Координат всегда переводи на английский',
        'model' => 'ft:gpt-4o-mini-2024-07-18:foach::BFdLj6lC',
        'temperature' => (float) 0,
        'max_tokens' => (float) 4096,
    ];

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type:application/json']);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    $result = curl_exec($curl);

    $error = curl_error($curl);
    curl_close($curl);

    if (!empty($error)) {
        print_r($error);
    }

    echo $result;
} catch (Exception $e) {
    print_r($e->getMessage());
}