AiKraft
Главная/Документация/Справочник агента/Модель решений (decide)
Справочник агента

Модель решений (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.

Типы вопросов

terminaljson
{
  "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?"
    }
  }
}

Формат ответа:

terminaljson
{
  "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. Каждый элемент оценивается по тем же вопросам, результаты сохраняют исходный порядок:

terminaljson
{
  "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 } } }
}
terminaljson
{
  "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С и внутренними системами, обучение команды. Подробнее о внедрении →