Jev 사용법: TypeSafe AI 판단 모델을 바이브코딩 앱에 붙이는 기준
개발

Jev 사용법: TypeSafe AI 판단 모델을 바이브코딩 앱에 붙이는 기준

블로그로 돌아가기

TypeSafe AI의 System One 판단 모델 Jev가 무엇을 돌려주는지, 문의 분류·환불 요청 분류·LLM 출력 검증 같은 판단 단계에 어떻게 붙이는지 공식 문서 기준으로 정리합니다. Next.js 라우트 핸들러 예제, 가격과 컨텍스트 한도, 한국어와 산술·날짜 같은 공식 약점, LLM과 나눠 쓰는 기준을 함께 다룹니다.

AX Specialist 김지우JevTypeSafe AISystem One바이브코딩OpenRouterNext.js문의 분류

Jev는 TypeSafe AI가 2026년 9월 15일 얼리 액세스로 공개한 판단 전용 모델입니다. 문장을 생성하지 않고 미리 정한 선택지, 점수, 참거짓 확률을 돌려주며 선택지와 점수에는 신뢰도가 붙습니다. TypeSafe 공식 문서와 OpenRouter·Vercel 모델 페이지(2026-10-17 확인)를 기준으로 바이브코딩 앱의 어디에 Jev를 넣을지 정리합니다.

핵심 요약

  • Jev는 상태(state)와 타입이 정해진 질문(questions)을 받아 질문마다 구조화된 답을 돌려줍니다. 텍스트 생성, 코드 작성, 대화는 하지 않습니다.
  • 질문 유형은 Choice(선택지 중 하나), Score(순서 있는 등급), Noul(참일 확률 0~1)이 기본이고 이미지 영역을 찾는 Box는 실험 기능입니다.
  • 입력 100만 토큰당 0.042달러이고 출력 토큰은 과금하지 않습니다(TypeSafe Models 문서).
  • 공식 문서는 영어 정확도가 가장 높고 한국어를 포함한 CJK는 그보다 낮다고 적습니다. 한국어 문의에는 자기 데이터로 먼저 시험합니다.
  • 산술, 날짜 비교, 개수 세기, 이중 부정은 공식 문서가 적은 약점입니다. 환불 금액과 기간 계산은 코드에 둡니다.

Jev가 하는 일

TypeSafe는 Jev를 첫 번째 System One 모델이라고 부릅니다. 이름은 카너먼의 빠르고 직관적인 사고(System 1)에서 왔습니다. 요청 하나에 상태와 여러 질문을 보내면 각 질문을 같은 상태에 대해 병렬로, 서로 독립적으로 평가합니다.

질문 유형묻는 것응답 필드제한(공식 문서)
Choice선택지 중 어느 것인가choice, probabilities, confidence선택지 최대 255개
Score순서 있는 등급 중 어디인가score, legend, probabilities, confidence등급 2~10개
Noul이 문장이 참인가noul(0~1)confidence 없음
Box(실험)이미지 안의 위치box의 네 변 좌표jev-1.14 전용

confidence는 확률 분포에서 계산한 값입니다. Choice라면 1위 선택지 확률이 균등 분배(1/n)보다 얼마나 높은지를 0~1로 나타냅니다. Noul은 0.5에 가까울수록 모델이 확신하지 못한다는 뜻입니다. 문서는 높으면 자동 처리, 중간이면 확인, 낮으면 사람 검토로 나누고 기준값은 작업 위험도별로 정하라고 안내합니다.

입력은 문자열, JSON 객체, 텍스트 배열입니다. 이미지는 TypeSafe-Danger-Zone-Images: true 헤더가 필요한 실험 기능이고 PNG·JPEG만 받습니다. 10월 14일 블로그는 이미지와 긴 컨텍스트를 운영용으로 보증하지 않는다고 밝혔습니다.

바이브코딩 앱 활용처

System One 개념 문서에는 환불 요청 흐름이 예시로 나옵니다. 고객 메시지, 거래 내역, 환불 정책을 상태로 만들고 "환불을 요청했는가", "중복 결제를 뜻하는 근거가 있는가", "정책상 환불 대상인가"를 따로 물은 뒤 코드의 결정적 검사와 합쳐 처리나 검토로 보내는 구조입니다.

앱 안의 판단 단계질문 구성코드에 남길 것
문의 분류와 라우팅Choice(담당 큐) + Score(긴급도)신뢰도 미달 시 사람 검토
결제·환불 요청 분류Noul(환불 요청, 중복 결제 주장)금액, 결제 횟수, 청약철회 기간
사용자 콘텐츠 검수Noul 여러 개(욕설, 스팸, 개인정보)차단·보류 임계값, 이의 제기
LLM 출력 검증Noul(근거 문서가 주장을 뒷받침하는가)실패 시 더 큰 모델로 재생성

결제 단계에서 Jev는 "무슨 요청인가"만 판단하고, 승인이나 환불 같은 돈이 움직이는 호출은 서버 코드가 PG 조회 결과를 확인한 뒤 수행합니다. 결제 경로는 바이브코딩 결제 연동 가이드에, 점검 항목은 AI가 짠 결제 코드 점검표에 정리했습니다.

