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/ai-notam/laravel/resources/views/prompts-edit.blade.php.bkp
@extends('layouts.app')

@section('content')
    <script>
        window.allJobs = <?= json_encode($allJobs) ?>;
        window.prompt = <?= json_encode($prompt) ?>;
        window.fineTuningJobs = <?= json_encode($fineTuningJobs) ?>;

    </script>
    <div class="content" x-data="initPromptEdit()">
        <div class="panel panel-flat">
            <div class="panel-heading">
                <h3 x-text="'ПРОМТ #'+prompt.id"></h3>
            </div>
            <div class="panel-body">
                <div class="row">
                    <div class="col-lg-2">
                        Статус:
                        <div class="m-2 text-danger" x-show="!prompt.is_active">
                            <i class="icon-x text-danger" ></i>Не активный
                        </div>
                        <div class="m-2 text-success" x-show="prompt.is_active">
                            <i class="icon-check"></i>Активный
                        </div>
                    </div>

                    <div class="col-lg-2">Создан: <div class="" x-text="moment(prompt.created_at).format('DD.MM.YYYY')"></div></div>
                </div>
            </div>
        </div>
        <div class="panel panel-flat">
            <div class="panel-heading">
                <h3>Промт</h3>
                <div class="heading-elements">
                    <ul class="icons-list">
                        <li><a data-action="collapse" class=""></a></li>
                    </ul>
                </div>
            </div>
            <div class="panel-body">
                <div class="row">
                    <div class="col-lg-12 mt-10">
                        <div class="col-lg-6 ">
                            <textarea :id="prompt.id+'-prompt'" class="col-lg-12" rows="10" cols="20" name="prompt" x-text="prompt.prompt"></textarea>
                        </div>

                        <div class="col-lg-6">
                            <textarea style="display: none" :id="prompt.id+'-json'" name="json" x-text="prompt.json"></textarea>
                            <div class="editor" style="height: 700px" :data-id="prompt.id" data-name="json" :data-value='prompt.json'></div>
                        </div>
                    </div>
                    <div class="col-lg-12">
                        <div>
                            <label>Тип</label>
                            <select id="type" name="type" class="clearfix p-5">
                                <option value="notam" :selected="prompt.type === 'notam'">Notam</option>
                                <option value="mel" :selected="prompt.type === 'mel'">Mel</option>

                            </select>
                        </div>
                        <div>
                            <label>Модель</label>
                            <select id="model" name="model" class="clearfix p-5">
                                <option value="gpt-4o" :selected="prompt.model === 'gpt-4o'">gpt-4o</option>
                                <option value="gpt-4o-mini" :selected="prompt.model === 'gpt-4o-mini'">gpt-4o-mini</option>
                                <template x-for="fineTuningJob in fineTuningJobs">
                                    <option :value="fineTuningJob.model_name" x-text="fineTuningJob.model_name +' ('+fineTuningJob.examples_number+' примеров)'" :selected="prompt.model === fineTuningJob.model_name"></option>
                                </template>
                            </select>
                        </div>
                        <div>
                            <label>Вариативность (0-1. 0 - не вариативная, 1 - максимально вариативная)</label>
                            <input id="temperature" class="clearfix p-5" name="temperature" type="number" min="0" max="1" step="0.1" x-model="prompt.temperature" />
                        </div>
                    </div>
                </div>
                <div class="row mt-10">
                    <button class="btn btn-success" @click="updatePrompt(prompt.id)" >Сохранить</button>
                </div>
            </div>
        </div>
        <div class="panel panel-flat" id="inputPanel">
            <div class="panel-heading">
                <h3>Обучение</h3>
                <div class="heading-elements">
                    <ul class="icons-list">
                        <li><a data-action="collapse" class=""></a></li>
                    </ul>
                </div>
            </div>
            <div class="panel-body">
                <div class="row">
                    <div class="col-lg-6">
                        <div>Примеров доступно для обучения: <?=$fineTuningDataNumber ?></div>
                        <div>Примерная стоимость обучения: $<?=$tuningPrice ?></div>
                        <div class="mt-10">
                            <button class="btn btn-success" @click="newFineTuningJob(prompt.id, false)">Обучить новую модель</button>
                        </div>
                    </div>
                    <div class="col-lg-6">
                        <div>Примеров доступно для Дообучения: <?=$additionalFineTuningDataNumber ?></div>
                        <div>Примерная стоимость дообучения: $<?=$additionalTuningPrice ?></div>
                        <?php if ($additionalFineTuningDataNumber) { ?>
                            <div class="mt-10 grid grid-cols-2 gap-2">
                                <?php if ($additionalFineTuningDataNumber >= 10) { ?>
                                    <button class="btn btn-success" style="margin-top:5px" @click="newFineTuningJob(prompt.id, true, 10)">
                                        Дообучить на 10 примерах ($<?=$additionalTuningPrice10 ?>)
                                    </button>
                                <?php } ?>
                                <?php if ($additionalFineTuningDataNumber >= 500) { ?>
                                    <button class="btn btn-success" style="margin-top:5px" @click="newFineTuningJob(prompt.id, true, 500)">
                                        Дообучить на 500 примерах ($<?=$additionalTuningPrice500 ?>)
                                    </button>
                                <?php } ?>
                                <?php if ($additionalFineTuningDataNumber >= 1000) { ?>
                                    <button class="btn btn-success" style="margin-top:5px" @click="newFineTuningJob(prompt.id, true, 1000)">
                                        Дообучить на 1000 примерах ($<?=$additionalTuningPrice1000 ?>)
                                    </button>
                                <?php } ?>
                                <?php if ($additionalFineTuningDataNumber >= 2000) { ?>
                                    <button class="btn btn-success" style="margin-top:5px" @click="newFineTuningJob(prompt.id, true, 2000)">
                                        Дообучить на 2000 примерах ($<?=$additionalTuningPrice2000 ?>)
                                    </button>
                                <?php } ?>

                                <button class="btn btn-success" style="margin-top:5px" @click="newFineTuningJob(prompt.id, true)">
                                    Дообучить на <?=$additionalFineTuningDataNumber ?> примерах ($<?=$additionalTuningPrice ?>)
                                </button>
                            </div>
                        <?php } ?>
                    </div>
                </div>
                <div class="mt-10">
                    <hr/>
                    <div x-show="!fineTuningJobs.length" x-cloak>
                        Обучение для данного ПРОМТ не производилось

                    </div>
                    <table class="table dataTable" x-show="fineTuningJobs.length" x-cloak>
                        <tr>
                            <th>ID</th>
                            <th>Дата</th>
                            <th>Количество примеров<br/>(родительская модель + новых)</th>
                            <th>Статус</th>
                            <th>Родительская модель</th>
                            <th>Модель</th>
                            <th>Используется</th>
                            <th>Ошибка</th>
                        </tr>
                        <template x-for="fineTuningJob in fineTuningJobs">
                            <tr>
                                <td x-text="fineTuningJob.id"></td>
                                <td x-text="moment(fineTuningJob.created_at).format('DD.MM.YYYY HH:mm')"></td>
                                <td x-text="fineTuningJob.examples_number"></td>
                                <td x-text="fineTuningJob.job_status"></td>
                                <td x-text="fineTuningJob.parent_model"></td>
                                <td x-text="fineTuningJob.model_name"></td>
                                <td>
                                    <i class="icon-check text-success" x-show="fineTuningJob.model_name === prompt.model" x-show="log.fine_tuning"></i>
                                </td>
                                <td x-text="fineTuningJob.error"></td>
                            </tr>
                        </template>
                    </table>


                    <h3>Все обучения</h3>
                    <table class="table dataTable">
                        <tr>
                            <th>ID</th>
                            <th>Дата</th>
                            <th>Количество токенов</th>
                            <th>Статус</th>
                            <th>Родительская модель</th>
                            <th>Модель</th>
                            <th>Ошибка</th>
                        </tr>
                        <template x-for="fineTuningJob in window.allJobs.data">
                            <tr>
                                <td x-text="fineTuningJob.id"></td>
                                <td x-text="new Date(fineTuningJob.created_at * 1000).toString()"></td>
                                <td x-text="fineTuningJob.trained_tokens"></td>
                                <td x-text="fineTuningJob.status"></td>
                                <td x-text="fineTuningJob.model"></td>
                                <td x-text="fineTuningJob.fine_tuned_model"></td>

                                <td x-text="JSON.stringify(fineTuningJob.error)"></td>
                            </tr>
                        </template>
                    </table>
                </div>
            </div>
        </div>
    </div>
@endsection