Skip to content
masterclassBuddyTech Buzz5 fresh blogs · 5:00 AM IST

LangSmith blueprint · AI / LLM operations

Human review with annotation queues

Routes selected production runs into a LangSmith single-run annotation queue where several reviewers, each holding a reservation, score them against a rubric and assertions. Approved runs are then exported to a dataset for regression experiments. The workflow must never let unreviewed or disputed runs become reference outputs, and it must never let two reviewers silently overwrite each other's work.

Steps
9
Subjective questions
33
Objective questions
33

The problem and the outcome

Problem: LLM-as-judge scores and user thumbs alone cannot be trusted as ground truth. Ad-hoc spreadsheet reviews lose the link to the original trace, double-assign work and produce labels nobody can reuse.

Outcome: Domain experts review the right runs in one place, using a consistent rubric and multiple opinions per run. Their verified outputs feed versioned datasets that gate every prompt or model change through evaluate() experiments.

Architecture

LLM app@traceable + wrap01Tracing projectruns + threads01Online evaluatorLLM-as-judge02Automation rulefilter + sampling03Annotation queuesingle-run04Rubric + assertionsfeedback keys04SME reviewersN reviewers per run05Reservationrun locked to one05Run feedbackscores + comments06Agreement checkall reviews in?07Export to datasetcorrected outputs08Golden datasetexamples + splits08evaluate()regression tests09traces via SDKsampled runsjudge feedbackfilter matchesadd runs to queueinstructions + keysopen next runreserve runexpired: releasesubmit rubricreviews collecteddispute: escalateapprovedadd examplerun experimentscalibrate judge

How it works, step by step

  1. Instrument the app with LANGSMITH_TRACING plus @traceable or wrap_openai (or OpenTelemetry via the OTLP endpoint). Runs land in a tracing project, and threads group multi-turn conversations.
  2. Attach an online evaluator, such as an LLM-as-judge template, to production runs with a filter and sampling rate. It writes judge scores as feedback on each run.
  3. An automation rule matches runs worth human attention, such as low judge scores, negative user feedback, errors or a random sample for calibration. It adds those runs to the annotation queue.
  4. Configure a single-run annotation queue. Give it reviewer instructions, a rubric built from feedback keys, pass/fail assertions, and the number of reviewers required per run.
  5. Each reviewer opens the queue and is handed the next run under a reservation, so no one else works on it at the same time. If the reviewer walks away, the reservation expires and the run returns to the queue.
  6. The reviewer inspects the full trace, fills in the rubric scores, answers the assertions and adds comments. The result is stored as feedback on the run, attributed to that reviewer.
  7. Once the required number of reviewers have finished, compare their scores. Runs where reviewers agree move on; disputed runs go to a lead reviewer for adjudication.
  8. Export approved runs from the queue to a dataset, correcting the output where needed so it becomes the reference output. Tag the examples with splits such as regression or edge-case.
  9. Run evaluate() or pytest with @pytest.mark.langsmith against the dataset whenever a prompt commit or model changes, and compare experiments. Use the human labels as few-shot examples to recalibrate the LLM-as-judge.

Tech stack

  • LangSmith SDK (Python / TypeScript) with @traceable and wrap_openai
  • Online evaluators with LLM-as-judge prebuilt templates
  • Automation rules with filters and sampling rates
  • Single-run annotation queues with rubrics, assertions and reservations
  • Datasets and evaluate() experiments
  • pytest @pytest.mark.langsmith / Vitest integration
  • Prompt Hub commits and tags
  • OpenTelemetry collector for OTLP fan-out

Key design decisions

  • Use a single-run queue rather than a pairwise queue here, because the goal is to grade production runs on their own. Pairwise queues are only for comparing exactly two experiments.
  • Set the reviewer count above one for rubric keys that are subjective (tone, helpfulness) and on safety-critical routes. Keep single review for cheap factual checks to protect reviewer time.
  • Route runs with automation rules on judge score plus a small random sample. Review that is driven only by failures biases the dataset and hides judge false negatives.
  • Write rubric criteria as discrete feedback keys with clear anchors, and express hard rules as assertions. This makes scores comparable across reviewers and usable as evaluator targets.
  • Export only runs that are adjudicated and approved into the golden dataset. Keep disputed runs in a separate split instead of mixing them into reference outputs.

Common mistakes

  • Letting reviewers bypass reservations, for example through shared logins or a manual pick. Two people then label the same run and the reviewer-count signal becomes meaningless.
  • Vague rubric instructions such as 'is it good?'. These produce low inter-reviewer agreement and labels that cannot train or calibrate an LLM-as-judge.
  • Exporting runs straight to the dataset with the model's original output as the reference, even when a reviewer marked it wrong. Regression tests then enshrine the bug.
  • Queuing every flagged run with no sampling. The backlog grows faster than reviewers can clear it, and reservations keep expiring on stale work.
  • Including PII in the inputs of traces sent to external reviewers. Mask or redact the data at trace time before it enters a queue.

