Перейти к содержанию

Веб-сервис взаимодействия с ИИ

Веб-сервис предназначен для работы с LLM по протоколу OpenAI. Он абстрагирует потребителя от деталей протокола, обеспечивая необходимое взаимодействие и предоставляя при этом потребителю простой API для работы в режиме чата с использованием файловых вложений.

Tip

arti входит в состав TESSA, начиная с версии 4.2.

Important

Для работы с модулем ИИ нужна соответствующая лицензия.

Настройки сервиса arti

Для корректной работы веб-сервиса arti необходимо задать ряд обязательных параметров.

Important

Настройки, заданные в аргументах командной строки, имеют приоритет перед настройками, заданными в конфигурационном файле.

Аргументы командной строки

Аргументы командной строки и их назначение:

Аргумент Описание
-address <address> Указывает адрес в формате host:port, который будет использован arti для работы. По умолчанию используется хост localhost, порт 20202
-logs <path> Указывает путь к директории для создания файлов протоколов. По умолчанию logs
-conf <config> Указывает путь к файлу конфигурации в формате YAML, содержащему настройки arti. По умолчанию config.yaml
-verbose Флаг использования многословного режима. В этом режиме на консоль будут выводится подробные диагностические сообщения
-dbg Флаг использования отладочного режима. Рекомендуется использовать только в диагностических целях для проверки работы сервиса

Tip

Рекомендуется указывать номер порта целым числом больше 10000, не кратным 10, что в большей степени поможет исключить попытку запустить arti на уже занятом кем-то порту, например, 20202. Как правило, номера портов меньше 8000 (реже - 10000) резервируются системными службами и приложениями.

Конфигурационный файл

Important

Для удобства работы и проверки корректности конфигурационного файла создана схема config.schema.json, которая отражает самое актуальное состояние настроек arti.

Для создания и редактирования конфигурационного файла рекомендуется использовать редактор или IDE с поддержкой YAML Schema, например, VS Code с установленным расширением redhat.vscode-yaml. В этом случае будет обеспечена полноценная работа технологии IntelliSense.

Конфигурационный файл должен иметь формат YAML и соответствовать схеме config.schema.json. При этом сам файл может иметь любое имя.

Далее представлено описание схемы конфигурационного файла. Корневым является YAML объект.

Поле Описание
address Адрес для прослушивания в формате: Host:Port. Обязательное
logs Путь к директории с протоколами работы. По умолчанию logs
fileCache Путь к директории для хранения временных файлов. По умолчанию file_cache
accessTokens Перечень токенов доступа. Ключ - для кого выдан токен, значение - сам токен доступа. Обязательное
endpoints Глобальные именованные настройки маршрутов (провайдеров) для доступа к моделям.
Используется чтобы не дублировать роуты, ключи доступа, таймауты и прокси в каждой модели, если модели подключаются к одному и тому же удалённому хосту/провайдеру
prompts Специализированные промпты
timeout Таймаут ответа модели, задаваемый в формате Go time.Duration
tokenizer Модель токенизатора. Обязательное.
Доступные значения:
gpt-5
gpt-4
gpt-oss
qwen3
qwen2.5
chunking Параметры для разбиения текста. Обязательное
localRag Настройки для локального RAG. Обязательное
embeddingModel Настройки модели эмбеддингов. Обязательное
models Описание доступных моделей. Обязательное
maxFileSize Максимальный размер файла в байтах. Обязательное
maxFilesSize Максимальный размер всех файлов в байтах. Обязательное

Important

Поле accessTokens должно содержать хотя бы один токен доступа.

Токены доступа рекомендуется генерировать при помощи утилиты командной строки token, находящейся рядом с arti.

Поле endpoints главного объекта конфигурационного файла. YAML объект, в котором ключ - является псевдонимом, а значение YAML объектом, описывающим провайдер, со следующей структурой.

