Независимый справочник и сообщество для разработчиков
Официальная информация о Jev: typesafe.ai

Попробовать Jev бесплатно

Задайте один вопрос или три разных вопроса об одной ситуации. Выберите пример, измените входные данные и изучите каждый структурированный ответ.

Изучить проекты на GitHub Варианты использования
01 / Выберите решение

Начните с конкретного примера

typesafe/jev-1.13

Проверяйте по одному типу ответа за раз. Каждый запуск расходует одну попытку из дневного лимита.

1. Choice
questions.decision
Предпросмотр запроса API

Предпросмотр не содержит ключ API и токен проверки. Каждому имени вопроса соответствует ответ с тем же именем.

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "За подписку с меня сняли дважды. Можете ли вы помочь?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "Какая команда должна с этим справиться?",
      "criteria": {
        "billing": "Платежи и возвраты",
        "technical": "Ошибки и интеграции",
        "general": "Другие обращения"
      }
    }
  }
}

Для одного аккаунта доступно 6 бесплатных попыток в сутки по UTC; лимит обновляется в 00:00 UTC. На сайте также действует общий дневной лимит. Ввод отправляется в OpenRouter; мы сохраняем данные об использовании, но не сам текст.

02 / Прочитайте ответ

Можно запускать

Запустите пример, чтобы получить ответ на каждый вопрос: Choice выбирает вариант, Score определяет положение на шкале, а Probability возвращает значение от 0 до 1.

Как интегрировать

Добавьте Jev в свой код.

Форма отправляет ваш текст как state.input вместе с одним или тремя вопросами с именами. Каждый результат находится в answers.<question_id>.

Что означает каждое поле

Запрос определяет форматы вопросов и ответов. Ответ возвращает результат для каждого из них. Вот поля JSON, используемые в примере.

Поля запроса

model
Идентификатор модели. В примере зафиксирована версия Jev 1.13, поэтому используемая версия указана явно.
state
Текст или структурированные данные для оценки, например сообщение службы поддержки.
questions
Набор решений с заданными именами. Эти же имена используются в поле answers ответа.
<question_id>
Имя, например action или urgency; ответ использует то же имя.
type
Формат ответа: choice выбирает вариант, score оценивает по упорядоченной шкале, а noul отвечает на вопрос «да/нет».
instructions
Конкретное суждение, которое вы хотите, чтобы модель вынесла.
criteria
Допустимые варианты Choice, уровни шкалы Score или значение false и true для Noul.

Поля ответа

answers
Один результат на вопрос, возвращаемый под тем же именем.
choice
Ключ варианта, выбранного полем choice: вариант с наибольшей вероятностью.
probabilities
Вероятность каждого варианта выбора; сумма этих значений равна 1.
confidence
Отдельный показатель уверенности, рассчитанный по распределению вероятностей; это не вероятность выбранного варианта.
score
Позиция на упорядоченной шкале с учётом вероятностей; она может лежать между двумя уровнями.
legend
Соответствие числовых позиций Score заданным вами уровням и их описаниям.
noul
Число от 0 (нет) до 1 (да) для ответа на вопрос «да/нет».

Один контекст и три независимых вопроса: Choice, Score и Probability. Каждый запуск расходует одну попытку из дневного лимита. Ответ правильного формата всё равно может быть ошибочным. Тестируйте репрезентативные случаи и задавайте пороги маршрутизации для своего процесса.

Эндпоинт

OpenRouter

Здесь Jev вызывается через OpenRouter с указанием конкретной версии. Актуальную цену и доступность смотрите на странице модели.

Эндпоинт
POST https://openrouter.ai/api/alpha/decisions
model
typesafe/jev-1.13
Ключ API
Отправляйте ключ API с сервера в виде Bearer-токена.
OpenRouter ↗
Официальный прямой API

TypeSafe

У TypeSafe есть собственный адрес API и собственные ключи. В официальном кратком руководстве используется jev-latest и показано, как отправить несколько вопросов одним запросом.