What to measure

  • Queue backlog and median time from run creation to completed review
  • Inter-reviewer agreement per rubric feedback key
  • Agreement rate between the LLM-as-judge and the human consensus
  • Share of reviewed runs exported to datasets, and dataset growth per split
  • Regression experiment pass rate on human-verified examples per prompt commit

Most-asked interview questions

Subjective questions 33

1How would you design a human review loop for an LLM app in production using LangSmith?Asked almost every time

I would trace everything with @traceable or wrap_openai into a project, then run an online LLM-as-judge on a sampled slice. An automation rule sends low-scoring runs, negatively rated runs and a small random sample into a single-run annotation queue. The queue has clear instructions, a rubric expressed as feedback keys, and assertions for hard rules. Reservations stop two reviewers from grabbing the same run. For subjective criteria I would set two or more reviewers per run and adjudicate disagreements. Approved runs, with corrected outputs, get exported to a dataset. That dataset gates every prompt commit through evaluate() experiments, and the human labels become few-shot examples to recalibrate the judge. The loop turns production failures into regression tests.

Sourced from Docs by LangChain (MCP)

2Walk me through the data model behind this review workflow, from a traced call to a regression experiment.Asked almost every time

A run is one traced step, such as an LLM call or tool call. Runs nest into a trace, and traces live in a tracing project. A thread groups the traces of one multi-turn conversation. Online evaluators and humans both attach feedback to runs. Each feedback item has a key, a score or value, an optional comment and its source. An annotation queue holds references to runs plus the rubric, assertions and reviewer count. Approved runs are exported as examples, each with inputs and a reference output, into a dataset tagged with splits. An experiment is one evaluate() or pytest execution of a target over that dataset. Comparing experiments gives you regression results.

Sourced from Docs by LangChain (MCP)

3How do you guarantee that an unreviewed or disputed run never becomes a reference output?Asked almost every time

Make export the only path into the regression dataset, and gate that export on review state. A run qualifies only when the required number of reviewers have submitted feedback, their scores agree within the defined rules, or a lead reviewer has adjudicated. Disputed runs go to adjudication and never to export. I would also restrict who can write to the regression dataset, so nobody adds examples straight from a trace. A periodic audit can check every example in the dataset against complete, agreeing reviewer feedback on its source run. Any mismatch gets flagged and removed. Without the gate, one hurried click can put a wrong answer into every future regression test.

Sourced from Docs by LangChain (MCP)

4How does the workflow stop two reviewers from silently overwriting each other's work?Asked almost every time

There are two layers. First, a reservation hands a run to one reviewer at a time, so two people never edit the same review at once. Second, each reviewer's scores are stored as separate feedback attributed to that reviewer, not as one shared field that gets replaced. When a run needs three reviewers, you end up with three independent sets of feedback that can be compared. Disagreement then shows up as data instead of disappearing as a lost update. Corrected reference outputs are written only at export time, by an approved person, after agreement or adjudication. That keeps the one truly shared artefact out of the concurrent editing path.

Sourced from Docs by LangChain (MCP)

5How would you estimate how many reviewers you need for this queue?Asked almost every time

Build the estimate from your own measurements, not from guesses. Start with production runs per day. Multiply by the fraction the automation rule routes to the queue, which combines low judge scores, negative user feedback, errors and the random calibration sample. Multiply by the reviewers required per run to get reviews per day. Add the expected dispute rate times the adjudication effort. Multiply by the median minutes per review, measured during a pilot. Divide by the productive review hours each person really has. Then add headroom for absences and spikes. If the result is too high, tighten the rule filters, lower the calibration sample or require fewer reviewers on low-risk categories.

Sourced from Docs by LangChain (MCP)

6How do you handle PII and sensitive data in a human review workflow like this?Asked almost every time

Minimise data at the source. Mask or redact sensitive fields in inputs and outputs before they are traced, so reviewers and datasets never see more than they need. Restrict workspace and queue access to trained reviewers, and keep the number of people with dataset write access small. Remember that export copies data into a long-lived dataset, so apply a second redaction check there. Reference outputs written by reviewers must not add customer details either. Be careful with sampling and extended retention, because they decide how much production data is kept. For regulated data, confirm your hosting option and contractual terms with your compliance team before routing real customer traffic into review.

Sourced from Docs by LangChain (MCP)

7Why use multiple reviewers per run, and how do you handle disagreement?Very often asked

One reviewer's judgment on tone, helpfulness or completeness is noisy, and if you build a golden dataset on noise, your regression tests and judge calibration inherit it. Setting the queue's reviewer count to two or three gives you an agreement signal per feedback key. Low agreement tells you the rubric is unclear, not just that the model is wrong. I export runs where reviewers agree directly. Disputed runs go to a lead reviewer, who decides and often updates the rubric wording. I would not apply multiple reviewers to everything, because it multiplies cost. I reserve it for subjective keys and high-risk routes like medical or financial answers, and keep single review for objective checks.