Поле Описание
endpoint Базовый путь провайдера. Обязательное.
Например, http://127.0.0.1:11434/v1 или https://api.deepseek.com
Суффикс v1 нужно указывать здесь явно
apiKey Аутентификационный ключ для провайдера. Обязательное.
⚠️ Ключ относится к чувствительным данным. Не следует передавать файл конфигурации не удалив предварительно все ключи доступа
additionalHeaders Дополнительные http заголовки. Словарь.
Ключ - имя заголовка.
Значение - значение заголовка.
Можно использовать для передачи идентификатора проекта, требуемого Yandex API
timeout Таймаут ответа модели, задаваемый в формате Go time.Duration
ignoreCertErrors Признак, что нужно игнорировать ошибки SSL сертификатов.
⚠️ Рекомендуется устанавливать только в случае наличия такой необходимости, например, при подключении к внутреннему серверу, использующему самоподписанный сертификат
proxy Настройки прокси сервера

Important

Поле apiKey относится к чувствительной информации. В случае необходимости передачи конфигурационного файла рекомендуется очищать или удалять это поле.

Поле endpointsproxy. YAML объект.

Поле Описание
url Адрес прокси сервера в формате: scheme://host:port. Обязательное
user Имя пользователя
password Пароль пользователя

Note

Поля user и password должны быть заданы совместно.

Поле prompts главного объекта конфигурационного файла. YAML объект.

Поле Описание
jsonObject Промпт для структурированного вывода при использовании типов text, json_object

Поле chunking главного объекта конфигурационного файла. YAML объект.

Поле Описание
splitter Тип разделителя текста на фрагменты.
Доступные значения:
chars - разбиение по символам (по умолчанию)
tokens - разбиение по токенам
chunkSize Длина фрагмента текста. Обязательное. Зависит от типа разделителя
chunkOverlap Длина перекрытия фрагмента текста. Обязательное. Зависит от типа разделителя

Поле localRag главного объекта конфигурационного файла. YAML объект.

Поле Описание
disabled Флаг, что локальный RAG не используется. По умолчанию - используется
chunking Параметры для разбиения текста.
Позволяет переопределить глобальные параметры разбиения текста.
retrievalLimit Максимальное количество фрагментов в результатах поиска. Обязательное
retrievalSimilarity Порог, начиная с которого фрагменты считаются подобными искомому запросу в пределах (0.0;1.0). Обязательное

Поле embeddingModel главного объекта конфигурационного файла. YAML объект.

Поле Описание
model Имя модели эмбеддингов в провайдере. Обязательное.
Например, text-embedding-bge-m3
dimension Размер выходного вектора. Обязательное
tokenizer Модель токенизатора.
Позволяет переопределить глобальный токенизатор.
Доступные значения:
gpt-5
gpt-4
gpt-oss
qwen3
qwen2.5
contextLength Размер контекста модели в токенах. Обязательное
chunking Параметры для разбиения текста.
Позволяет переопределить глобальные параметры разбиения текста.
endpoint Имя глобального endpoint-а в endpoints или базовый путь провайдера. Обязательное
apiKey Аутентификационный ключ для провайдера
additionalHeaders Дополнительные http заголовки. Словарь.
Ключ - имя заголовка.
Значение - значение заголовка.
Можно использовать для передачи идентификатора проекта, требуемого Yandex API
timeout Таймаут ответа модели, задаваемый в формате Go time.Duration
ignoreCertErrors Признак, что нужно игнорировать ошибки SSL сертификатов.
⚠️ Рекомендуется устанавливать только в случае наличия такой необходимости, например, при подключении к внутреннему серверу, использующему самоподписанный сертификат
proxy Настройки прокси сервера
prefixes Настройки префиксов для модели эмбеддингов.

Important

При задании в поле endpoint ссылки на глобальный эндпойнт, поля apiKey, ignoreCertErrors, proxy являются не обязательными, иначе - обязательными.

Поле embeddingModelprefixes, YAML объект.

Поле Описание
query Префикс для запроса
document Префикс для документа

Поле models главного объекта конфигурационного файла. YAML список YAML объектов следующей структуры.

