/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/components/JanusAIComponent.php
107 строк
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\components; use common\helpers\ArrayHelper; use Spatie\DataTransferObject\Arr; use yii\base\Component; use Yii; use yii\httpclient\Response; /** * Компонент для работы с Deepseek * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2019-2026 */ class JanusAIComponent extends Component { /** * Клиент для работы с DeepSeek * @var CurlTransport */ protected $client = null; /** * @inheritdoc */ public function init() { parent::init(); // TODO: Change the autogenerated stub $config = ArrayHelper::getValue(Yii::$app->params, 'JanusAI'); $this->client = Yii::createObject([ 'class' => CurlTransport::class, 'endpoint' => ArrayHelper::getValue($config, 'host') ]); } /** * Получить экземпляр клиента для работы * @return CurlTransport */ public function getClient() { return $this->client; } /** * Получить список моделей * @return array|mixed */ public function getModels() { /** @var Response $response */ $response = $this->client->get('/tags'); if ($response->isOk) { return $response->data; } else { return []; } } /** * Выполнить запрос и получить ответ * * @param $options * @return array * @throws \Exception */ public function request($options = []) { /** @var Response $response */ $response = $this->client->post('/generate', [ 'model' => ArrayHelper::getValue($options, 'model'), 'system' => ArrayHelper::getValue($options, 'system'), 'prompt' => ArrayHelper::getValue($options, 'prompt'), 'stream' => false, 'think' => 'low', 'keep_alive' => -1, 'options' => [ 'temperature' => ArrayHelper::getValue($options, 'temperature'), 'top_p' => ArrayHelper::getValue($options, 'top_p'), 'repeat_penalty' => 1.1, 'num_predict' => -1 ] ]); if ($response->isOk) { $body = $response->data; return [ 'response' => ArrayHelper::getValue($body, 'response'), 'prompt_eval_count' => ArrayHelper::getValue($body, 'prompt_eval_count'), 'eval_count' => ArrayHelper::getValue($body, 'eval_count'), 'total_duration' => ArrayHelper::getValue($body, 'total_duration'), ]; } else { return [ 'response' => 'Error (' . $response->statusCode . '): ' . $response->content, 'prompt_eval_count' => 0, 'eval_count' => 0, 'total_duration' => 0, ]; } } }