Sourced from Docs by LangChain (MCP)

8How do you keep human labels and the LLM-as-judge consistent over time?Very often asked

I treat human review as the ground truth and the judge as a cheap approximation that must be measured against it. Automation rules send a random sample of runs to the annotation queue, not only failures, so I can compute agreement between the judge and the human consensus without bias. When agreement drops, I take adjudicated human examples and add them as few-shot examples to the judge prompt, then version it in the Prompt Hub. I run the revised judge as an experiment over the human-labelled dataset with evaluate() and compare it with the old version. Only a judge that matches humans better gets promoted back to the online evaluator.

Sourced from Docs by LangChain (MCP)

9What happens if a reviewer opens a run and then walks away without finishing?Very often asked

The reservation has a time limit. When it expires, the run goes back to the queue and another reviewer can pick it up. This prevents a stuck run from blocking progress, and it is why reservations are leases rather than permanent locks. The design point is that partial work should not count. Only submitted feedback contributes toward the required reviewer count. I would watch for runs that keep expiring, because they often mean the trace is too long or the rubric is unclear for that kind of case. Those runs may need better instructions or a specialist reviewer instead of endless recycling.

Sourced from Docs by LangChain (MCP)

10How do you define agreement between reviewers before a run can be exported?Very often asked

Define it per rubric key and write it down before reviewing starts. Pass/fail assertions should match exactly, because a split on 'is this factually correct' is a real dispute. For categorical keys I would require exact or majority agreement, depending on risk. For numeric scales, set a tolerance, for example adjacent scores count as agreement while wide gaps do not. Any reviewer comment proposing a different correct output should also trigger adjudication, even if the scores match. Track agreement rates per key over time. A key with chronically low agreement usually means the rubric wording is ambiguous, and the fix is the rubric, not more adjudication.

Sourced from Docs by LangChain (MCP)

11Describe the adjudication step for disputed runs in more detail.Very often asked

Disputed runs go to a lead reviewer, ideally through a separate queue or a filter, so they don't mix with first-pass work. The lead sees the full trace plus every reviewer's feedback and comments, then records a final decision as their own attributed feedback. The original reviews stay in place. The lead's decision, including any corrected output, is what drives export. If the lead can't decide, perhaps because the policy itself is unclear, the run is excluded from the dataset and the question goes to whoever owns the policy. I would also feed adjudicated cases back into reviewer instructions, because recurring disputes show exactly where the guidelines are weak.

Sourced from Docs by LangChain (MCP)

12How would you design the rubric and assertions for the queue?Very often asked

Build the rubric from feedback keys that match what you actually want to measure and later automate, such as correctness, groundedness, helpfulness and tone. Reusing the same keys the online LLM-as-judge writes lets you compare human and judge scores directly. Keep scales small and anchored, with a written example for each level. Use pass/fail assertions for hard requirements, such as 'no policy violation', 'cites a source' or 'tool call arguments valid'. Put clear instructions at the top of the queue, including what counts as a correct output. Keep the rubric short enough to finish in a reasonable time. Each extra key adds review time and is another place reviewers can disagree.

Sourced from Docs by LangChain (MCP)

13Why put an online LLM-as-judge evaluator in front of the human queue instead of sending runs straight to humans?Very often asked

Human time is the scarcest resource in the loop. The online evaluator scores a sample of production runs cheaply and writes feedback that automation rules can filter on. Humans then spend their time on low-scoring runs, errors and runs with negative user feedback, where they add the most value. The judge also gives you a score to compare against human labels, which shows how much you can trust it. The risk is that humans only see what the judge flags and miss its blind spots. That is why a random calibration sample, chosen independently of judge scores, must also go to the queue.

Sourced from Docs by LangChain (MCP)

14How do retention rules interact with this workflow?Very often asked

Running an online evaluator on a trace upgrades it to extended retention. In practice, the runs that get scored, and so are likely to enter the queue, are kept longer. That is useful, because a run must still exist when reviewers reach it and when you export it. It also has privacy and cost implications, because more production data persists for longer. Export copies inputs and outputs into a dataset, which has its own lifecycle independent of trace retention. So the dataset is where long-lived data really sits. Decide deliberately what may be stored there, and mask or remove sensitive fields before export.

Sourced from Docs by LangChain (MCP)

15How do you use dataset splits in the regression experiments?Very often asked

Splits let one dataset serve different purposes without copying it. Tag exported examples with labels such as regression, edge-case or calibration. Fast CI checks can run on the regression split on every prompt commit, while the larger edge-case split runs before a release or a model swap. Splits also let you track performance per category, so an overall average does not hide a drop on hard cases. Keep examples used as few-shot demonstrations for the LLM-as-judge out of the split used to measure that judge. Otherwise you are grading it on its own training material. Review split membership as the product changes.