Поле Описание
id Уникальный идентификатор модели в arti. Обязательное.
Например, deepseek-r1:8b/local
name Уникальное имя модели, отображаемое пользователю. Обязательное.
Например, DeepSeek R1 8b (local version)
family Название семейства моделей. Обязательное.
Например, DeepSeek
model Имя модели в провайдере. Обязательное.
Например, deepseek-r1:8b
endpoint Имя глобального endpoint-а в endpoints или базовый путь провайдера. Обязательное
systemRole Имя системной роли.
Если не задано, используется developer
structuredOutput Режим получения структурированного вывода (json).
Если не задано, используется text.
Доступные значения:
json_schema - использовать одноимённый формат результата
json_object - использовать системный промпт для генерации json и специальный формат результата
text - использовать системный промпт для генерации json (наиболее общий и универсальный вариант)
function_call - использовать принудительный вызов функции
tool_call - использовать принудительный вызов инструмента с указанием его имени (поддерживается не всеми моделями)
tool_call_required - использовать принудительный вызов инструмента без указания его имени (не такой явный как tool_call)
contextLength Размер контекста модели в токенах. Обязательное
tokenizer Модель токенизатора.
Позволяет переопределить глобальный токенизатор.
Доступные значения:
gpt-5
gpt-4
gpt-oss
qwen3
qwen2.5
capabilities Описание возможностей модели
ocr Признак, что модель используется исключительно для задач OCR
localRag Настройки для локального RAG.
Позволяют изменить глобальные настройки, в том числе и отключить использование RAG для данной модели, если все текстовые файлы требуется передавать модели без изменений
disabled Признак, что модель нужно отключить
prompts Специализированные промпты.
Позволяет переопределить глобальные настройки промптов
maxFileSize Максимальный размер файла в байтах.
Позволяет переопределить глобальные настройки
maxFilesSize Максимальный размер всех файлов в байтах.
Позволяет переопределить глобальные настройки
apiKey Аутентификационный ключ для провайдера
additionalHeaders Дополнительные http заголовки. Словарь.
Ключ - имя заголовка.
Значение - значение заголовка.
Можно использовать для передачи идентификатора проекта, требуемого Yandex API
timeout Таймаут ответа модели, задаваемый в формате Go time.Duration
ignoreCertErrors Признак, что нужно игнорировать ошибки SSL сертификатов.
⚠️ Рекомендуется устанавливать только в случае наличия такой необходимости, например, при подключении к внутреннему серверу, использующему самоподписанный сертификат
proxy Настройки прокси сервера

Important

При задании в поле endpoint ссылки на глобальный эндпойнт, поля apiKey, ignoreCertErrors, proxy являются не обязательными, иначе - обязательными.

Поле modelscapabilities. YAML объект.

Поле Описание
imageInput Признак, что модель поддерживает распознавание изображений
videoInput Признак, что модель поддерживает распознавание видео
audioInput Признак, что модель поддерживает распознавание аудио
imageOutput Признак, что модель поддерживает генерацию изображений

Important

Поддержка текстового ввода для всех моделей подразумевается и поэтому не устанавливается явно.

Следует задавать только актуальные возможности модели.

Пример конфигурационного файла.

# yaml-language-server: $schema=config.schema.json address: "localhost:25137" logs: "logs"

prompts: jsonObject: |- You must format your output as a JSON value that adheres to a given "JSON Schema" instance.

"JSON Schema" is a declarative language that allows you to annotate and validate JSON documents.

For example, the example "JSON Schema" instance {"properties": {"foo": {"description": "a list of test words", "type": "array", "items": {"type": "string"}}}, "required": ["foo"]} would match an object with one required property, "foo". The "type" property specifies "foo" must be an "array", and the "description" property semantically describes it as "a list of test words". The items within "foo" must be strings. Thus, the object {"foo": ["bar", "baz"]} is a well-formatted instance of this example "JSON Schema". The object {"properties": {"foo": ["bar", "baz"]}} is not well-formatted.

Your output will be parsed and type-checked according to the provided schema instance, so make sure all fields in your output match the schema exactly and there are no trailing commas!

Here is the JSON Schema instance your output must adhere to. Include the enclosing markdown codeblock: ```json {{.schema}} ```

timeout: 3m tokenizer: gpt-5 maxFileSize: 10048576 maxFilesSize: 500048576 accessTokens: "local development": здесь_будет_ваш_токен_доступа

endpoints: "ollama": endpoint: "http://127.0.0.1:11434/v1" apiKey: none timeout: 2m

chunking: splitter: chars chunkSize: 4000 chunkOverlap: 200

localRag: retrievalLimit: 5 retrievalSimilarity: 0.55

embeddingModel: model: text-embedding-bge-m3 dimension: 1024 contextLength: 32000 endpoint: "ollama"

