Using Jev as a LangSmith evaluator
LangSmith lists TypeSafe as a model provider, so Jev can score your traces as an online evaluator. You set it up in the LangSmith UI with a TypeSafe API key, through the same LLM-as-a-Judge Evaluator form used for LLM judges. Jev receives a state that you map from run or thread variables, plus typed questions. Each question writes its own feedback key.
The catch: the LangSmith setup screen warns that TypeSafe doesn't offer zero data retention, so anything you map into state may be retained by TypeSafe. Details below.
| Where | Tracing project → Evaluators → + Evaluator → LLM-as-a-Judge Evaluator |
| Credential | Workspace provider secret TYPESAFE_API_KEY (your own TypeSafe key) |
| Model | Provider TypeSafe, model jev-latest |
| Jev receives | The state you map in, and one typed question per criterion: Noul, Choice, or Score |
| You get | One feedback key per question on each evaluated run or thread |
Set it up
As of September 23, 2026, the setup steps come from LangChain's September 21 launch post ↗ and its screenshots. The LangSmith docs don't yet have a TypeSafe evaluator page; where they describe the same screens, their labels are used below.
TYPESAFE_API_KEY. The dialog is titled “Add secret to this workspace”: one key serves the whole workspace, and LangSmith, not your code, holds it.jev-latest. The retention warning appears here.{{ to insert mapped run or thread variables. No grading instructions go here. What goes where.TypeSafe not in the provider list? Organization admins can turn providers off under Settings → Model providers, and workspace admins control which providers each feature, Evaluators included, can use in Model configurations. LangChain's instructions name no LangSmith credential beyond the TypeSafe key. TypeSafe is bring-your-own-key in LangSmith: Gateway Credits and the free hosted SemIf model don't cover Jev.
State vs. questions
The launch post is explicit on this, and it's the main habit to unlearn from LLM judges. State is the evidence. Questions are the grading. A judge prompt that starts “You are an expert evaluator…” doesn't belong in state. TypeSafe's state guide ↗ draws the same line.
| Put in state | Put in questions |
|---|---|
| The user's request, the final response, and tool calls or tool results the criteria depend on | What to judge: “Does the reply resolve the request?” |
| Run facts a criterion needs, such as which tools ran or whether a handoff happened | The options or levels: a Choice's full label set, a Score's levels from low to high |
| Clear labels around each part, so a question can refer to it by name | Definitions of yes and no (the optional “Describe true and false” on a Noul) |
Map only what your questions need, not the whole trace. There are three reasons:
What you can map depends on what the evaluated run or thread records. If tool calls live only in child runs, they won't be in a root run's input or output. Check your own run in the evaluator's preview before relying on a field.
Questions and feedback keys
All questions in one evaluator go to Jev together, in one call per run or thread, and each comes back as a separate feedback key named after the question. LangChain notes that a second or third question adds only a little cost.
| Type | Use for | You define | Feedback recorded |
|---|---|---|---|
| Noul | One yes/no criterion: leaked PII, resolved the request, grounded in evidence | A question where high probability means yes; optional true/false descriptions | A number from 0 to 1, the probability of yes. The feedback metadata carries metadata.typesafe with the raw noul value. |
| Choice | Exactly one category: failure mode, user intent | The full option set, including a “none/ok” option if runs can be fine | The selected label as a categorical value, such as "billing" |
| Score | An ordered scale: reply quality, user frustration | Levels in order, low to high | A number. Jev's Score is an expected level, counted from 0 and possibly fractional. |
The recorded values come from LangChain's screenshot of a live run, which shows pii_leakage 0.03, intent "billing", and frustration 0.17. LangChain hasn't documented whether LangSmith stores a Score's expected level unchanged, or whether a Choice's probabilities and confidence survive in the metadata. Open metadata.typesafe on your first results before building on it. For picking a type, see Choice, Score, and Noul.
Example: a support agent
One evaluator on a customer-support agent's tracing project, with three questions for three different jobs. Each question asks about one thing, so each key can be read on its own.
| Feedback key | Type | Instructions | What you do with it |
|---|---|---|---|
resolved | Noul | Does the final reply resolve what the customer asked for? | Chart the average over time. Alert on a drop. |
failure_mode | Choice | Which best describes how this run went? none, unneeded_escalation, wrong_tool, unsupported_claim | Filter runs by label and read the unsupported_claim ones first. |
reply_quality | Score | How usable is the final reply? Levels: unusable → partial → complete | Compare prompt or model versions by average. |
State is the customer's message, the tools the agent called, and its final reply, mapped as in the template above. If the run you evaluate doesn't record its tool calls, log them there or drop the wrong_tool label. Account history, system prompts, and full retrieval dumps stay out unless a question needs them.
Downstream, these are ordinary LangSmith feedback keys. You can filter runs by them, chart them, raise a Feedback Score alert (average score over a time window), or fire a webhook automation. LangSmith recommends adding a feedback filter such as has(feedback_key, "resolved") to the webhook rule, so it fires only after the score exists.
Online, offline, and code
The TypeSafe provider path is documented for online evaluation, which scores production traces in a tracing project. That isn't the only way to put Jev in a LangSmith eval, but the other ways are different mechanisms.
| Path | Status | Notes |
|---|---|---|
| UI evaluator on a tracing project (runs or threads) | Documented | This is the launch path above. |
| UI evaluator attached to a dataset, for experiments | Undocumented | The same LLM-as-a-Judge form exists on datasets, but LangChain hasn't said TypeSafe works there. Test it before depending on it. |
| Creating a TypeSafe evaluator with the SDK, API, or CLI | Undocumented | client.evaluators.create(type="llm") (langsmith 0.14.0) takes a prompt-hub handle, a model configuration ID, and a variable mapping. There is no documented shape for Jev questions. |
Your own code evaluator in evaluate() that calls Jev | Works | An ordinary custom evaluator. It's how LangChain's own study ran Jev. |
For offline experiments today, write the judge yourself. This evaluator asks the same three questions as the example in one Jev call, through LangChain's langchain-typesafe package, and returns them as three feedback keys. Here you choose the state, can include reference outputs, and keep full probabilities if you want them.
Checked with langsmith 0.14.0 and langchain-typesafe 0.0.1a3 against a local mock of the TypeSafe API, with upload_results=False. It made one request carrying all three questions and produced the three feedback keys. The TypeSafe key here is used by your process, not by LangSmith's provider secret.
Jev judge vs. LLM judge
Same form, different machine. These are the operational differences, not a verdict on which is better.
| Aspect | Jev evaluator | LLM-as-a-judge evaluator |
|---|---|---|
| You write | State (evidence only) + typed questions | A prompt with instructions and rubric + a feedback schema |
| It returns | Typed answers with probabilities. No text. | Generated structured output, which can include reasoning |
| Several criteria | One call. Each question is a key. | One call. Each top-level schema key is a key, and output grows with criteria. |
| Explains itself | No | Can, if you ask for it |
| Suits | Narrow, typed decisions at volume | Open-ended criteria where you want written reasoning |
The “suits” row is LangChain's own framing. Speed and cost multiples (“up to ~450x cheaper and ~200x faster”) are TypeSafe's figures for classification tasks, as quoted by LangChain. Measure yours on your own traces. For the underlying model difference, see Jev vs. LLMs.
Privacy and retention
In practice, map the fewest fields that answer your questions, and use the evaluator's filter to skip runs you know carry sensitive data. Whether any of this is acceptable for your data is a call for your own privacy and compliance review.
Thresholds
The LangSmith integration records the number; it applies no pass/fail cutoff, and this page doesn't suggest one. A Noul of 0.62 on resolved is a probability, not a failing grade. Where it should trip an alert depends on how often Jev agrees with your reviewers on your traces, and on which mistake costs you more.
To pick a cutoff, label a sample of real runs, for example in an annotation queue. Compare those labels with the Jev feedback on the same runs, then set the alert or filter threshold from that comparison. Averages over time (what a Feedback Score alert watches) catch drift. Per-run cutoffs catch incidents. They need different thresholds. The broader method is in calibrated decisions and the classification task.
The evidence so far
LangChain's Jev-as-a-Judge study ↗ (repo ↗) froze five weather-agent runs and had one human reviewer label them (four pass, one fail). Jev, GPT-5.6 Luna, GPT-5.6 Terra, and Claude Sonnet 4.6 each judged every run 100 times. Jev matched the human pass/fail label on all 500 decisions, had the lowest score variance, and averaged 0.44 s and $0.00035 per call.
It's a promising, narrow result, and LangChain calls it “one test on one agent.” Four details matter if you read it as evidence for your own evaluator:
langchain-typesafe==0.0.1a2, and the Jev service version wasn't recorded. The repo's constructor-style calls raise a validation error on 0.0.1a3, so use its lockfile to reproduce it.does_pass was a Noul turned into pass/fail at 0.5 in their code.quality score with the human labels. There, Jev had the largest mean absolute error of the four (0.106 vs. 0.077–0.087). The authors treat quality as a reliability measure only.For how Jev FYI weighs vendor, partner, and independent results, see Benchmarks.
Other LangChain surfaces
“Jev in LangSmith” can mean three different things. Only the first is covered above.
| Surface | What it does | Key |
|---|---|---|
| LangSmith evaluator (this page) | Scores traces after they happen | Workspace provider secret |
langchain-typesafe | Jev decisions inside your running app, graph, or agent middleware. Calls are traced to LangSmith as llm runs. | TYPESAFE_API_KEY in your environment |
| LangSmith LLM Gateway ↗ | Proxies System One calls to typesafe/jev-1.13.0 with Gateway policies and cost tracking | LangSmith API key; TypeSafe key as the workspace provider secret |
Checked September 23, 2026 against LangChain's launch post and its screenshots, the current LangSmith docs (online evaluators, LLM-as-a-judge, model configurations, alerts, the Gateway's decision-model page and changelog), the langsmith 0.14.0 Python SDK, TypeSafe's docs and legal pages, and the jev-as-a-judge repository at adfea74. No LangSmith account, provider secret, or evaluator was created. The UI steps are as LangChain documents them, not observed in a live workspace.