Official published price
$0.042per 1M input tokens

Output tokens are free.

Eligible accounts may receive promotional credits. TypeSafe does not publish a fixed amount on its public pages; check the console for your balance and terms.

Эндпоинт
POST https://api.typesafe.ai/v1/systemone
model
jev-latest
Ключ API
Отправляйте ключ API с сервера в виде Bearer-токена.
LangChain · Python

Jev в контуре управления агентом LangChain

Контур управляет вызовами модели и инструментов. В точке принятия решения Jev анализирует сообщение, планируемый вызов инструмента или состояние агента и возвращает типизированный ответ. Следующий шаг определяет ваш код; открытые задачи остаются за чат-моделью.

ModelRouterMiddlewarebefore_agent → wrap_model_call

Перед запуском классифицируйте последнее сообщение пользователя, выберите модель и используйте её на протяжении всего запуска. Выбор, вероятности и уверенность остаются доступны в состоянии агента.

AutoModeMiddlewarewrap_tool_call

Проверяйте выбранный вызов инструмента до выполнения. Если Jev обнаружит риск или недостаточные полномочия, промежуточный обработчик заблокирует вызов и вернёт ToolMessage с ошибкой. Запроса на одобрение человеком не будет.

TypeSafeClassifierChoice · Score · Noul

Свои проверки можно добавить в пользовательский промежуточный обработчик: передавайте сообщения или состояние агента в TypeSafeClassifier и используйте Choice, Score или Noul для ветвления кода либо передачи сомнительных случаев на проверку.

LangChain · Python · ModelRouterMiddleware
# pip install "langchain-typesafe[experimental]" langchain-openai
# Set TYPESAFE_API_KEY and OPENAI_API_KEY on your server.
from langchain.agents import create_agent
from langchain_typesafe.experimental.middleware import (
    ModelChoice, ModelRouterMiddleware,
)

router = ModelRouterMiddleware(
    choices={
        "fast": ModelChoice(
            model="openai:gpt-5.6-terra",
            criteria="Simple lookups and extraction.",
        ),
        "powerful": ModelChoice(
            model="openai:gpt-6-astra",
            criteria="Complex reasoning and high-stakes decisions.",
        ),
    },
    instructions="Choose the least costly model that can do the task safely.",
)
agent = create_agent("openai:gpt-5.6-terra", middleware=[router])
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize this log."}]})
print(result["model_route"].choice)

TypeScript на стороне сервера

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
Прочитайте ответ

Три типа вопросов и три формата ответа

Выберите формат ответа, нужный вашему коду. Если задать несколько вопросов, каждый получит отдельный результат под своим именем.

TypeSafe: Choice · Score · Noul ↗

Choice

choice · probabilities · confidence

Ключ варианта, выбранного полем choice: вариант с наибольшей вероятностью.

Score

score · legend · probabilities · confidence

Позиция на упорядоченной шкале с учётом вероятностей; она может лежать между двумя уровнями.

Noul

noul

Число от 0 (нет) до 1 (да) для ответа на вопрос «да/нет».

Прежде чем использовать его в производстве

Перед использованием в продакшене протестируйте модель на репрезентативных обращениях, зафиксируйте версию и отправляйте неопределённые или критичные случаи на проверку человеку. Значение 0,8 приведено только как пример.

Новости сообщества

Следите за экосистемой Jev удобным способом.

Узнавайте о новых проектах, моделях System One от сообщества и практических сценариях из частых открытых обновлений или редкой редакционной рассылки.

Частые открытые обновления

Jev AI Radar

Открытая коллекция, которую разработчики, скрипты и ИИ-агенты могут читать, повторно использовать и отслеживать во времени.

Поставить звезду на GitHub
Редкая редакционная подборка

Рассылка

Время от времени будем присылать подборку сообщества: популярные проекты на GitHub, полезные примеры кода и практические сценарии использования Jev.

Подписываясь, вы соглашаетесь иногда получать письма от Jev AI Dev.