Перейти к основному содержимому
Версия: 6.0

ai

Описание

Выполняет запрос к внешней языковой модели. Выполняет запрос к внешней языковой модели.

Обратите внимание!

Для работы команды требуется настроенный сервис sm-ai.

Синтаксис

... | ai model="<model>" output="<field>[,<field>]" [mode=summary|per_row] [preset=<preset>] [system_message="<text>"] [user_message="<text>"] [input="<field>[,<field>]"|"*"] [temperature=<number>] [max_tokens=<int>] [max_prompt_tokens=<int>] [timeout=<int>]

Обязательные аргументы

ПараметрСинтаксисОписание
modelmodel="<model_name>"Имя языковой модели, зарегистрированной в registry.
outputoutput="<field>[,<field>]"Имя или список через запятую output-полей результата.

Опциональные аргументы

ПараметрСинтаксисПо умолчаниюОписание
modemode=summary или mode=per_rowsummaryРежим обработки: summary — весь контекст сводится в одну строку результата; per_row — каждая строка обогащается output-полями.
presetpreset=<preset_name>Имя пресета с предзаданными параметрами. Явные аргументы в команде перекрывают значения пресета.
system_messagesystem_message="<text>"Системная инструкция модели.
user_messageuser_message="<text>"Пользовательская инструкция модели.
inputinput="<field>[,<field>]" или input="*"*Поля строк, передаваемые как контекст. * — все поля.
temperaturetemperature=<number>Температура генерации.
max_tokensmax_tokens=<int>Лимит токенов в ответе.
max_prompt_tokensmax_prompt_tokens=<int>60000Лимит токенов prompt.
timeouttimeout=<int>Берется из sme.ai.timeoutТаймаут запроса к провайдеру, мс.
к сведению

Пресеты настраиваются в интерфейсе системы. Параметры из пресета применяются как значения по умолчанию; явные аргументы в команде перекрывают значения пресета.


Режимы обработки

summary (по умолчанию)

Трансформирует весь набор строк в один результат:

  1. Выполняется один LLM-вызов на весь контекст
  2. Возвращается одна строка результата
  3. В результирующей строке присутствуют только поля из output
  4. Для нескольких output-полей ожидается JSON-объект в ответе модели

per_row

Обогащает каждую исходную строку output-полями:

  1. Выполняется один LLM-вызов для всех строк
  2. Ожидается ответ с результатом для каждой строки
  3. В результирующих строках сохраняются исходные поля и добавляются поля из output
  4. Если input ограничивает контекст, в prompt попадают только указанные поля, но итоговые строки берутся из исходных и обогащаются output-полями

Системные настройки

Настройки хранятся в _cluster/settings. Ниже представлена таблица с настройками команды ai и их значениями по умолчанию.

НазваниеОписаниеЗначение по умолчанию
sme.ai.inference_server_urlBase URL инференс-сервиса.https://localhost
sme.ai.inference_server_portПорт инференс-сервиса.8010
sme.ai.timeoutТаймаут запроса к инференс-сервису, мс.300000

Примеры запросов

Пример 1

Минимальный summary — анализ трассы k8s.

source k8s_otel_traces
| search traceId="6955d7042d2182d3be9a840e15bbb3ee"
| ai model="gpt-oss-20b" user_message="Что не так в этой трассе" output="summary"

Результат (одна строка):

[
{"summary": "В трассировке ошибка подключения к adservice."}
]

Пример 2

per_row с несколькими output-полями — семантический поиск с обогащением строк.

source soc_events_prod
| semanticsearch
vector_field="event_embedding"
query="Признаки lateral movement через удаленный запуск команд и кражу credential"
model_id="zXjJepwBnjnQtEv1MFtK"
| ai
model="gpt-oss-20b"
mode=per_row
input="host.name,user.name,message"
user_message="Для каждой строки верни risk, type, reason"
output="risk,type,reason"

Результат (строки обогащены новыми полями):

[
{
"host.name": "srv-1",
"user.name": "admin",
"message": "wmic remote process create",
"risk": "high",
"type": "lateral_movement",
"reason": "Удаленный запуск процесса через WMI."
},
{
"host.name": "srv-2",
"user.name": "svc",
"message": "normal login",
"risk": "low",
"type": "benign_activity",
"reason": "Признаков атаки не обнаружено."
}
]

Пример 3

С пресетом — использование предзаданных параметров с переопределением user_message.

source soc_events_prod
| ai preset=my_preset output="summary" mode=summary user_message="Как исправить проблему"

Пример 4

С явными лимитами.

source k8s_otel_traces
| ai model="gpt-oss-20b" output="summary" max_prompt_tokens=5000 max_tokens=700 timeout=600000