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>]
Обязательные аргументы
| Параметр | Синтаксис | Описание |
|---|---|---|
model | model="<model_name>" | Имя языковой модели, зарегистрированной в registry. |
output | output="<field>[,<field>]" | Имя или список через запятую output-полей результата. |
Опциональные аргументы
| Параметр | Синтаксис | По умолчанию | Описание |
|---|---|---|---|
mode | mode=summary или mode=per_row | summary | Режим обработки: summary — весь контекст сводится в одну строку результата; per_row — каждая строка обогащается output-полями. |
preset | preset=<preset_name> | Имя пресета с предзаданными параметрами. Явные аргументы в команде перекрывают значения пресета. | |
system_message | system_message="<text>" | Системная инструкция модели. | |
user_message | user_message="<text>" | Пользовательская инструкция модели. | |
input | input="<field>[,<field>]" или input="*" | * | Поля строк, передаваемые как контекст. * — все поля. |
temperature | temperature=<number> | Температура генерации. | |
max_tokens | max_tokens=<int> | Лимит токенов в ответе. | |
max_prompt_tokens | max_prompt_tokens=<int> | 60000 | Лимит токенов prompt. |
timeout | timeout=<int> | Берется из sme.ai.timeout | Таймаут запроса к провайдеру, мс. |
Пресеты настраиваются в интерфейсе системы. Параметры из пресета применяются как значения по умолчанию; явные аргументы в команде перекрывают значения пресета.
Режимы обработки
summary (по умолчанию)
Трансформирует весь набор строк в один результат:
- Выполняется один LLM-вызов на весь контекст
- Возвращается одна строка результата
- В результирующей строке присутствуют только поля из
output - Для нескольких
output-полей ожидается JSON-объект в ответе модели
per_row
Обогащает каждую исходную строку output-полями:
- Выполняется один LLM-вызов для всех строк
- Ожидается ответ с результатом для каждой строки
- В результирующих строках сохраняются исходные поля и добавляются поля из
output - Если
inputограничивает контекст, в prompt попадают только указанные поля, но итоговые строки берутся из исходных и обогащаютсяoutput-полями
Системные настройки
Настройки хранятся в _cluster/settings. Ниже представлена таблица с настройками команды ai и их значениями по умолчанию.
| Название | Описание | Значение по умолчанию |
|---|---|---|
sme.ai.inference_server_url | Base 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