models: - id: "deepseek-r1:8b/ollama" name: DeepSeek R1 8b (local) family: DeepSeek model: "deepseek-r1:8b" endpoint: "ollama" systemRole: "system" structuredOutput: json_schema contextLength: 4096

Настройка веб сервера TESSA для работы с arti

Для использования arti из веб сервера TESSA, chronos и tadmin необходимо произвести настройку в конфигурационном файле app.json, которая описана в здесь.

Установка в Windows (IIS)

Для удобства управления рекомендуется устанавливать arti как приложение, работающее под управлением IIS. Этот процесс рассмотрен далее.

Вначале необходимо создать новый не управляемый пул в Пулах приложений IIS.

Пул должен иметь следующие настройки.

Tip

Если требуется, можно использовать другую схему именования.

Для данного пула рекомендуется использовать ту же учётную запись, которая была задана при установке веб-приложения TESSA (как правило, tessa). Для этого необходимо выделить пул и открыть его Дополнительные параметры.

Чтобы установить учётную запись, нужно нажать на кнопку ....

В открывшемся диалоге выбрать пункт Особая учетная запись, далее нажать на кнопку Установить... и в открывшемся окне указать нужную учетную запись (в формате имя домена\имя учетной записи и пароль). В результате требуемая запись будет установлена:

Tip

Вне зависимости от того, какая конкретная учётная запись привязана к пулу, последовательность шагов по настройке останется такой, как описана далее, с той лишь разницей, что необходимо будет использовать имя установленной учётной записи.

Необходимо настроить пул, чтобы он сразу запускал приложения и не останавливал их при простое:

  • параметр Режим запуска должен быть равен AlwaysRunning;
  • параметр Тайм-аут простоя (в минутах) должен быть равен 0;
  • параметр Максимальное число рабочих процессов должен быть равен 1 (по умолчанию).

На этом настройка пула завершена.

Самым простым способом создания приложения arti является копирование соответствующего каталога из архива установки TESSA в целевую директорию, в которой находится директория web (в случае стандартной установки это C:\inetpub\wwwroot\tessa).

Добавление виртуального каталога

Tip

Если директория arti появилась в менеджере IIS в результате предыдущего шага, добавление виртуального каталога пропускается. Далее выполняется преобразование каталога в приложение.

Если директория arti не появилась в менеджере IIS, необходимо добавить ссылку на неё. Выбрать директорию tessa в составе сайта (в данном случае Default Web Site) и в контекстном меню выбрать пункт Добавить виртуальный каталог.

Указать имя виртуального каталога arti и путь, соответствующий директории, который был создан на предыдущем шаге. Применить настройки, нажав на кнопку OK.

Преобразование каталога в приложение

Далее необходимо сделать из каталога приложение. Для этого нужно выбрать каталог и в контекстном меню выбрать пункт Преобразовать в приложение.

В открывшемся диалоге активировать настройку Включить предварительную загрузку и настроить пул приложений на созданный ранее (arti), нажав на кнопку Выбрать.

В появившемся диалоге выбрать нужный пул arti и нажать кнопку OK, чтобы подтвердить выбор.

В исходном окне также нажать кнопку OK.

Проверка конфигурационного файла arti web.config

Файл web.config для arti включен в состав поставки. Он должен выглядеть следующим образом.

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <!-- В атрибуте arguments указываются аргументы командной строки. --> <aspNetCore processPath=".\arti.exe" arguments="-conf config.yaml" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true" requestTimeout="00:10:00" startupTimeLimit="3600" hostingModel="OutOfProcess"> <environmentVariables> <!-- В атрибуте value можно указать номер порта для управляемого IIS приложения. --> <environmentVariable name="ASPNETCORE_PORT" value="20202" /> </environmentVariables> </aspNetCore> </system.webServer> </configuration>

Следует также обратить внимание на следующие моменты.

Аргументы запуска arti настраиваются в узле configurationsystem.webServeraspNetCore, атрибут arguments.

Порт для работы arti под управлением IIS указывается в узле configurationsystem.webServeraspNetCoreenvironmentVariablesenvironmentVariable (name="ASPNETCORE_PORT"), атрибут value.

Установка в Linux

Необходимо скопировать каталог arti из директории linux, расположенной в директории основного дистрибутива, в директорию, в которой расположен веб-сервис TESSA. Если выполнялись пункты стандартной инструкции, то базовый путь /home/tessa/tessa/.

