모든 통합통합 · SDK

Jev TypeScript 빠른 시작

Jev는 TypeScript에 자연스럽게 맞습니다: 원하는 형태를 선언하면 타입 지정된 채로 돌려받습니다. 전체 경로는 이게 전부입니다 — 설치, 키, 동작 예제, 그리고 세 가지 프리미티브 — 코드 외에 읽을 것이 없습니다.

모든 예제에는 jv_live_ key가 필요합니다. pricing 페이지에서 하나 받아 JEV_API_KEY로 내보내면 준비 완료입니다. 키 받기 →

이미 TypeScript에서 Jev를 쓰려 한다면, 당신이 원하는 건 TypeScript가 다른 모든 곳에서 주는 것과 같은 것입니다: 계약. 필요한 결정을 선언하고 — 이 key들 중 choice, 이 스케일의 score, 보정된 yes/no — 정확히 그 형태를 돌려받습니다. 파싱해야 할 엉뚱한 문단도, 가끔 깨지는 JSON도 없습니다. 그것이 "type-safe" AI 호출의 요지이며, Jev가 원시 LLM 주위에 쓰는 방어적 파싱 없이 타입 지정 코드베이스에 들어맞는 이유입니다.

1. 설치

npm i @typesafe-ai/sdk

2. 키 설정

pricing 페이지에서 jv_live_ key를 받아 환경 변수에 넣으세요. SDK가 자동으로 읽으므로 민감한 정보가 소스에 들어가지 않습니다.

export TYPESAFE_API_KEY=jv_live_...

3. 30줄 동작 예제

한 번의 호출, 두 개의 타입 지정 답변 — 라우팅에 쓸 choice와 임계값을 걸 수 있는 보정된 yes/no:

import { TypeSafe } from "@typesafe-ai/sdk";

const client = new TypeSafe(); // reads TYPESAFE_API_KEY

const resp = await client.systemOne({
  model: "jev-latest",
  state: "Customer: I was charged twice and I am furious.",
  questions: {
    topic: {
      type: "choice",
      instructions: "What is the issue about?",
      criteria: { billing: "money problems", bug: "broken product" },
    },
    urgent: {
      type: "noul",
      instructions: "Escalate to a human now?",
    },
  },
});

// typed, calibrated — branch on it directly
if (resp.answers.urgent.noul > 0.7) escalate(ticket);
routeTo(resp.answers.topic.choice); // "billing" | "bug"

출력 파싱도, 스키마 검증도, 깨진 JSON 재시도도 없다는 점에 주목하세요. resp.answers.topic.choice는 모델이 다른 걸 반환할 수 없으므로 당신의 criteria key 중 하나이고, resp.answers.urgent.noul은 0과 1 사이의 숫자입니다. 그게 바로 타입 계약이 하는 일입니다.

세 가지 프리미티브

한 번의 호출에서 여러 개를 함께 물어볼 수 있습니다 — 위 예제는 두 개를 묻습니다 — 각각 독립적으로 타입 지정되어 돌아옵니다. 이렇게 왕복이 줄어듭니다: 한 요청으로 같은 입력을 분류·채점·게이트할 수 있습니다.

보정에 관한 참고

Jev가 반환하는 확률은 보정되어 있습니다. 즉 많은 호출에 걸쳐 0.8은 약 80%의 비율로 맞아야 합니다 — 다만 보정은 전체의 속성이지 개별 답변에 대한 보장이 아닙니다. 그러니 원시 숫자가 "충분히 확신한다"고 단정하지 말고 당신의 라벨링된 데이터에 대해 임계값을 설정하세요. 호스팅되고 버전이 고정된 모델의 장점은, 일단 임계값을 튜닝하면 배포를 넘나들어도 의미를 유지하고 발밑에서 흔들리지 않는다는 점입니다.

SDK 없이 하고 싶다면?

POST 한 번입니다 — fetch와 Bearer key로 게이트를 직접 호출하세요:

const r = await fetch("https://jevtypesafeai.com/api/v1/decide", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${process.env.JEV_API_KEY}`,
  },
  body: JSON.stringify({ state, questions }),
});
const { answers } = await r.json();

배치, 즉시 사용 가능한 endpoints, 또는 전체 필드 레퍼런스가 필요한가요? docs가 전체 표면을 다룹니다.

자주 묻는 질문

TypeScript에서 Jev를 쓰려면 TypeSafe SDK가 필요한가요?

아니요. SDK는 얇은 편의 래퍼일 뿐입니다. Jev는 POST 한 번이라 순수 fetch와 Bearer key로 호출할 수 있습니다. SDK는 타입 지정 헬퍼를 제공하고 환경에서 키를 읽어줄 뿐입니다.

Jev의 출력은 정말 type-safe한가요?

네 — choice 질문은 당신이 정의한 criteria key 중 하나만 반환하고, score는 당신의 스케일의 숫자를 반환합니다. 모델은 무효한 타입을 낼 수 없으므로, 원시 LLM 주위에 쓰는 방어적 파싱을 생략할 수 있습니다.

TypeScript에서 Jev를 호출하는 것과 LLM을 호출하는 것은 어떻게 다른가요?

LLM은 자유 텍스트(또는 검증하고 때로 재시도해야 하는 JSON)를 반환합니다. Jev는 70–500ms 안에 타입 지정·보정된 값 — key, 숫자, 또는 확률 — 을 반환하므로 바로 분기할 수 있습니다. 쓸 때는 LLM을, 결정할 때는 Jev를.

Jev 호출 비용은?

결정당 약 $0.001. 과금은 입력 토큰만, 100만당 약 $0.42이고 출력은 무료 — 그래서 한 번의 호출에서 여러 질문을 해도 저렴합니다.

한 요청에서 여러 질문을 할 수 있나요?

네. questions 맵에 여러 항목을 넘기면 각각 resp.answers 안에서 독립적으로 타입 지정되어 돌아오므로 왕복 한 번으로 끝납니다.

함께 보기: API 문서 & 레퍼런스 · API 사용법 · Jev vs LLM

연결하기 전에 Jev를 먼저 사용해 보세요

브라우저에서 진짜 타입 지정 결정을 실행하세요 — 무료, 가입 불필요 — 그런 다음 위 예제에 당신의 키를 넣으세요.

▶ Jev 무료로 사용해 보기API 키 받기 →
Jev TypeScript 빠른 시작 — 30줄로 타입 지정 결정 · Jev by TypeSafe AI