Модель решений (decide)
Страница описывает инструмент decide и модель Jev для типизированных вопросов о тексте или JSON. Он возвращает вероятности вместо текста и подходит для классификации, оценки и да/нет.
Инструмент decide задаёт модели решений (Jev, модель System One от TypeSafe AI) типизированные вопросы о фрагменте текста или JSON. Он возвращает вероятности, а не текст, за доли секунды и за доли цента. Доступен только если пользователь включил его в Настройки > ИИ > Модель решений (Jev).
Когда использовать
| Задача | Что использовать |
|---|---|
| Разложить 150 писем по 6 папкам | decide с items и одним вопросом choice |
| Каждый тикет связан с биллингом? | decide с items и одним вопросом noul |
| Оценить ответы поддержки по 4-уровневой шкале | decide с вопросом score |
| Выбрать, какой из 30 сохранённых поисковых запросов соответствует запросу | decide с вопросом choice (варианты = поисковые запросы) |
| Создавать резюме, извлекать поля, составлять текст, объяснять | call_llm — Jev не может генерировать текст |
Практическое правило: если ответ — один из фиксированного набора вариантов, уровень или да/нет, используйте decide. Если ответ — слова, используйте call_llm.
Типы вопросов
{
"state": "My running shoes arrived in the wrong size. Can I swap them for a size 10?",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"returns": "Exchanges, wrong or damaged items",
"shipping": "Delivery status, delays, lost packages",
"billing": "Charges, invoices, payment problems",
"other": "None of the above"
}
},
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm, just stating facts", "Frustrated but civil", "Very angry or threatening to leave"]
},
"wants_human": {
"type": "noul",
"instructions": "Is the customer asking for a human agent?"
}
}
}Формат ответа:
{
"model": "jev-1.13.0",
"answers": {
"department": { "type": "choice", "choice": "returns", "confidence": 0.93, "probabilities": { "returns": 0.95, "shipping": 0.03, "billing": 0.01, "other": 0.01 } },
"frustration": { "type": "score", "score": 0.31, "confidence": 0.62, "probabilities": { "0": 0.72, "1": 0.25, "2": 0.03 } },
"wants_human": { "type": "noul", "noul": 0.04 }
},
"usage": { "inputTokens": 340, "outputTokens": 30 },
"latencyMs": 210
}- choice —
criteria— объект «ключ варианта → описание одним предложением» (2–255 вариантов). Если ключ сам за себя говорит, используйтеnullв качестве описания.choice— наиболее вероятный вариант; суммаprobabilitiesравна 1. - score —
criteria— упорядоченный массив описаний уровней, от наименьшего (2–10).score— ожидаемый уровень (0 …levels-1),probabilitiesиндексируются по номеру уровня. Описывайте уровни как ситуации («сломано, но есть обходной путь»), а не прилагательными («умеренно»). - noul — вероятность «да/нет». Необязательный
criteria: { "true": "...", "false": "..." }уточняет вопрос.
Поле instructions может быть предложением или небольшим объектом, например { "question": "...", "focus": "..." }. Лучше всего работает английский язык. Типы вопросов можно свободно смешивать; не более 20 вопросов за вызов.
Пакетный режим
Передавайте items (до 200 строк или объектов) вместо state. Каждый элемент оценивается по тем же вопросам, результаты сохраняют исходный порядок:
{
"items": ["Invoice #4411 is wrong", "Where is my package?", "Cancel my account"],
"questions": { "topic": { "type": "choice", "instructions": "Topic?", "criteria": { "billing": null, "shipping": null, "account": null, "other": null } } }
}{
"total": 3, "succeeded": 3, "failed": 0,
"results": [
{ "index": 0, "preview": "Invoice #4411 is wrong", "answers": { "topic": { "type": "choice", "choice": "billing", "confidence": 0.97, "probabilities": { "...": 0 } } } },
{ "index": 1, "preview": "Where is my package?", "answers": { "...": 0 } }
]
}Для элементов, которые не удалось обработать, вместо answers возвращается строка error; остальные результаты остаются пригодными. Если оценка зависит от контекста (критерии, политика), передавайте этот контекст одинаково для каждого элемента как поле объекта.
Как читать ответы
confidence(0–1) показывает, насколько вероятности сконцентрированы. Ниже 0.5 модель не уверена — сообщите об этом, спросите пользователя или переключитесь наcall_llm. Не действуйте наугад.- Подбирайте пороги
noulв зависимости от последствий: 0.5, если действия для «да» и «нет» равноценны по стоимости; 0.8 и выше, если ложное «да» дорого; диапазон 0.2–0.8 можно считать «нужен человек», когда это важно. - Всегда добавляйте вариант
other/unclear, если категории не исчерпывающие, — иначе модель будет вынуждена выбрать неверный вариант. - Ответ никогда не является разрешением. Перед действием перепроверьте (существует ли выбранная папка, действительно ли элемент соответствует тому, что предположила модель). Выбор и авторизация — разные вещи.
Ограничения и стоимость
state: только текст или JSON, обрезается примерно на 96 КБ (около 32 тыс. токенов); изображения не поддерживаются.- Скорость: примерно 0,1–0,5 с на вызов; в пакетном режиме обрабатывается по 8 элементов одновременно.
- Стоимость: тарификация провайдером пользователя за входной токен (примерно $0,04 за миллион токенов на TypeSafe/OpenRouter); выходные токены не тарифицируются.
Конфиденциальность
Передаваемые state/items отправляются провайдеру, настроенному пользователем (TypeSafe AI, OpenRouter, Vercel AI Gateway, локальный сервер Laya или собственный Jev-совместимый сервер). При использовании Laya модель работает на машине пользователя, и данные не покидают её; английская контрольная точка читает около 512 токенов state, поэтому локальные state должны быть короткими. Не включайте секреты, учётные данные или содержимое файлов, которые не должны покидать машину. Каждый вызов записывается в ~/.aikraft-agents/logs/decisions.jsonl вместе с вопросами, вероятностями и хешем state — но никогда не с самим текстом state.
Нужен такой агент в вашей компании?
Устанавливаем под ключ: настройка на компьютерах сотрудников, единый аккаунт, интеграция с 1С и внутренними системами, обучение команды. Подробнее о внедрении →