Sourced from Docs by LangChain (MCP)

16How do you connect regression experiments to prompt and model changes?Very often asked

Prompts are versioned in the Prompt Hub with commits and tags, for example a production tag and a candidate tag. When a new commit is made or a model is changed, CI runs evaluate() or the pytest integration against the reviewed dataset. Each experiment's metadata records which prompt commit and model it used. You compare the candidate experiment with the baseline experiment from the current production version, ideally example by example, to see regressions and not just average shifts. Repetitions help with non-deterministic outputs. Only when the comparison passes do you move the production tag to the new commit. That keeps deployment tied to reviewed evidence.

Sourced from Docs by LangChain (MCP)

17An automation rule misfires and floods the queue with thousands of runs. How do you detect and recover?Very often asked

Detect it by monitoring queue inflow and backlog, with alerts when inflow jumps well above its normal range. Common causes are a judge outage producing default low scores, a broken filter, or a real incident that spikes errors. To recover, pause or narrow the rule first. Then work out whether the flood is real signal, such as a production regression, or noise. For noise, remove the irrelevant runs from the queue instead of making reviewers process them. For a real incident, sample a representative subset for review instead of reviewing every run. Prevent repeats by testing rule filters on recent data before enabling them, and by capping the calibration sampling rate.

Sourced from Docs by LangChain (MCP)

18How do you detect when the online LLM-as-judge has drifted away from human judgement?Very often asked

Use the random calibration sample, because it is chosen independently of judge scores. For those runs you have both judge feedback and human feedback under matching keys, so you can track agreement over time. Alert when agreement drops or when the judge becomes systematically harsher or more lenient. Drift often follows a judge model change, a product change that creates new kinds of output, or a prompt change in the app. To fix it, add recent adjudicated human labels as few-shot examples to the judge and rerun it offline against a held-out human-labelled split. Redeploy it as the online evaluator only once agreement recovers.

Sourced from Docs by LangChain (MCP)

19How do you make the export to a dataset idempotent, so the same run is not added twice?Very often asked

Treat the source run ID as the natural key. Record the source run ID in each example's metadata, and before exporting check whether an example from that run already exists in the target dataset. If an automated script performs export, it should look up existing examples first and update instead of inserting. Mark exported runs, for example with a feedback key or tag, so they are not picked up again. Duplicates matter because they quietly give some cases extra weight in regression averages. If a run is re-adjudicated later, update its existing example and let dataset versioning keep the history.

Sourced from Docs by LangChain (MCP)

20What metrics would you track to know the review loop itself is healthy?Very often asked

I'd track queue inflow, backlog size and the age of the oldest unreviewed run, to catch rule misfires and staffing gaps. I'd also watch time to completion per run, reservation expiry rates, inter-reviewer agreement per rubric key, dispute rate and adjudication turnaround. On the output side, track how many examples are exported per split each week and whether they cover the failure categories seen in production. Judge-versus-human agreement on the calibration sample tells you whether automation can be trusted. Finally, confirm that regression experiments actually run on every prompt commit or model change. A dataset nobody runs gives no protection.

Sourced from Docs by LangChain (MCP)

21What trade-offs do you weigh when choosing the online evaluator's sampling rate?Often asked

A higher sampling rate gives better coverage and catches rare failures sooner. It also costs more in judge model calls, adds load, and upgrades more traces to extended retention, which affects storage and how long potentially sensitive data is kept. A lower rate is cheaper but may miss low-frequency issues and leaves the automation rule with fewer candidates. I would use filters to apply higher rates to high-risk traffic, such as particular routes, tools or customer segments, and lower rates elsewhere. Then I would check whether the queue receives enough diverse runs. Revisit the rate whenever traffic volume or the judge model changes.

Sourced from Docs by LangChain (MCP)

22How would you review multi-turn conversations rather than single responses?Often asked

Threads group the traces of a conversation, and online evaluators can run at thread level, for example judging whether the user's goal was eventually met. A bad single turn may be fine in context, and a sequence of acceptable turns may still fail the user. In the queue, reviewers need the earlier turns to judge a run fairly. So instructions should tell them to inspect the conversation history, and the rubric might include conversation-level keys. When exporting, decide whether an example's input is the full prior history or just the last message. That choice must match how the regression target will be called in evaluate().

Sourced from Docs by LangChain (MCP)

23How would you wire the pytest integration into CI for this workflow?Often asked

Mark test functions with @pytest.mark.langsmith. Each test case then becomes an example, and each test run becomes an experiment in LangSmith. Tests can load examples from the human-reviewed dataset and call the app with the candidate prompt or model. They assert hard requirements in code and log softer scores as feedback. CI runs the suite on pull requests that touch prompts, model configuration or retrieval logic. Hard assertions block the merge, while score changes appear in the experiment comparison for a human to judge. Caching and concurrency settings keep run times practical. Credentials for the model provider and LangSmith come from CI secrets, never from the repository.