В архиве сборки выполните скрипт linux/init.sh, как указано в инструкции, или добавьте разрешение на исполняемый файл arti вручную. Для этого необходимо перейти в директорию arti в директории назначения и выполнить команду:

sudo chmod 755 arti

Данная команда устанавливает флаг “Исполняемый” для файла arti.

Important

arti необходимо настроить для той же системы управления сервисами, для которой настроена TESSA.

Для Calculate Linux используйте подраздел System-V, для всех остальных описанных дистрибутивов подойдёт System-D.

Чтобы определить систему управления сервисами, используется команда:

sudo stat /sbin/init

При необходимости, следует обратиться к документации используемой операционной системы и доступных на ней команд.

Настройка службы для systemd

Рассмотрим, как настроить службу arti для системы управления службами systemd.

В директории /etc/systemd/system/ создать файл arti.service со следующим содержимым:

[Unit] Description=Arti - platform web service for AI interaction

[Service] WorkingDirectory=/home/tessa/tessa/arti ExecStart=/home/tessa/tessa/arti/arti -conf config.yaml Restart=always RestartSec=10 SyslogIdentifier=arti User=tessa

[Install] WantedBy=multi-user.target

Important

Переменные файла конфигурации User, WorkingDirectory, ExecStart зависят от установки arti. В случае необходимости запуска от другого пользователя, необходимо указать его имя в User. В случае установки arti в директорию, отличную от /home/tessa/tessa/, необходимо изменить переменные WorkingDirectory, ExecStart таким образом, чтобы они соответствовали директории установки arti.

Настроить автозапуск сервиса arti и запустить его, выполнив команду:

sudo systemctl enable arti

Tip

Здесь arti соответствует имени сервиса arti.service без расширения .service.

Управление сервисом.

  • Запуск:

    sudo systemctl start arti

  • Останов:

    sudo systemctl stop arti

  • Перезапуск:

    sudo systemctl restart arti

  • Получение сведений о текущем состоянии:

    sudo systemctl status arti

Настройка службы для systemv

Рассмотрим, как настроить службу arti для системы управления службами systemv.

Необходимо перейти в директорию /etc/init.d/ и создать в ней файл arti следующего содержимого:

#!/bin/sh ### BEGIN INIT INFO # Provides: arti - platform web service for AI interaction # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Stop/start arti ### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

if [ -L $0 ]; then SCRIPTNAME=`/bin/readlink -f $0` else SCRIPTNAME=$0 fi

NAME="arti" DAEMONUSER="tessa" DAEMONDIR="/home/$DAEMONUSER/tessa/arti" DAEMON="$DAEMONDIR/arti" DAEMON_ARGS="-conf config.yaml" LOGDIR="/home/$DAEMONUSER/tessa/logs/" LOGFILE="$LOGDIR/arti.log" PIDFILE="/var/run/arti.pid"

# Exit if the package is not installed [ -x "$DAEMON" ] || exit 0

. /lib/init/vars.sh

. /lib/lsb/init-functions

do_start() { log_daemon_msg "Starging system $NAME daemon" su - $DAEMONUSER -c "mkdir -p '$LOGDIR'" su - $DAEMONUSER -c "rm -f '$LOGFILE'" start-stop-daemon --start --name "$NAME" --user $DAEMONUSER \ --background --make-pidfile --pidfile "$PIDFILE" \ --stdout "$LOGFILE" --stderr "$LOGFILE" \ --chdir "$DAEMONDIR" \ --exec "$DAEMON" -- $DAEMON_ARGS RETVAL="$?" log_end_msg $? return "$RETVAL" }

do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred log_daemon_msg "Stopping system $NAME daemon" start-stop-daemon --stop --quiet --oknodo --retry=5 --pidfile "$PIDFILE" RETVAL="$?" log_daemon_msg $? rm -f $PIDFILE return "$RETVAL" }

case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting " "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping " "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; restart) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; status) status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" && exit 0 || exit $? ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2 exit 3 ;; esac

exit $RETVAL

Tip

Для создания и редактирования файла допускается использовать команду sudo nano /etc/init.d/arti, или команду вызова другого текстового редактора от имени пользователя с повышенными привилегиями.

Important

