jev-latest
Модель решений от TypeSafe: не пишет текст, а отвечает на типизированные вопросы о тексте или JSON — выбор варианта, оценка по шкале или «да/нет» с вероятностями. Подходит для маршрутизации, сортировки обращений, модерации и скоринга; все вопросы одного запроса оцениваются параллельно.
О модели
Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.
Jev — флагманская модель TypeSafe и первая модель нового класса System One. Она не пишет текст, а быстро принимает решения, которые программа может сразу использовать: вы передаёте состояние (state) — текст или JSON — и набор вопросов, а в ответ получаете типизированные значения с откалиброванными вероятностями.
Языковые модели пишут слова для людей, а Jev, по словам TypeSafe, ближе к коду: ответ сразу в нужной коду форме, высокая скорость и ни одного значения вне заданных вариантов. Модель задумана так, чтобы давать устойчивые ответы при повторных запросах.
Чем System One отличается от языковой модели
- Не генерирует. Jev не пишет ответы пользователю, не пишет код и не объясняет ход рассуждений. Возможные ответы задаёте вы — через один из трёх типов вопросов.
- Обучена на откалиброванные решения. TypeSafe обучает модель методом RLCD (Reinforcement Learning for Calibrated Decisions): вероятности подгоняются под реальные исходы и отражают неуверенность. Среди многих ответов с вероятностью 0,8 верными должны оказаться примерно 80%. Калибровка — свойство большой выборки, а не гарантия правильности отдельного ответа.
- Другая цель обучения. Чат-модели учат нравиться людям (RLHF), и, по наблюдению TypeSafe, это поощряет угодливость и уверенно звучащие ошибки. Один из соавторов RLHF, Диогу Алмейда, — сооснователь TypeSafe.
Название отсылает к «Системе 1» из книги Даниэля Канемана «Думай медленно… решай быстро»: быстрое интуитивное суждение против медленного обдуманного мышления «Системы 2». Jev создана для быстрых узких суждений.
Три типа вопросов
Вопрос — одно суждение о состоянии, ответ — значение, которое код сравнивает с порогом, сортирует или передаёт дальше.
- Choice — выбор варианта. Отдел для обращения, категория товара, язык фрагмента кода. Варианты — словарь «вариант → описание», до 255 штук. В ответе — выбранный
choice, вероятностиprobabilitiesпо всем вариантам (в сумме 1) и уверенностьconfidence. Если список может не покрыть все случаи, добавьте «другое» или «ничего из перечисленного». - Score — оценка по шкале. Место на упорядоченной шкале, которую описываете вы: серьёзность ошибки, раздражение клиента, уровень навыка. От 2 до 10 уровней, от низшего к высшему; каждый уровень модель оценивает отдельно, не видя его номера и соседей. В ответе —
score(сумма номеров уровней, умноженных на их вероятности, поэтому значение может лечь между уровнями),legendс описаниями уровней,probabilitiesиconfidence. - Noul — да или нет. Верно ли утверждение. Ответ
noul— вероятность «да» от 0 до 1: около 1 — уверенное «да», около 0 — уверенное «нет», около 0,5 — модель колеблется. Отдельногоconfidenceнет: одно число описывает ответ полностью. Необязательныйcriteriaуточняет, что считать «да» и что — «нет».
Как выбрать: известные варианты без порядка — choice; ступени спектра — score; чистое «да/нет», где важна сама вероятность, — noul. Noul 0,5 — равные шансы «да» и «нет», а не «средний уровень»: степень измеряет score. Из двух подходящих типов берите тот, по которому код действует сразу: choice — ветки, score — порог, noul — if.
Типы можно смешивать в одном запросе. Ответ всегда ограничен вашими вариантами и не зависит от других вопросов: вопросы можно добавлять и убирать, не меняя остальных ответов.
Состояние
Состояние — то, что модель оценивает: сообщение клиента, фрагмент документа, запись из базы или состояние вашего приложения.
- Строка — когда текст один: сообщение, статья, отрывок.
- Объект — именованные поля, связанные записи, состояние приложения. TypeSafe советует объект для большинства запросов: у каждой части есть понятное имя.
- Массив — последовательность сообщений или записей.
Готовьте его как материалы для экспертов: переписку, заказ и правила возврата кладите вместе, если решение требует их сравнить. Содержание держите в состоянии, суждения — в вопросах. Если вопрос касается одной части состояния, назовите в нём путь к ней в обратных кавычках, например ticket.messages[0].text.
Как задавать вопросы
- Одно быстрое суждение на вопрос. Хороший вопрос — тот, на который знающий человек с нужным контекстом ответит за секунду: «Есть ли в сообщении срочность?». «Проанализируй сообщение и реши, что делать» — уже медленное рассуждение, его надо разбить на простые вопросы.
- Вопрос целиком — в
instructions. Ключ вопроса, напримерrefund_requested, нужен только вашему коду и модели не передаётся. - Все вопросы к одному состоянию — одним запросом. Модель оценивает их параллельно: по данным TypeSafe, лишние вопросы почти не увеличивают время ответа и стоят только своих токенов. Вопрос «на всякий случай» обходится почти даром — код сам решит, какие ответы нужны.
- Сложное суждение — по частям. Вместо «оцени заявку стартапа» спросите отдельно о размере рынка, технической реализуемости и отличиях от конкурентов, а итог посчитайте в коде с весами. Поменялись приоритеты — меняете веса, а не переписываете вопрос.
- Зависимые вопросы — вторым запросом. Ответы одного запроса не служат контекстом друг другу. Второй запрос нужен, только если без первого ответа его не собрать: надо подгрузить данные или выбрать варианты следующего вопроса.
- Длинный вопрос — объектом.
instructionsиcriteriaобычно строки, но бывают объектом или массивом: вопрос в одном поле, данные — в других. Так удобно сверять резюме с записями базы одним вопросом.
Уверенность
У choice и score confidence от 0 до 1 показывает, насколько вероятность сосредоточена на одном ответе: 1 — вся на одном варианте, 0 — поровну на всех. У score соседний уровень снижает уверенность меньше далёкого. У noul уверенность — само значение: чем дальше от 0,5, тем твёрже ответ.
TypeSafe советует три диапазона:
- Высокая уверенность — действуйте автоматически.
- Средняя — действуйте осторожно, например попросите пользователя подтвердить.
- Низкая — отдайте случай человеку, уточните запрос или подключите запасной путь, например более мощную модель с рассуждением.
Чем дороже ошибка, тем строже порог: для необратимых действий — выше, чем для чтения. Ответ говорит, что выбрать, а уверенность — стоит ли действовать. Пороги подбирайте на своих данных, сравнивая уверенность с точностью.
Как строить систему вокруг Jev
Jev рассчитана не на агентов, которые сами выбирают следующий шаг и на каждом круге могут сбиться, а на программы, где процессом управляет код, а модель отвечает на узкие смысловые вопросы. Восемь шагов проектирования по TypeSafe:
- Всё, что можно сделать кодом, делайте кодом — надёжно и дёшево.
- В состояние — только то, что нужно текущим вопросам; свежие факты — из своей базы знаний, а не из памяти модели.
- Структура в состоянии: вложенный JSON, а в вопросе — путь к нужному полю в обратных кавычках, если так меньше двусмысленности.
- Самые узкие и конкретные вопросы — по словам TypeSafe, пожалуй, главное правило: широкий вопрос прячет несколько суждений за одним ответом.
- Структура в вопросах: сам вопрос короткий; пояснения, примеры и значения из вашей базы — в соседних полях объекта
instructionsилиcriteria, а не в одной длинной строке. - Много независимых вопросов к одному состоянию в одном запросе — больше пользы на каждый доллар.
- Ответы объединяет код: правилами, взвешенной суммой или как признаки для классической модели машинного обучения.
- Ветвление по уверенности: неуверенные случаи — человеку или модели с рассуждением.
Jev — не чат и не модель для автодополнения кода, и в агент для программирования её вместо языковой модели не подставить. Зато агент может написать для вас код, который вызывает Jev там, где нужен быстрый откалиброванный ответ.
Где применяют
- Фоновая автоматизация — решения, которые запускают миллион раз без человека рядом.
- Реальное время — по данным TypeSafe, большинство запросов выполняется примерно за 100 мс: хватает для обработки на лету и интерфейсов.
- Большие данные — поиск по огромным корпусам, разметка журналов работы агентов, признаки для прогнозов.
- Проверка других моделей — запросы, извлечения, рассуждения, вызовы инструментов: обход ограничений, ошибки цитирования, выдумки.
- Поиск и ранжирование — релевантность пары «запрос — кандидат», переранжирование, отбор контекста.
- Развилка по намерению — чего хочет пользователь и какой обработчик нужен: простая логика, профильная модель или человек; тема, сложность и риск решают, какой языковой модели отдать запрос.
- Защитные проверки — вход, выход и вызовы инструментов языковой модели: внедрённые инструкции, нарушения правил, утечка личных данных.
- Поддержка — тема и намерение обращения, срочность, раздражение, риск ухода, просьба о возврате, очередь.
- Модерация — по правилам вашей площадки: токсичность, травля, спам, мошенничество, опасные советы, личные данные; по серьёзности и уверенности — пропустить, предупредить, проверить или заблокировать.
- Отрасли — страховые случаи, финансовые расследования и KYC, договоры и реклама, карточки товаров, подбор персонала, лиды, игры, риски, прогноз спроса, графы знаний, научные обзоры, смысловые проверки кода в CI.
Характеристики
jev-latest— псевдоним последней стабильной версии, сейчас Jev 1.13; ответившая версия — в полеmodel, напримерjev-1.13.0. С новой версией псевдоним переходит на неё, и ответы могут измениться без правок с вашей стороны — следите за этим полем, если пороги подобраны под версию.- Контекст — 64K токенов на запрос: состояние и все вопросы вместе; состояние с самым длинным вопросом — до 32K. Состояние модель читает один раз и проверяет против него все вопросы параллельно.
- Вход — только текст: строка, объект JSON или массив текстов. Картинки, аудио и видео пока не поддерживаются — переведите их в текст заранее.
- Язык — основной язык обучения английский, на нём точность сейчас выше всего. Другие языки, в том числе китайский, японский и корейский, модель принимает, но точность ниже — проверьте на своих данных.
- Цены и расчёт в Ailoot API — условия зависят от выбранного метода и указаны в его карточке.
- Настройка — Jev не дообучают на данных заказчика: свои материалы — в
state, правила предметной области — вinstructionsиcriteria. - Данные — TypeSafe сообщает, что Jev не обучают на запросах и ответах клиентов.
Известные слабые места Jev 1.13
TypeSafe открыто перечисляет слабые места текущей версии и обещает многое исправить в следующих. Модель быстрая, откалиброванная и хорошо судит со здравым смыслом, но:
- Читает буквально. Отвечает на написанный вопрос, а не на подразумеваемый: оговорки, отрицания и неявные условия понимает дословно. Пишите точное условие и граничные случаи в
criteria; неизбежную трактовку разбейте на два буквальных вопроса. - Не калькулятор. Подсчёт символов, повторов и элементов списка ненадёжен, ошибка растёт с размером — считайте в коде, по вопросу на кандидата. Цвета в hex или RGB модель понимает хуже названий.
scoreгодится для порога, но не для точного числа между уровнями. - Даты и время. Какая дата раньше, сколько между ними, попадает ли дата в период — ненадёжно, особенно при смешанных форматах и относительных датах. Части даты извлекайте через choice (с вариантом «не указано»), сравнивайте в коде.
- Косвенность. Двойные отрицания и вопросы о свойстве свойства снижают точность. Пишите прямо, называйте части состояния по имени.
- Лишнее в состоянии. Посторонний текст снижает точность. Фильтруйте в коде, а если нельзя — отсейте нерелевантное вопросами noul.
- Враждебный текст. Подвохов в состоянии модель по умолчанию не ждёт: внедрённая инструкция или текст, который спорит о собственной классификации, может сдвинуть ответ. Пишите точные критерии и проверяйте пограничные случаи до запуска.
- Противоречия. Если
instructionsиcriteriaпросят разного — например, у noul «да» описано как «нет», — точность падает. Критерии — продолжение вопроса. - Порядок вариантов. Иногда модель тяготеет к первому варианту choice. Переставьте варианты и проверьте, что ответ не меняется.
- Генерация. Jev не обучена писать текст. Для извлечения данных найдите кандидатов регулярным выражением или генеративной моделью, а Jev пусть выберет верный через choice.
Ailoot · System One POST /v1/systemone jev-latest
jev-latestНачало
Модель решений от TypeSafe: не пишет текст, а отвечает на типизированные вопросы о тексте или JSON — выбор варианта, оценка по шкале или «да/нет» с вероятностями. Подходит для маршрутизации, сортировки обращений, модерации и скоринга; все вопросы одного запроса оцениваются параллельно.
- Допустимые входные данные
- Текст
- Результаты
- structured
Доступно в Ailoot · входные данные и методы
Ailoot · System One POST /v1/systemone
- Входные данные
text- Результат
structured- Контекст
- 64 000 tokens
- Выходной формат
- json
| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
|---|---|---|---|---|
Полеmodel | Типstring | ТребованиеОбязательно | Значения и ограничения jev-latest | По умолчанию— |
Полеstate | Типstring|object|array | ТребованиеОбязательно | Значения и ограничения | По умолчанию— |
Полеquestions | Типobject | ТребованиеОбязательно | Значения и ограничения Минимум полей объекта: 1 | По умолчанию— |
Полеquestions.<id>.type | Типstring | ТребованиеОбязательно | Значения и ограничения noul, choice, score | По умолчанию— |
Полеquestions.<id>.instructions | Типstring|object|array|null | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |
Полеquestions.<id>.criteria | Типobject|array|null | ТребованиеНеобязательно | Значения и ограничения Условия: noul: необязательные описания true/false с допустимым null; choice: объект критериев; score: непустой массив критериев | По умолчанию— |
Полеstream | Типboolean|null | ТребованиеНеобязательно | Значения и ограничения false, null | По умолчанию— |
Сочетания входных материалов
noul · Обязательно: state, questions.<id>.type=noul
choice · Обязательно: state, questions.<id>.type=choice, criteria object
score · Обязательно: state, questions.<id>.type=score, nonemptycriteriaarray
Параметры и жизненный цикл метода
| Параметр | Контракт |
|---|---|
Параметрmaterial_types | Контрактtext |
Параметрrequired | Контрактmodel, state, questions |
Параметрoptional_controls | Контрактnull |
Параметрcontent_type | Контрактapplication/json |
Жизненный цикл: exact retained published method
Структуры методов и ID указаны точно; возможности поставщика рассматриваются отдельно от допуска.
Тарифы
Ставки методов Ailoot
POST /v1/systemone- Вход
- ≈0,000084 $ / 1K
- Выход
- 0,00 $ / 1K
Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →
Примеры запросов
Ailoot · System One
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 customer message}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "jev-latest", "state": "", "questions": {"is_urgent": {"type": "noul", "instructions": "Does the supplied customer message express urgency?"}}}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["state"]=text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
Получить и сохранить результаты
Ailoot · System One
json
Сохраняйте все готовые результаты
Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.
Сохраняйте каждый ответ вместе с переданным ID вопроса, вероятностью и легендой; формула уверенности с n требует n>1, но это не означает, что API задаёт минимальное количество вариантов.
Поля ответа
| Поле | Тип |
|---|---|
Полеanswers.<id>.type | Типstring |
Полеanswers.<id>.noul | Типnumber |
Полеanswers.<id>.choice | Типstring |
Полеanswers.<id>.score | Типnumber |
Полеanswers.<id>.confidence | Типnumber |
Полеanswers.<id>.probabilities | Типobject |
Полеanswers.<id>.legend | Типobject |
Полеusage | Типobject |
Ошибки и дальнейшие шаги
| Ответ | Условие | Следующий шаг |
|---|---|---|
Ответ400 · invalid_request_error | УсловиеНеверные обязательные поля, представление материалов или значение параметра | Следующий шагИсправьте указанные поля перед новым запросом на создание. |
Псевдонимы
Псевдонимы моделей
Ailoot jev-latest
Псевдонимы путей метода
Используйте пути методов, указанные выше.
Связанные ID для вызова
FAQ · jev-latest
- Какие входные данные и результаты доступны?
POST /v1/systemone·jev-latest:text→structured- Какие поля использует запрос?
POST /v1/systemone·jev-latest:model,state,questions,stream- Какие ограничения действуют?
POST /v1/systemone·jev-latest:ctx:64000