Sourced from Docs by LangChain (MCP)

24How does reviewing an agent differ from reviewing a single LLM call?Often asked

For an agent, the final answer is only part of the story. Reviewers have to inspect the full trace, including which tools were called, with what arguments, in what order, and whether intermediate steps were sensible. The rubric should include trajectory keys, such as 'used the right tool' or 'no unnecessary steps', not only answer quality. When exporting, you may store a reference trajectory alongside the reference output. Offline, agentevals trajectory evaluators, including a trajectory LLM-as-judge, can compare new runs against those expectations. The human labels on trajectories then help calibrate that judge, the same way answer labels calibrate an answer judge.

Sourced from Docs by LangChain (MCP)

25One reviewer consistently scores much more harshly than the others. How do you handle it?Often asked

Because feedback is attributed per reviewer, you can measure each person's agreement with peers and with adjudicated outcomes. A consistently harsh reviewer is not necessarily wrong. They may be applying the rubric more strictly, so look at the adjudicated cases first. If they are out of line, run a calibration session using examples with known answers and clarify the rubric anchors. If the rubric itself is ambiguous, fix the wording for everyone. While this is resolved, the multi-reviewer requirement and adjudication protect the dataset, because a lone outlier creates a dispute rather than a bad reference output. Avoid silently discarding someone's scores, since that hides real rubric problems.

Sourced from Docs by LangChain (MCP)

26Why keep end-user feedback and reviewer feedback under separate keys?Often asked

They measure different things and have different reliability. A thumbs-down from a user tells you something about their experience, but it may reflect a valid refusal, a slow response or an unrelated frustration. Reviewer feedback follows a rubric. Mixing them under one key makes it impossible to compute reviewer agreement, to calibrate the judge against human labels, or to see when user sentiment and expert judgement differ. Keeping separate keys lets user feedback act as a routing signal for the automation rule, while reviewer and adjudicated feedback decide what gets exported. The judge's scores should also stay under their own source, so you always know who said what.

Sourced from Docs by LangChain (MCP)

27Your app is instrumented with OpenTelemetry, not the LangSmith SDK. What changes in this workflow?Often asked

Very little downstream. LangSmith accepts traces through its OTLP endpoint, so spans become runs in a tracing project, and the online evaluators, automation rules and queues work the same way. The main work is making sure span attributes map to useful inputs, outputs and metadata, so reviewers can read the trace and filters can match on it. If you also send telemetry to other backends, use an OpenTelemetry collector to fan out to LangSmith and your existing observability tools. Put redaction in the collector or the app, before data leaves your environment. Check that multi-turn conversations carry a consistent thread identifier so threads are grouped correctly.

Sourced from Docs by LangChain (MCP)

28When would you choose a pairwise annotation queue over a single-run queue here?Often asked

Use a single-run queue to judge individual production runs against a rubric and assertions and to build reference outputs, which is the core of this workflow. Use a pairwise queue when the question is relative: which of exactly two experiments produced the better output for the same input, for example when comparing a candidate prompt or model with the current one. Pairwise judgements are often easier and more consistent for humans than absolute scores, especially for subjective qualities like tone. But they don't directly give you reference outputs. Many teams use both: single-run review feeds the dataset, and pairwise review helps decide between close experiments.

Sourced from Docs by LangChain (MCP)

29When a reviewer corrects an output, how do you keep an audit trail?Often asked

Never lose the original. The production run keeps the model's actual output. Reviewer feedback and comments, attributed to each person, explain why it was judged wrong. The corrected output appears only in the dataset example, together with metadata linking back to the source run and recording who approved it. Dataset versioning keeps earlier versions if a reference is later changed. With this setup you can always answer three questions: what did the model say, who judged it, and who decided the reference. That matters for debugging regressions, for resolving disputes about the rubric, and for any compliance review of how evaluation data was produced.

Sourced from Docs by LangChain (MCP)

30A policy change makes some existing reference outputs wrong. How do you handle stale references?Often asked

First identify the affected examples, using metadata such as category or tags, or by running an evaluator that checks against the new policy. Don't edit them silently. Route them back through review, ideally the same queue with updated instructions, so corrections get the same multi-reviewer and adjudication safeguards. Update the examples through a new dataset version, so old experiments remain interpretable against the version they used. Temporarily exclude disputed examples from the regression split rather than letting a mix of old and new policy produce confusing results. Afterwards, re-run the baseline experiment, so comparisons start from the updated references.

Sourced from Docs by LangChain (MCP)

31How do you avoid leakage when using human labels as few-shot examples for the LLM-as-judge?Often asked

