Перейти к содержимому
Jev | typesafeAPI & Playground
…

Концепции

Концепции и примитивы Jev

Собираете под этот сайт? Начните с руководства по hosted API и prepaid-цен. Эта страница объясняет Choice / Score / Noul и фоновые варианты доступа — не основной путь создать ключ jv_live_.

Это слой концепций: примитивы, контекст цен и заметки по реализации. Для копируемых вызовов нашего metered endpoint см. руководство по старту и документацию hosted API.

Как получить доступ

Самый быстрый путь на этом сайте: войти, купить небольшой prepaid-пакет, создать ключ jv_live_, затем POST на /api/v1/decide. Upstream-ключи TypeSafe остаются на наших серверах. Официальный waitlist и сторонние шлюзы — опционально, если нужны сырые учётные данные TypeSafe.

Варианты доступа

  1. Hosted на этом сайте (рекомендуется для быстрого старта): Цены + Аккаунт — prepaid-токены и ключи jv_live_ для /api/v1/decide и tools.
  2. Официальные / gateway-альтернативы: waitlist TypeSafe на typesafe.ai, плюс OpenRouter, Vercel AI Gateway и Cloudflare AI, если вы уже биллитесь через эти платформы.

Важное ограничение: Нет скачиваемого файла модели. Нельзя self-host Jev локально. Вся инференция — в облаке (этот хост, TypeSafe или gateway).

Заметка о ценах

Опубликованная карта TypeSafe: вход примерно $0.042 за миллион токенов. Выходные токены бесплатны на этой карте. Розничные пакеты этого сайта — на Pricing (часто выше из‑за хостинга).

Prepaid-пакеты и live-metering на этом хосте — см. Pricing. Наценки gateway могут оставаться, если вы зовёте upstream в другом месте.

Три ключевых примитива Jev

Запросы Jev строятся из трёх примитивных типов вопросов. Каждый запрос отправляет state (входной контекст или данные программы) плюс список типизированных вопросов. Jev возвращает структурированные типизированные результаты с калиброванными вероятностями.

  1. Choice: Выберите один ответ из вашего списка опций. Типично для маршрутизации агентов и классификации.
  2. Score: Вернуть градуированную числовую позицию на шкале или рубрике. Типично для риск-скоринга и оценки серьёзности.
  3. Noul: Вернуть вероятность суждения да/нет. Типично для модерационных гейтов и простых булевых фильтров.

Краткие определения также в глоссарии.

Установка

Официальный npm/pip-пакет Jev не обязателен для вызова decide. Для live-примеров предпочитайте наш hosted-гайд. Минимальный HTTP POST работает на любом языке. Node.js 18+ может использовать встроенный fetch. Для Python установите широко используемый requests:

terminal
pip install requests

На этом сайте создайте ключ jv_live_ в Account. Не выдумывайте имена пакетов вроде @typesafe/jev-sdk.

env.sh
# Store keys outside source control
export JEV_API_KEY="YOUR_API_KEY"
# Or, when calling through OpenRouter:
# export OPENROUTER_API_KEY="YOUR_OPENROUTER_KEY"

Минимальный полный API request JSON

Hosted endpoint ниже: POST https://jevtypesafe.org/api/v1/decide. Для интерактивного теста и вкладок curl/Python/TypeScript откройте API-гайд.

request.json
{
  "state": "Customer message: my order has not arrived",
  "questions": {
    "ticket_routing": {
      "type": "choice",
      "options": ["support", "logistics", "billing"]
    },
    "is_urgent": {
      "type": "noul"
    },
    "severity_level": {
      "type": "score",
      "criteria": ["calm", "frustrated", "angry"]
    }
  }
}

Копируемые примеры API

Community HTTP-примеры против decide API этого сайта. Замените JEV_API_KEY на ключ jv_live_ из Account. Полный гайд: /docs/api.

Node.js

call-jev.mjs
// Minimal raw API call — hosted decide on this site
// Replace with a jv_live_ key from Account
async function callJev() {
  const apiKey = process.env.JEV_API_KEY;

  const payload = {
    state: "Customer message: my order has not arrived",
    questions: {
      ticket_routing: {
        type: "choice",
        instructions: "Route this ticket",
        criteria: { support: "product help", logistics: "shipping", billing: "payment" },
      },
    },
  };

  const res = await fetch("https://jevtypesafe.org/api/v1/decide", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${apiKey}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
  });

  if (!res.ok) {
    throw new Error(`Jev request failed: ${res.status}`);
  }

  return res.json();
}

Python

call_jev.py
# Minimal raw API call — hosted decide on this site
# Requires: pip install requests
# Replace with a jv_live_ key from Account
import os
import requests

def call_jev():
    api_key = os.environ["JEV_API_KEY"]
    payload = {
        "state": "Customer message: my order has not arrived",
        "questions": {
            "ticket_routing": {
                "type": "choice",
                "instructions": "Route this ticket",
                "criteria": {"support": "product help", "logistics": "shipping", "billing": "payment"},
            }
        },
    }
    response = requests.post(
        "https://jevtypesafe.org/api/v1/decide",
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json",
        },
        json=payload,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()

Лучшие практики

  1. Храните API-ключи в переменных окружения, не выставляйте на фронтенде (кроме намеренного browser key tester).
  2. Добавляйте кэш запросов для повторяющихся решений, чтобы снизить вызовы и стоимость.
  3. Добавляйте retry при временных сетевых сбоях.
  4. Валидируйте все входные схемы до отправки в модель.
  5. Предпочитайте Choice / Score / Noul свободным текстовым промптам, когда нужна автоматизация.

Заметки по реализации

Кэшируйте по identity решения, не по сырому тексту промпта

Хэшируйте набор вопросов плюс нормализованные поля state. Если два запроса — одно и то же routing-решение, переиспользуйте прежний результат. Особенно полезно на горячих путях вроде модерационного скоринга и выбора инструментов.

Fail closed при несовпадении схемы

Если ответ не совпадает с ожидаемой схемой решения, не тихо coerce'ьте в ветку по умолчанию. Логируйте инцидент, возвращайте безопасный fallback и алертите.

Держите генеративные LLM за гейтом решений

Сначала вызывайте Jev. Чат-модель — только когда маршрут известен. См. продакшен-сценарии для конкретных примеров.

Концепции Jev | Choice, Score, Noul и System One