/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/forms/api/RequestAssistantForm.php
82 строки
2 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\forms\api; use common\forms\ai\BaseRequestAssistantForm; use common\helpers\AiHelper; use common\helpers\ArrayHelper; use common\kdf\KPromtFormat; use common\models\Task; use common\models\TaskAssistant; use Yii; use yii\helpers\Json; /** * Запрос к ассистенту * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2024-2025 */ class RequestAssistantForm extends BaseRequestAssistantForm { /** * @inheritdoc */ protected function afterSave($result) { parent::afterSave($result); // TODO: Change the autogenerated stub if ($this->promt_format_id == KPromtFormat::T_TEXT) { $response = ArrayHelper::getValue($this->model, 'text'); $items = AiHelper::split($response); } else { $json_list = ArrayHelper::getValue($this->model, 'items'); $items = []; foreach ($json_list as $json) { $data = Json::decode($json); $target = ArrayHelper::getValue($data, 'target'); foreach ((array)$target as $row) { $items[ArrayHelper::getValue($row, 'i')] = ArrayHelper::getValue($row, 't'); } } } $this->model['items'] = $items; } /** * @inheritdoc */ public function initOptions($r, $options) { /** @var Task $task */ $task = $r->task; /** @var TaskAssistant $taskAssistant */ $taskAssistant = $task->getTaskAssistant() ->andWhere(['is_default' => 1]) ->one(); $the_options = $taskAssistant->getOptions($r); if ($taskAssistant->promt_format_id == KPromtFormat::T_TEXT) { // текстовый формат $request = $r->getBatchList([ 'is_batch' => 1 ]); } else { // json формат $request = $r->getBatchList([ 'is_batch' => 1, 'is_json' => 1, 'source_language' => $r->sourceLanguage->title, 'target_language' => $r->targetLanguage->title ]); } return ArrayHelper::merge($options, $the_options, [ 'promt_format_id' => $taskAssistant->promt_format_id, 'request' => $request ]); } }