Split the human-labelled data. One part supplies few-shot examples for the judge prompt. A separate held-out part, never shown to the judge, is used to measure its agreement with humans. If the same examples appear in both, measured agreement will look better than real-world performance. Also keep the few-shot set diverse across categories and score levels, so the judge does not learn that, say, short answers always fail. Version the judge prompt in the Prompt Hub, so you know which few-shot set produced which agreement numbers. Refresh both sets periodically with newly adjudicated labels as production behaviour changes.

Sourced from Docs by LangChain (MCP)

32How would you use webhooks or alerts around the annotation queue?Sometimes asked

Automation rules can trigger webhooks, and dashboards support alerts, so the loop can connect to existing tools. Examples include notifying a lead reviewer's channel when disputed runs pile up, or opening a ticket when the online judge's score drops sharply on a route. You can also alert when queue backlog or the age of the oldest unreviewed run passes a threshold your team chooses. Webhook receivers should authenticate requests, handle duplicate deliveries idempotently, and avoid copying full trace contents into chat tools. Send a link to the run instead, so access control stays in LangSmith.

Sourced from Docs by LangChain (MCP)

33How do you decide how many reviewers each run needs?Sometimes asked

Base it on risk and on measured agreement. High-stakes categories, such as medical, financial or legal answers, or runs destined for the regression split, deserve more reviewers, so one mistaken opinion can't become truth. For low-risk categories with historically high agreement, fewer reviewers may be enough, with spot checks. Start higher during a pilot to measure agreement. Then lower the count only for keys and categories where agreement is reliably strong. Remember that the count multiplies review workload directly, so it is one of the main levers in the staffing estimate. You can split traffic into separate queues with different reviewer counts.

Sourced from Docs by LangChain (MCP)

Objective questions 33

1Which mechanism mainly prevents two reviewers from working on the same queued run at the same time?Asked almost every time
  1. APrompt Hub tags
  2. BDataset versioning
  3. CThe reservation given to the reviewer who opens the runCorrect answer
  4. DThe online evaluator's sampling rate

Why: A reservation hands a run to one reviewer, so no one else works on it until the reservation is released or expires.

Sourced from Docs by LangChain (MCP)

2A reviewer opens a run, then leaves without submitting. What should happen?Asked almost every time
  1. AThe run stays locked forever
  2. BThe run is deleted
  3. CThe run is exported automatically
  4. DThe reservation expires and the run returns to the queueCorrect answer

Why: Reservations expire, which returns the run to the queue for another reviewer.

Sourced from Docs by LangChain (MCP)

3Where are a reviewer's rubric scores and assertion answers stored?Asked almost every time
  1. AAs feedback on the run, attributed to that reviewerCorrect answer
  2. BIn the prompt commit message
  3. CAs a new tracing project
  4. DOnly in the reviewer's browser

Why: Review results are stored as feedback on the run, attributed to the reviewer.

Sourced from Docs by LangChain (MCP)

4Two of three reviewers pass a run, and one fails a key assertion. What should happen under this workflow?Asked almost every time
  1. ADelete the third reviewer's feedback
  2. BLet the LLM-as-judge decide and export
  3. CExport immediately with the majority score
  4. DSend the run to a lead reviewer for adjudicationCorrect answer

Why: Disputed runs go to a lead reviewer, and disputed runs must never become reference outputs without adjudication.

Sourced from Docs by LangChain (MCP)

5What is the main purpose of a reservation in a LangSmith annotation queue?Very often asked
  1. ATo hold a run for one reviewer so others do not work on it at the same timeCorrect answer
  2. BTo lock the dataset while an export runs
  3. CTo reserve LLM-as-judge capacity for the queue
  4. DTo guarantee a run is stored with extended retention

Why: A reservation assigns a queued run to a single reviewer for a period and releases it if they do not finish. This prevents duplicate or conflicting reviews.

Sourced from Docs by LangChain (MCP)

6Which queue type should you use to have humans compare outputs from exactly two experiments side by side?Very often asked
  1. ASingle-run queue with assertions
  2. BOnline evaluator with a pairwise template
  3. CPairwise annotation queueCorrect answer
  4. DAutomation rule with a webhook

Why: Pairwise annotation queues are built for comparing exactly two experiments. Single-run queues grade individual runs against a rubric.

Sourced from Docs by LangChain (MCP)

7Which environment variable turns on LangSmith tracing for the SDK?Very often asked
  1. ALANGSMITH_TRACINGCorrect answer
  2. BLANGSMITH_QUEUE
  3. COTEL_DATASET
  4. DLANGCHAIN_REVIEW

Why: LANGSMITH_TRACING enables tracing, together with @traceable or wrappers such as wrap_openai.

Sourced from Docs by LangChain (MCP)

8Which component adds low-scoring production runs to the annotation queue automatically?Very often asked
  1. AA pytest marker
  2. BAn automation ruleCorrect answer
  3. CA Prompt Hub tag
  4. DA dataset split