Переменные скрипта DAEMONUSER, DAEMONDIR, LOGDIR зависят от установки arti. В случае необходимости запуска от другого пользователя необходимо указать его имя в DAEMONUSER. В случае установки arti в директорию, отличную от /home/$DAEMONUSER/tessa/, изменить переменные DAEMONDIR, LOGDIR таким образом, чтобы они соответствовали директории установки arti.

Important

Необходимо ознакомиться с документацией start-stop-daemon для вашей операционной системы. В некоторых версиях вместо двух аргументов --stdout и --stderr используется один --output. В этом случае нужно скорректировать соответствующую часть функции do_start (--stdout "$LOGFILE" --stderr "$LOGFILE" заменить на --output "$LOGFILE").

Необходимо задать права на исполнение данного сервиса.

sudo chmod 755 /etc/init.d/arti

Добавление сервиса в автозапуск.

  • Наиболее надёжный способ:

    sudo ln -s /etc/init.d/arti /etc/rc0.d/S01arti

  • Если доступна команда chkconfig:

    sudo chkconfig --add /etc/init.d/arti

  • Если доступна команда update-rc.d:

    sudo update-rc.d arti defaults

  • Если доступна команда rc-update:

    sudo rc-update add arti default

Управление сервисом.

  • Запуск:

    sudo service arti start

  • Останов:

    sudo service arti stop

  • Перезапуск:

    sudo service arti restart

  • Получение сведений о текущем состоянии:

    sudo service arti status

Описание REST API

Important

Самое актуальное описание предоставляемого REST API содержится в файле arti.openapi.yaml, входящем в поставку arti.

  • Общие маршруты:
    • GET /hcheck - проверка работоспособности;
    • GET /check - проверка доступа к моделям ИИ.
  • Маршруты работы с моделями ИИ:
    • GET /v1/models - получить список доступных моделей;
    • POST /v1/chat - генерация ответа ИИ по чату сообщений;
    • POST /v1/recognize - распознавание изображения.
    • POST /v1/embeddings - получение векторного представления для заданного входного значения.

GET /hcheck проверка работоспособности

Возвращает текстовый ответ с состоянием работоспособности приложения.

Ответы

Код Формат Описание
200 text/plain Текущее состояние работы

При нормальном выполнении выводится одна из строк:

  • Healthy - компонент работоспособен, нормальная работа;
  • Unhealthy - компонент не работоспособен, требуется перезапуск.

Tip

Необходимо использовать этот маршрут для проверок работоспособности компонента типа health check в среде, в которой запускается сервис arti. Например, systemd в ОС Linux или Docker.

GET /check проверка доступа к моделям ИИ

Возвращает общую диагностическую информацию о доступных моделях и их состоянии.

Ответы

Код Формат Описание
200 text/plain Диагностическая информация о моделях

GET /v1/models получение списка доступных моделей

Возвращает список доступных моделей и их возможностей.

Ответы

Код Формат Описание
200 application/json JSON массив с информацией о доступных моделях
404 plain/text Ответ при неудачной авторизации

При нормальном выполнении выводится JSON массив объектов со следующей структурой:

Поле Описание
id Идентификатор модели, передаваемый в запросах к модели
family Название семейства моделей, к которому относится модель
name Уникальное название модели, отображаемое пользователю
ocr Признак, что модель используется исключительно для целей OCR
capabilities Массив строк, описывающих возможности модели

POST /v1/chat взаимодействие с ИИ на основе чата

Взаимодействие с моделями генеративного ИИ по протоколу чата.

Запрос

Мультипарт

Поле Описание
request Сообщения чата
files Файлы вложений чата, если есть

Запрос является JSON объектом следующей структуры.

Поле Описание
model Идентификатор модели. Один из возвращаемых роутом /v1/models
messages Список сообщений, составляющий чат. Запросы пользователя и ответы ИИ
local_rag Флаг, нужно ли принудительно включить или выключить локальный RAG для данного запроса.
Если не задано, используются настройки модели
instructions Системное сообщение, добавляемое первым в контекст модели, задающее руководящие инструкции для использования моделью
json_schema Описание JSON схемы, согласно которой должна ответить модель
temperature Какую температуру использовать при генерации ответа. Значения из отрезка [0.0;2.0]
top_p Альтернатива указания температуры, называемая выборкой ядра, где модель учитывает результаты токенов с вероятностью массы top_p