Jev는 코딩 에이전트의 LLM을 대신하지 않습니다. 공식 문서는 Claude Code 같은 에이전트가 Jev 호출 코드를 짜게 하라고 안내하며, 이를 위한 스킬은 claude plugin install typesafe@typesafe-ai(마켓플레이스 typesafe-ai/skills 추가 후)로 설치합니다.

호출 경로와 Next.js 예제

경로엔드포인트·모델 ID키비고
TypeSafe 직접https://api.typesafe.ai/v1/systemone, jev-1.13.0·jev-1.14.0TypeSafe 콘솔 키공식 SDK 기본 경로
OpenRouterhttps://openrouter.ai/api/v1/systemone, typesafe/jev-1.14·typesafe/jev-1.13OpenRouter 키같은 요청 형식, 응답에 usage.cost 추가
Vercel AI Gatewaytypesafe-ai/jev, typesafe-ai/jev-1.14.0AI Gateway 키예제는 AI SDK experimental_decide, 참거짓 타입 이름이 boolean

공식 SDK @typesafe-ai/sdk(0.7.0)는 Node.js 22 이상에서 돌고, apiKey·baseURL·defaultModel을 생략하면 TYPESAFE_API_KEY, TYPESAFE_BASE_URL, TYPESAFE_DEFAULT_MODEL 환경변수를 읽습니다. 브라우저 사용은 dangerouslyAllowBrowser 기본값 false로 막혀 있습니다. 아래 예제는 SDK 0.7.0으로 tsc --strict를 통과했습니다.

// app/api/support/triage/route.ts
import { APIError, choice, noul, TypeSafeClient } from "@typesafe-ai/sdk";

const client = new TypeSafeClient({
  apiKey: process.env.TYPESAFE_API_KEY, // 서버 전용 env
  defaultModel: process.env.TYPESAFE_MODEL ?? "jev-1.13.0", // 버전 고정
});

export async function POST(request: Request) {
  const { message } = (await request.json()) as { message: string };

  try {
    const { model, answers } = await client.systemOne({
      // 사용자 입력은 state에만 둔다
      state: { customer_message: message },
      questions: {
        category: choice("Which queue should handle `customer_message`?", {
          refund: "Asks for money back or cancels a paid order",
          payment_failure: "Payment did not go through",
          technical: "Bugs, login, or app errors",
          other: "None of the above",
        }),
        claims_duplicate: noul(
          "Does `customer_message` say the customer was charged more than once?",
        ),
      },
    });

    const c = answers.category;
    return Response.json({
      model,
      route: c.confidence < 0.6 ? "human_review" : c.choice,
      confidence: c.confidence,
      claimsDuplicate: answers.claims_duplicate.noul,
    });
  } catch (err) {
    // 판단이 실패해도 문의 접수는 막지 않는다
    console.error("triage failed", err instanceof APIError ? err.status : 0);
    return Response.json({ route: "human_review" });
  }
}

코드의 규칙은 네 가지입니다.

  1. 모델은 버전 ID로 고정합니다. Models 문서는 2026-10-17 기준 jev-latest가 jev-1.13.0을, jev-preview가 jev-1.14.0을 가리킨다고 적고, 10월 14일 블로그는 jev-latest를 1주일 뒤 1.14.0으로 옮긴다고 예고했습니다. OpenRouter의 ~typesafe/jev-latest는 이미 1.14를 가리킵니다. 문서는 신뢰도 기준값을 특정 버전에 맞췄다면 버전 ID를 보내라고 권합니다.
  2. 사용자 문장은 state에만 넣고 instructions·criteria는 코드에서 정합니다. jaggedness 문서는 상태 안의 주입 문구가 답을 움직일 수 있다고 적습니다.
  3. 중복 결제 사실은 PG 조회로 확정합니다. Jev는 "고객의 주장 여부"까지만 답합니다. 0.6은 예시값입니다.
  4. OpenRouter로 바꿀 때는 apiKey에 OpenRouter 키, baseURL에 https://openrouter.ai/api, 모델에 typesafe/jev-1.13 같은 OpenRouter ID를 넣습니다.

SDK는 429와 529(과부하)를 기본 재시도하고 시도당 타임아웃은 기본 10,000ms입니다. 문의 원문이 미국 서비스로 가므로 처리방침의 국외 이전 항목도 확인합니다. Models 문서는 고객 요청·응답으로 학습하지 않는다고 적고 데이터 무보관(ZDR)은 엔터프라이즈 대상으로 안내합니다. 콘솔 조직 설정의 모델 개선 옵트인을 켜면 TypeSafe가 입출력을 읽을 수 있으므로(10월 14일 블로그) 꺼져 있는지 확인합니다.

비용 구조

TypeSafe 출시 글의 워크플로 4개 평균 정확도와 비용 비교 차트
TypeSafe 자체 워크플로 평가(출시 블로그). 가로축은 워크플로당 비용(로그), 세로축은 정확도입니다.