Why: Automation rules match runs by filters, such as low judge scores, and add them to the annotation queue.

Sourced from Docs by LangChain (MCP)

9Why include a random calibration sample in addition to low-scoring runs?Very often asked
  1. ATo reduce trace retention
  2. BTo measure the judge on runs it did not flag and catch its blind spotsCorrect answer
  3. CTo avoid writing feedback
  4. DTo satisfy the pairwise queue's two-experiment limit

Why: Runs selected only by the judge hide its blind spots, while an independent random sample allows unbiased judge-versus-human comparison.

Sourced from Docs by LangChain (MCP)

10What side effect does running an online evaluator on a trace have?Very often asked
  1. AThe trace is deleted after scoring
  2. BThe trace is upgraded to extended retentionCorrect answer
  3. CThe trace becomes a dataset example
  4. DThe trace is moved to a pairwise queue

Why: Running an online evaluator upgrades a trace to extended retention.

Sourced from Docs by LangChain (MCP)

11Which LangSmith object stores inputs plus reference outputs for regression experiments?Very often asked
  1. AAn automation rule
  2. BA tracing project
  3. CA thread
  4. DA dataset of examplesCorrect answer

Why: Datasets hold examples made of inputs and reference outputs, and experiments run against them.

Sourced from Docs by LangChain (MCP)

12A pairwise annotation queue compares outputs from how many experiments?Very often asked
  1. AExactly three
  2. BOnly one
  3. CExactly twoCorrect answer
  4. DAny number

Why: Pairwise queues compare exactly two experiments.

Sourced from Docs by LangChain (MCP)

13Which pytest marker turns test cases into LangSmith examples and experiments?Very often asked
  1. A@pytest.mark.trace
  2. B@pytest.mark.langsmithCorrect answer
  3. C@pytest.mark.queue
  4. D@pytest.mark.judge

Why: The pytest integration uses @pytest.mark.langsmith.

Sourced from Docs by LangChain (MCP)

14What is the safest place to apply a reviewer's corrected output?Very often asked
  1. AUse it as the reference output of the exported dataset example, keeping the original run unchangedCorrect answer
  2. BStore it in the online evaluator's prompt
  3. CAdd it to the tracing project name
  4. DOverwrite the production run's output

Why: Corrections become the example's reference output at export, while the original run preserves what the model actually said.

Sourced from Docs by LangChain (MCP)

15Which input matters least when estimating reviewer headcount for the queue?Very often asked
  1. AMedian minutes per review
  2. BThe number of prompt tags in the Prompt HubCorrect answer
  3. CRuns routed to the queue per day
  4. DReviewers required per run

Why: Workload depends on routed volume, reviewers per run, dispute rate and review time, not on how many prompt tags exist.

Sourced from Docs by LangChain (MCP)

16A reviewer marks a run's output as incorrect and writes the correct answer. What should happen when the run is exported to a dataset?Often asked
  1. AExport it with the corrected output as the reference outputCorrect answer
  2. BConvert it into an online evaluator rule
  3. CExport the original model output as the reference output
  4. DSkip exporting it because failed runs do not belong in datasets

Why: A failed run with a corrected reference output is exactly the regression case a dataset needs. Exporting the original wrong output would make tests reward the bug.

Sourced from Docs by LangChain (MCP)

17What groups the traces of a multi-turn conversation in LangSmith?Often asked
  1. AA threadCorrect answer
  2. BA rubric
  3. CA commit
  4. DA split

Why: Threads group multi-turn conversations.

Sourced from Docs by LangChain (MCP)

18Which function runs an offline experiment over a dataset with options such as repetitions and concurrency?Often asked
  1. Awrap_openai()
  2. Bexport()
  3. Ctraceable()
  4. Devaluate()Correct answer

Why: evaluate() runs experiments and supports repetitions, concurrency and caching.

Sourced from Docs by LangChain (MCP)

19How should you send OpenTelemetry traces to both LangSmith and an existing observability backend?Often asked
  1. AExport traces to a dataset first
  2. BIt cannot be done
  3. CRun two copies of the app
  4. DUse an OpenTelemetry collector to fan out, with LangSmith's OTLP endpoint as one destinationCorrect answer

Why: LangSmith supports native OpenTelemetry through an OTLP endpoint, and a collector can fan out to several backends.

Sourced from Docs by LangChain (MCP)

20In the queue configuration, what are rubric items built from?Often asked
  1. AFeedback keysCorrect answer
  2. BPrompt tags
  3. CDataset splits
  4. DOTLP span names

Why: The single-run queue rubric is defined from feedback keys, which reviewers score.

Sourced from Docs by LangChain (MCP)

21How are prompt versions tracked so experiments can be linked to the change that triggered them?Often asked
  1. AThrough reservation IDs
  2. BThrough queue reviewer counts
  3. CThrough retention tiers
  4. DThrough Prompt Hub commits and tagsCorrect answer

