퇴사하고 AI로 회사를 만드는 중이라, 블로그 초안이 원자료를 벗어나지 않았는지 채점하는 에이전트를 돌린다. 그 채점기를 오늘 나온 JEV로 옮겨보려 했다. 요청 본문까지 만들었고 호출은 못 했다 — API 키가 없다. 대신 옮기려고 일을 쪼개는 과정에서, 채점기라고 한 덩어리로 부르던 것의 네 자리 중 텍스트를 만들어야 하는 자리가 하나뿐이라는 게 나왔다.
JEV가 돌려주는 것
JEV는 TypeSafe AI가 내놓은 첫 “System One Model”인데, 텍스트를 생성하지 않고 타입이 정해진 결정을 돌려준다. 이름은 효율이 올라 값이 싸지면 총소비가 오히려 는다는 제번스 역설의 윌리엄 스탠리 제번스에서 왔고, System One은 카너먼의 시스템 1이다. 만든 사람은 전 OpenAI 연구자 Diogo Almeida다.
출력 프리미티브가 셋이다. Noul은 “예”일 확률 하나(01)만 주고 confidence가 없다. Choice는 미리 정한 옵션 중 하나에 전체 확률분포와 confidence를 붙여 주고, 옵션은 Choice 하나에 255개까지 둘 수 있다. Score는 레벨 설명 배열을 주면 그 위의 연속값을 주는데, 최소 2레벨에 최대 10레벨이고 3레벨이면 범위가 02다. 0~1로 정규화해 주지 않으니 그건 쓰는 쪽 몫이다.
요청 최상위 필드는 state, model, questions 셋뿐이다. temperature도 max_tokens도 없다. 컨텍스트는 요청당 64k 토큰이고, 그중 state와 가장 긴 질문을 합쳐 32k까지다. 가격은 $0.042 / 백만 입력 토큰이고 출력 토큰은 무료다.
헤드라인 배수에 공식이 붙여둔 단서
홈 헤드라인은 193.6x Faster, 444.6x Cheaper다. 이 배수를 그대로 옮기면 안 되는 이유를 공식 블로그가 스스로 적어놨다. 공개 eval이 “generally run from our laptops on the West Coast”라 측정이 서비스와 같은 지역에서 돌았고, 워크플로 평가의 정답이 GPT-6 Astra와 Fable 5.1의 평균이며, side-by-side 데모는 “The relatively shorter input paints our model in an advantageous light”라고 자인한다. 타입 안전성 0%도 보장에서 나온 값이라 “Our number is not empirical”이라고 붙어 있다.
넷으로 쪼개니 하나만 텍스트였다
채점기를 통째로 옮길 수 있는지 보려고 하는 일을 단계로 적었다.
| 채점기가 하는 일 | JEV로 되나 |
|---|---|
| 초안을 주장 단위로 분해 | 안 된다. 텍스트를 만들어야 한다 |
| 주장마다 원자료에 있나 판정 | Noul |
| 네 차원을 0~4로 채점 | Score (5레벨, 상한 10 안) |
| 합쳐서 pass/revise/reject | 덧셈. 모델이 필요 없다 |
네 줄을 써놓고 나서야 알았다. 텍스트를 만들어야 하는 자리는 첫 줄 하나고, 마지막 줄은 모델을 아예 안 쓰는 자리다. 판정과 채점 두 자리는 모델이 필요하지만 문장을 뱉을 필요가 없어서 결정형 모델로 내려간다. 에이전트 하나로 묶여 있어서 넷 다 같은 등급의 일로 보였던 것뿐이다.
채점 기준 네 차원은 채점기 지시문 2단계의 문구를 그대로 Score의 레벨 설명으로 옮겼다. 0~4 다섯 레벨이라 상한 10 안에 들어간다.
남의 에이전트에도 같은 순서를 대볼 수 있다. 먼저 그 에이전트가 하는 일을 단계로 적고, 각 단계에 텍스트를 만들어야 하는지 묻는다. 만들어야 하는 단계만 생성 모델에 남기고, 나머지는 답의 모양대로 내린다 — 예·아니오면 Noul, 옵션이 정해져 있으면 Choice, 정도를 재는 것이면 Score. 마지막으로 남은 단계 중 모델이 없어도 되는 자리를 찾는다. 내 경우 네 번째 줄의 합산이 거기였다.
에이전트 호출 비용이 걸리기 시작했다면, 그 에이전트가 하는 일을 단계로 적고 각 단계에 “여기서 텍스트를 만들어야 하나”를 물어보세요. 안 만드는 자리는 더 싼 것으로 내려가고, 그중 일부는 모델이 아니라 덧셈입니다.
요청은 만들어졌다
오늘 쓴 다른 글의 원자료와 초안을 state에 넣고 주장 7개를 세웠다. 필드가 셋뿐이라 요청 모양도 셋으로 끝난다.
state 원자료 + 초안 + 채점 지시 19,167자
model jev-1.13
questions 주장 7개는 Noul, 차원 4개는 Score
그렇게 만든 요청을 세면 이렇다.
질문 11개 (차원 4 + 주장 7)
요청 본문 20,808자
questions가 맵이라서 키가 답에 그대로 붙는다. 주장마다 키를 주면 어느 주장이 몇 점인지 따로 매칭할 필요가 없다. 입력 크기는 실측으로 원자료 14,563자 + 초안 2,914자 + 채점 지시 1,690자 = 19,167자였다. 토큰 수는 어림만 계산했다. 한국어는 글자보다 토큰이 많이 나오는데, 실측값은 응답의 usage.input_tokens에만 있고 호출을 안 했으니 그 값이 없다.
호출은 못 했다
키가 없다. 가입과 결제는 내가 오늘 밟을 자리가 아니었다. 그래서 세 가지가 미확인으로 남는다.
첫째, 한국어 채점이 실제로 맞는지 모른다. 공식 모델 문서가 언어 지원 절에 이렇게 적어놨다.
“English is the primary training language and where accuracy is currently best.” “Other languages, including CJK scripts, are handled but not equally well”
내 원자료도 초안도 채점 기준도 전부 한국어다. 헤드라인의 배수보다 이 두 줄이 내 판단을 더 많이 갈랐다.
둘째, 지금 채점기 한 번이 얼마인지 모른다. Claude subagent 호출이라 토큰을 따로 세지 않았다. 비교할 숫자가 없으니 “얼마를 아낀다”는 문장은 쓸 수 없다.
셋째, 정확도의 실패 모양을 모른다. 공식 한계 문서(최종 검토 2026-09-17)가 실패 모드 아홉 가지를 표로 싣는데, 같은 질문을 Noul과 Choice로 물으면 값이 어긋나고(문서의 예로 0.22 vs 0.01), 질문과 그 부정의 Noul을 더하면 1이 아니다(0.72 + 0.47 = 1.19). 스키마 밖의 값은 수학적으로 안 나오지만 스키마에 맞으면서 틀린 답은 나온다 — 만든 쪽도 “it’s also possible to be confidently wrong”이라고 인정한다.
아홉 중 둘은 내 채점기에 바로 걸린다. 하나는 “Jev is not a calculator”다. 수·세기·날짜 비교가 약하다고 적어놨는데, 내 채점기가 주장마다 하는 일이 원자료에 그 값이 있는지 대조하는 것이다. 다른 하나는 “Jev suffers from context rot”, state가 커질수록 정확도가 떨어진다는 항목이다. 내가 넣은 state는 원자료와 초안을 통째로 담아 19,167자였다. 둘 다 내 쓰임새의 한복판을 지난다.
접근 경로는 두 개를 확인했다. 공식은 waitlist인데, OpenRouter에 typesafe/jev-1.13으로 등재돼 있고 엔드포인트 조회가 200을 준다(context_length 32000, modality text->decisions). Vercel AI Gateway에도 typesafe-ai/jev로 있다. 공식 문서는 클로드 코드용 스킬 설치 한 줄도 적어놨다(claude plugin marketplace add typesafe-ai/skills). 키가 없어 눌러보지는 않았다. 오늘 올라온 소개 영상의 설명란은 Vercel 무료 프로모션이 9월 25일에 끝난다고 적었는데 내가 읽은 Vercel 모델 페이지에는 그 언급이 없었고, 자막이 없어 영상 음성은 확인하지 못했다.
만든 요청 본문은 lab/jev/judge.py에 들어 있다.