Models 문서(2026-10-17 확인)에 따르면 입력은 100만 토큰당 0.042달러(10억 토큰당 42달러)로 jev-1.13과 1.14가 같고 출력은 과금하지 않습니다. OpenRouter도 같고 Vercel은 0.04달러/M으로 반올림해 표시합니다.

기본 컨텍스트는 요청 전체 64k, 질문 하나(상태 포함) 32k 토큰입니다. TypeSafe-Danger-Zone-Long-Context: true 헤더를 붙이면 둘 다 262k가 되며 단가는 같지만 더 느리고 덜 정확하다고 적혀 있습니다. OpenRouter가 표시하는 262,144토큰은 이 긴 컨텍스트 기준이고, OpenRouter 가이드는 약 32,000바이트를 넘는 텍스트와 이미지 요청을 긴 컨텍스트 모드로 처리한다고 밝힙니다. 같은 문의의 질문은 요청 하나에 모읍니다.

속도와 비용 배수는 TypeSafe AI 발표 기준입니다. 소개 블로그는 응답 시간 70500ms, 같은 System One 작업에서 LLM보다 40200배 빠르다고 적었습니다. 홈페이지의 "193.6배 빠름, 444.6배 저렴"은 자체 워크플로 평가 수치이며, 블로그는 이를 실제 효과의 상한에 가까운 수치로 봅니다. 측정 위치가 미국 서부라 한국 지연 시간은 따로 잽니다.

한계와 대응

공식 jaggedness 문서(jev-1.13 기준, 2026-10-02 검토)의 항목입니다.

공식 문서의 약점대응
문자 그대로 읽기, 부정·범위 표현조건을 정확히 쓰고 경계 사례를 criteria에 적음
산술, 개수 세기계산은 코드, 개수는 항목별 Noul을 코드에서 합산
날짜 비교, 기간 판정연·월·일을 Choice로 추출하고 비교는 코드
여러 단계의 간접 참조질문을 쪼개고 상태 필드 이름을 직접 지목
관련 없는 내용이 많은 상태코드에서 걸러 필요한 필드만 전달
Choice 선택지 순서 영향순서를 바꿔 답이 같은지 확인

Models 문서의 언어 지원 항목에 따르면 영어가 주 학습 언어이고 CJK를 포함한 다른 언어는 처리하지만 정확도가 같지 않으므로 자기 데이터로 시험하고 신뢰도를 주의해서 보라고 적혀 있습니다. 10월 14일 블로그는 jev-1.14의 가장 큰 개선을 다국어 지원으로 예상했습니다. 한국어 정확도 수치는 공식 문서에서 확인하지 못했습니다(2026-10-17 확인).

LLM과 나눠 쓰는 기준

상황Jev생성형 LLM코드
답의 범위가 정해짐(큐, 등급, 예·아니오)적합파싱·검증 필요규칙이 명확하면 코드
답장, 요약, 설명문불가적합해당 없음
금액, 기간, 횟수 계산부적합부적합적합
판단 근거를 글로 남김확률만 반환적합해당 없음
확신이 낮을 때 멈춤확률·신뢰도로 분기자기 보고에 의존임계값 관리

OpenRouter 가이드도 판단은 Jev, 설명문은 채팅 모델, 신뢰도가 낮은 건은 사람이 맡는 분업을 권합니다.

함께 읽을 글

자주 묻는 질문

TypeSafe 계정이 꼭 필요한가요?

필수는 아닙니다. OpenRouter 가이드는 대기 목록이나 TypeSafe 계정 없이 OpenRouter 키로 호출할 수 있다고 적고, Vercel AI Gateway 모델 목록에도 올라 있습니다.

한국어 문의 분류에 바로 써도 되나요?

공식 문서가 영어 외 언어의 정확도가 같지 않다고 밝힙니다. 정답 라벨을 붙인 실제 문의로 버전별 정확도와 신뢰도 기준값을 정한 뒤 운영에 넣습니다.

JSON 모드 LLM과 무엇이 다른가요?

Jev는 가능한 답을 요청에서 먼저 정의하고 그 범위 안의 확률 분포를 돌려줍니다. 다만 문서는 보정된 확률이 개별 답의 정답을 보장하지 않는다고 적으므로 신뢰도 분기와 사람 검토 경로는 그대로 둡니다.

환불 승인까지 맡겨도 되나요?

권하지 않습니다. 공식 예제도 Jev의 판단을 코드의 결정적 검사와 합쳐 처리나 검토로 보냅니다. 금액, 청약철회 기간, 중복 결제 사실은 DB와 PG 조회로 확인하고 실행은 서버 코드가 맡습니다.

출처

모두 2026-10-17 접속.

김지우 (Tristan Kim)

코텍시스 창업자로 AX 컨설팅과 기업 AI 교육, AI 에이전트 개발을 직접 수행합니다.

코텍시스 AI 인사이트 최신 논문 리뷰

AI 서비스 구축

MVP 설계부터 AI 내장 개발, 백오피스까지. 아이디어를 빠르고 견고하게 서비스로 만듭니다.