Сообщение чата является JSON объектом следующей структуры.

Поле Описание
content Массив объектов, текстовых и файловых частей сообщения
role Имя роли. Поддерживаются:
user - сообщение пользователя
assistant - сообщение ИИ
name Опциональное имя участника чата

Текстовая часть сообщения является JSON объектом следующей структуры.

Поле Описание
type Тип части сообщения. Для тестовой части всегда text
text Текст части сообщения

Файловая часть сообщения является JSON объектом следующей структуры.

Поле Описание
type Тип части сообщения. Для файловой части всегда file
name Имя файла
id Уникальный идентификатор файла. Должен соответствовать идентификатору приложенного файла в multipart
fileType Тип файла. Поддерживаются:
text - текстовый файл
image - изображение
url Ссылка на файл, как на доступный извне ресурс. Только для изображений

Описание JSON схемы является JSON объектом следующей структуры.

Поле Описание
description Описание того, для чего используется формат
name Имя схемы
schema Описание JSON схемы

Ответы

Код Формат Описание
200 application/json JSON объект ответа модели
400 plain/text Ответ при ошибках запроса
404 plain/text Ответ при неудачной авторизации

В случае нормального выполнения, формируется ответ в виде JSON объекта следующей структуры.

Поле Описание
model Идентификатор модели. Один из возвращаемых роутом /models
created Время создания ответа в UTC
messages Массив строк. Сгенерированные моделью ответы. В большинстве случаев 1.
error Сообщение об ошибке
usage Статистика по использованным токенам

Статистика по использованным токенам является JSON объектом следующей структуры.

Поле Описание
prompt Количество входных токенов
completion Количество сгенерированных токенов
total Общее количество токенов

POST /v1/recognize взаимодействие с ИИ для анализа изображений

Взаимодействие с моделями ИИ для целей анализа изображения.

Запрос

Мультипарт

Поле Описание
request Запрос на распознавание данных
file Контент файла из запроса

Запрос является JSON объектом следующей структуры.

Поле Описание
model Идентификатор модели с поддержкой видения. Один из возвращаемых роутом /v1/models
name Имя файла
fileType Тип файла. Должен быть image
question Вопрос к модели по файлу
temperature Какую температуру использовать при генерации ответа. Значения из отрезка [0.0;2.0]
top_p Альтернатива указания температуры, называемая выборкой ядра, где модель учитывает результаты токенов с вероятностью массы top_p

Ответы

Код Формат Описание
200 application/json JSON объект с ответом модели
400 plain/text Ответ при ошибках запроса
404 plain/text Ответ при неудачной авторизации

В случае нормального выполнения, формируется ответ в виде JSON объекта следующей структуры.

Поле Описание
name Имя файла
text Распознанный текст
usage Статистика по использованным токенам

Статистика по использованным токенам является JSON объектом следующей структуры.

Поле Описание
prompt Количество входных токенов
completion Количество сгенерированных токенов
total Общее количество токенов

POST /v1/embeddings взаимодействие с ИИ для создания числовых векторов

Взаимодействие с моделями ИИ для создания числового векторного представления для входного значения.

Запрос

Запрос является JSON объектом следующей структуры.

Поле Описание
input Входной текст для генерации векторного представления, представленный в виде строки или массива строк
kind Вид входного значения. Может быть "query" или "document"

Ответы

Код Формат Описание
200 application/json JSON объект с ответом модели
400 plain/text Ответ при ошибках запроса
404 plain/text Ответ при неудачной авторизации

В случае нормального выполнения, формируется ответ в виде JSON объекта следующей структуры.

Поле Описание
data Массив числовых векторов, сгенерированных моделью
chunks Опциональный набор фрагментов (чанков), для которого были вычислены числовые вектора
usage Статистика по использованным токенам

Массив числовых векторов является JSON объектом следующей структуры.

Поле Описание
index Индекс вектора в массиве числовых векторов
embedding Числовой вектор, представляющий собой список чисел с плавающей запятой. Длина вектора зависит от модели

Статистика по использованным токенам является JSON объектом следующей структуры.

Поле Описание
prompt Количество входных токенов
completion Количество сгенерированных токенов
total Общее количество токенов
Back to top