Why: Prompts are versioned in the Prompt Hub with commits and tags.

Sourced from Docs by LangChain (MCP)

22Which library provides trajectory evaluators, such as a trajectory LLM-as-judge, for agents?Often asked
  1. APrompt Hub
  2. BagentevalsCorrect answer
  3. Cwrap_openai
  4. DVitest

Why: agentevals provides trajectory evaluators, including a trajectory LLM-as-judge.

Sourced from Docs by LangChain (MCP)

23Which practice best prevents a run from being exported twice to the same dataset?Often asked
  1. AUse a pairwise queue
  2. BRaise the sampling rate
  3. CRecord the source run ID on each example and check for it before exportingCorrect answer
  4. DRequire more reviewers

Why: Using the source run ID as a natural key makes export idempotent and avoids duplicate examples.

Sourced from Docs by LangChain (MCP)

24An automation rule suddenly floods the queue. What is the best first action?Often asked
  1. AExport all queued runs
  2. BDelete the dataset
  3. CAsk reviewers to work faster
  4. DPause or narrow the rule, then investigate the causeCorrect answer

Why: Stop the inflow first, then decide whether the spike is a real incident or a misconfigured filter or judge.

Sourced from Docs by LangChain (MCP)

25Why keep human few-shot examples for the judge separate from the held-out set used to measure it?Often asked
  1. ABecause pairwise queues require it
  2. BBecause few-shot examples cannot be stored in datasets
  3. CTo reduce trace retention
  4. DTo avoid leakage that inflates measured judge accuracyCorrect answer

Why: Testing the judge on its own demonstrations overstates how well it agrees with humans.

Sourced from Docs by LangChain (MCP)

26Which data protection step should come first in this workflow?Often asked
  1. ARedact only after export
  2. BRely on reservations to hide data
  3. CRaise the sampling rate
  4. DRedact sensitive fields before they are tracedCorrect answer

Why: Minimising data at the source means reviewers, retained traces and datasets never hold more than needed.

Sourced from Docs by LangChain (MCP)

27End-user thumbs-down and reviewer correctness scores are recorded under the same feedback key. What is the main problem?Often asked
  1. AReviewer agreement and judge calibration become impossible to measure cleanlyCorrect answer
  2. BReservations stop working
  3. CExports fail
  4. DTraces lose extended retention

Why: Mixing sources with different reliability under one key hides who judged what, which breaks agreement and calibration analysis.

Sourced from Docs by LangChain (MCP)

28Which signal best shows that the online LLM-as-judge has drifted?Often asked
  1. AFalling agreement between judge and human scores on the random calibration sampleCorrect answer
  2. BMore prompt commits
  3. CMore dataset splits
  4. DShorter reservation times

Why: The calibration sample has both judge and human labels, chosen independently of judge scores, so changes in agreement reveal drift.

Sourced from Docs by LangChain (MCP)

29A policy change makes some reference outputs wrong. What is the best approach?Often asked
  1. ALeave them and ignore failures
  2. BEdit them silently in place
  3. CRe-review the affected examples through the queue and update them as a new dataset versionCorrect answer
  4. DDelete the whole dataset

Why: Re-review keeps the multi-reviewer safeguards, and versioning keeps older experiments interpretable.

Sourced from Docs by LangChain (MCP)

30What is a dataset split such as 'regression' or 'edge-case' mainly used for?Sometimes asked
  1. ASetting reservation timeouts
  2. BGrouping conversation turns
  3. CLimiting reviewer access
  4. DRunning or reporting experiments on subsets of a datasetCorrect answer

Why: Splits tag examples so experiments can target or report on specific subsets.

Sourced from Docs by LangChain (MCP)

31Which wrapper traces OpenAI client calls automatically?Sometimes asked
  1. Atraceable_queue
  2. Botlp_wrap
  3. Clangsmith_judge
  4. Dwrap_openaiCorrect answer

Why: wrap_openai wraps the OpenAI client so its calls are traced.

Sourced from Docs by LangChain (MCP)

32Online evaluators in LangSmith can run on which targets?Sometimes asked
  1. AProduction runs or threads, with filters and sampling ratesCorrect answer
  2. BOnly datasets
  3. COnly prompt commits
  4. DOnly pairwise queues

Why: Online evaluation runs on production runs or threads, with filters and sampling rates.

Sourced from Docs by LangChain (MCP)

33Besides production traces, which sources can feed examples into a LangSmith dataset?Sometimes asked
  1. AOnly production traces
  2. BCurated cases and synthetic dataCorrect answer
  3. COnly pairwise queue outputs
  4. DOnly OTLP spans

Why: Datasets can be built from curated cases, production traces or synthetic data.

Sourced from Docs by LangChain (MCP)

Track your progress through every blueprint in your dashboard.

Start learning