LangSmith blueprint · AI / LLM applications
Online evaluation & production alerts
Scores sampled production runs and threads with online evaluators, shows quality, latency and cost on dashboards, and uses alerts and automation rules to route bad runs to human review and regression datasets. It must never let a quality or cost regression go unseen, and never blow the judge budget by scoring every trace.
- Steps
- 9
- Subjective questions
- 33
- Objective questions
- 33
The problem and the outcome
Problem: Offline experiments only cover the cases someone thought to write down, so real users hit failures such as hallucinations, broken tool calls and frustrated multi-turn conversations that nobody sees until complaints arrive. Reading raw traces by hand does not scale past a trickle of traffic.
Outcome: Every production project has continuous, sampled quality scores next to latency and cost. Threshold breaches page the on-call engineer, and low-scoring runs land in annotation queues automatically, then become dataset examples that guard future prompt and model changes.
Architecture
How it works, step by step
- Instrument the app with LANGSMITH_TRACING plus @traceable or wrappers such as wrap_openai, or use the LangChain/LangGraph integration or the OpenTelemetry OTLP endpoint. Pass a stable thread or session id in metadata so multi-turn conversations group into threads.
- Traces land in a per-environment project, such as prod-support-bot, which kept apart from staging so dashboards and evaluators only see real traffic. Runs carry metadata like prompt tag, model, tenant and user tier for later filtering.
- Configure run-level online evaluators on the project. Each has a filter (for example root runs only, or a specific tag) and a sampling rate. Cheap code rules like JSON validity or a PII regex can run broadly, while LLM-as-judge checks for groundedness or helpfulness run on a smaller sample.
- Configure thread-level evaluators that score a whole conversation once it is complete, for example whether the user's goal was resolved or whether frustration was detected. Single-turn judges miss these failures.
- Build dashboards from built-in project metrics (trace count, error rate, latency percentiles, token usage and cost) next to feedback scores from the evaluators. Group them by metadata such as model or prompt tag.
- Define alerts on key metrics, such as error rate, latency or average feedback score over a window. When a threshold is breached, notify the on-call engineer via PagerDuty or a webhook to Slack, with a link back to the filtered runs.
- Automation rules watch the project with a filter, such as a judge score below the bar, negative user feedback or an errored tool call. They take actions: add the run to an annotation queue, add it to a dataset, trigger a webhook or extend retention.
- Reviewers work the annotation queue against a rubric, and reservations stop two people grabbing the same run. They correct the output and export confirmed failures to a regression dataset.
- Engineers fix the prompt in the Playground, run evaluate() against the regression dataset and compare it with the current production experiment. The winning commit is tagged in the Prompt Hub, and the app pulls it by tag.
Tech stack
- LangSmith tracing SDK (@traceable, wrap_openai) or OpenTelemetry via OTLP
- LangSmith projects and threads
- LangSmith online evaluators (LLM-as-judge templates, code evaluators)
- LangSmith dashboards and alerts
- LangSmith automation rules and webhooks
- LangSmith annotation queues and datasets
- Prompt Hub / Playground with commits and tags
- PagerDuty or Slack for on-call notification
Key design decisions
- Use tiered sampling. Run deterministic code evaluators at a high rate and LLM-as-judge at a low rate, raising the rate temporarily after a deploy. Judge cost and the extended-retention upgrade that comes with every evaluated trace both scale with the sampling rate.
- Keep separate projects per environment and filter evaluators to root runs, so child LLM and tool spans are not double-scored and staging noise does not pollute production dashboards.
- Evaluate conversations at the thread level as well as per run, because failures like unresolved goals and looping agents only appear across turns.
- Route only failures to humans. Automation rules filter on low judge scores, negative user feedback and errors, so annotation queue volume stays within reviewer capacity.
- Close the loop through datasets. Every confirmed production failure becomes an offline regression example, so online evaluation feeds offline gating instead of staying a separate monitoring silo.
Common mistakes
- Running an LLM judge on 100% of traffic. It multiplies cost, and every evaluated trace moves to extended retention, which increases storage spend.
- Trusting an uncalibrated judge. Spot-check judge scores against human labels from the annotation queue and add few-shot examples before alerting on them.
- Alerting on noisy, low-volume windows. A handful of sampled runs can swing an average score, so pick windows and thresholds that reflect real sample sizes, or alert on counts.
- Missing thread ids, which leaves multi-turn conversations as disconnected runs and makes thread evaluators useless.
- Automation rules with filters that are too broad, which flood annotation queues so that reviewers rubber-stamp or ignore them.
What to measure
- Sampled online evaluator scores (groundedness, helpfulness, format validity) by prompt tag and model
- Thread-level resolution or goal-success rate
- Error rate and p50/p95/p99 latency per project
- Token usage and cost per trace and per conversation
- Annotation queue backlog and time-to-review for routed runs
Most-asked interview questions
Subjective questions 33
1How would you decide sampling rates for online evaluators in production?Asked almost every time
I'd tier them by cost and signal. Deterministic code evaluators, like schema validity, PII regexes or tool-call errors, are nearly free, so they run on a high share of root runs. LLM-as-judge evaluators cost a model call each, and in LangSmith every evaluated trace is upgraded to extended retention, so I start with a small sample sized to give a stable daily average for the traffic volume. I raise the sample temporarily after a prompt or model deploy, or for a risky segment like a new tenant, using filters on metadata. I also set the sample with alert windows in mind: if a window only contains a handful of scored runs, the alert will be noise.
Sourced from Docs by LangChain (MCP)
2Design an online evaluation and alerting pipeline for a production support chatbot built on LangSmith.Asked almost every time
I would instrument the app with LANGSMITH_TRACING plus @traceable or wrap_openai, passing a stable thread id in metadata. Traces go to a dedicated prod project, separate from staging, tagged with prompt tag, model, tenant and user tier. On that project I attach run-level online evaluators: cheap code rules on a broad slice and LLM-as-judge on a small sample. Thread-level evaluators score completed conversations. Dashboards show trace count, error rate, latency percentiles, tokens and cost next to feedback scores, grouped by prompt tag and model. Alerts on those metrics page on-call through PagerDuty or Slack webhooks. Automation rules route low scores and negative feedback to annotation queues. Reviewers export confirmed failures to a regression dataset, and prompt fixes are gated by evaluate() before a new Prompt Hub tag is promoted.
Sourced from Docs by LangChain (MCP)
3How do you estimate and cap the monthly cost of LLM-as-judge evaluators?Asked almost every time
I work it out as a formula and avoid guessing. Judge cost is roughly matching runs per day times the sampling rate, times the number of judge evaluators, times tokens per judge call, times the judge model price. Tokens per call include the judge prompt, any few-shot examples and the run's input and output, which can be large for RAG context. Filters shrink the first term, for example by judging only root runs. I also add the extended-retention cost, because every evaluated trace is upgraded. Then I set sampling rates so the total fits the budget, and I watch it on the dashboard. Code rules carry the broad coverage, so a judge sample can stay small and still be informative.
Sourced from Docs by LangChain (MCP)
4How do you make sure an LLM-as-judge score can be trusted?Asked almost every time
I calibrate it against humans before it drives alerts. I take a set of production runs, have reviewers label them in an annotation queue with the same rubric, and compare their labels with the judge's scores. Where they disagree, I refine the judge prompt, add few-shot examples taken from the corrections, or tighten the rubric into clearer criteria. The judge prompt and model are versioned so a score change can be traced to a judge change and not a product change. After launch I keep a small human-review stream on randomly sampled runs to detect drift. Prebuilt templates are a starting point, not a guarantee.
Sourced from Docs by LangChain (MCP)
5Walk me through safely shipping a prompt fix after a regression is found.Asked almost every time
I reproduce the failure in the Playground with examples from the regression dataset and edit the prompt there, so the change is a new commit in the Prompt Hub. I run evaluate() against the regression dataset, using repetitions if outputs vary, along with the broader benchmark dataset to check that nothing else broke. I compare that experiment with the current production version on the same evaluators. Only if it wins do I move the production tag to the new commit. The app pulls the prompt by tag, so the rollout needs no code deploy, and rollback simply moves the tag back. Afterwards I watch dashboards grouped by prompt tag to confirm the fix in production.
Sourced from Docs by LangChain (MCP)
6Why evaluate threads and not just individual runs?Very often asked
Many real failures are invisible turn by turn. Each answer might look fine on its own, yet the user rephrases the same question four times, the agent loops on a tool, or the conversation ends without the goal resolved. A thread evaluator sees the whole conversation and can judge resolution, frustration or repeated clarifications. To make it work, the app must pass a consistent thread or session id so LangSmith groups the runs. Then I pair thread scores with run scores. The run scores tell me which turn broke, and the thread score tells me whether the user actually got what they came for, which is closer to the business outcome.
Sourced from Docs by LangChain (MCP)
7Walk me through what happens after an online evaluator flags a bad answer.Very often asked
The evaluator writes feedback onto the run, and an automation rule filtering on a low score picks it up. The rule adds the run to an annotation queue and can also fire a webhook. If many runs fail in a window, the alert on average score or error rate pages on-call through PagerDuty or Slack. A reviewer works the queue with a rubric, confirms or overturns the judge, writes the correct output and exports it to a regression dataset. Engineers then change the prompt in the Playground, run evaluate() against that dataset and compare it with the production experiment. If it wins, they tag the new commit in the Prompt Hub. That way a production failure becomes a permanent test.
Sourced from Docs by LangChain (MCP)
8Why keep production and staging traces in separate LangSmith projects?Very often asked
Online evaluators, dashboards, alerts and automation rules are all configured per project. If staging traffic mixes in, test prompts, synthetic users and load tests distort error rates, latency percentiles and average scores. That can cause false alerts or hide a real regression. Judge budget also gets spent on traffic nobody cares about. A per-environment project such as prod-support-bot keeps every metric tied to real users. It also makes access control simpler, because production data often carries personal information and only some people should see it. Staging can still have its own lighter evaluators so problems are caught before release, but the two signal streams never contaminate each other.
Sourced from Docs by LangChain (MCP)
9What metadata would you attach to each run, and how does it pay off later?Very often asked
At minimum I attach the thread or session id, prompt tag or commit, model name, app version, tenant and user tier. A request or route identifier also helps. Each field becomes a filter or a grouping key. Dashboards grouped by prompt tag show whether a new commit lowered the groundedness score. Grouping by model separates cost and latency changes after a provider switch. Tenant and tier let evaluator filters spend more judge budget on high-value segments and let alerts fire per segment instead of averaging problems away. Automation rules can also use metadata, for example routing only enterprise-tier failures to a priority queue. Without this metadata you can see that quality dropped, but not why or for whom.
Sourced from Docs by LangChain (MCP)
10When would you use a code-rule evaluator instead of an LLM-as-judge online?Very often asked
I use code rules whenever the property can be checked deterministically. Good examples are JSON or schema validity, a PII regex, refusal phrases, required citations, response length or forbidden tool names. They cost almost nothing, are fast and never drift, so they can run at a high sampling rate. LLM-as-judge is for semantic properties a rule cannot capture, such as groundedness against retrieved context, helpfulness or tone. Those judges are slower, cost money per call and need calibration against humans. The usual design layers them. Code rules cover almost everything, while judges run on a sample or on a filtered subset, for example runs a code rule already marked suspicious.
Sourced from Docs by LangChain (MCP)
11How does a thread-level evaluator know when a conversation is finished?Very often asked
Threads are built from runs that share the same thread or session id in metadata. A conversation rarely sends an explicit end event, so the evaluator is set to score a thread once it is considered complete, usually after a configured period with no new turns. That timing matters. If it is too short, you score half-finished conversations and wrongly flag the goal as unresolved. If it is too long, alerts on resolution rate lag behind reality. I choose the window from how users actually behave, and I make sure the app passes the same id on every turn. Otherwise one conversation splits into several threads and every score is misleading.
Sourced from Docs by LangChain (MCP)
12How do you design alerts that catch real regressions without causing alert fatigue?Very often asked
I alert on a few metrics tied to user impact: error rate, a latency percentile, average judge score and cost, each measured over a window. A window smooths single bad runs. Thresholds come from observed baselines, not round numbers. For sampled judge scores, the window must hold enough scored runs to be meaningful. Alerts are scoped with filters, such as per prompt tag or tier, so a small segment's regression is not averaged away. Every notification links to the filtered runs, so on-call can triage quickly. I split severity: pages for errors and outages, Slack for slower quality drift. Then I review which alerts were acted on and retune the rest.
Sourced from Docs by LangChain (MCP)
13Which metrics belong on the production dashboard and why?Very often asked
I start with the built-in project metrics: trace count for traffic, error rate for reliability, latency percentiles such as p50 and p99 for user experience, and token usage and cost for spend. Next to them I place feedback scores from online evaluators, such as JSON validity rate, groundedness, helpfulness and thread-level resolution, plus explicit user feedback. Every chart can be grouped by metadata such as model, prompt tag or tenant. That grouping turns a dashboard from a status page into a diagnostic tool. A cost jump grouped by model, for example, points straight at a routing change. I also chart the evaluators themselves, including how many runs they scored, so a silent evaluator is noticed.
Sourced from Docs by LangChain (MCP)
14How would you catch a cost regression before the monthly bill arrives?Very often asked
Cost and token usage are built-in project metrics, so I chart them over time grouped by model and prompt tag, and I alert when cost over a window crosses a baseline-derived threshold. Common causes include a prompt commit that adds long instructions, a retrieval change that stuffs more context, an agent loop making extra tool calls, or a fallback to a pricier model. Grouping by prompt tag shows which release caused it. Grouping by tenant shows whether one customer's usage pattern did. A code rule can flag individual runs whose tokens exceed a limit and route them to review. Judge spend should be tracked as well, since evaluators add their own cost.
Sourced from Docs by LangChain (MCP)
15Your judge samples only a small share of traffic. How do you still detect quality regressions reliably?Very often asked
Sampling gives an estimate, so I make sure each alert window contains enough scored runs for the average to be stable. For low-traffic segments that may mean a longer window or a higher sampling rate for that segment's filter. I combine signals: broad code rules, explicit user feedback and error rates all cover far more traffic than the judge. After a deployment I temporarily raise sampling on runs with the new prompt tag, then lower it once confidence is established. Grouping by prompt tag also compares old and new versions side by side. Before release, the offline regression suite catches known failure modes, so online sampling mainly needs to find new ones.
Sourced from Docs by LangChain (MCP)
16How do you handle privacy when production traces are sent to an LLM judge and to human reviewers?Very often asked
Production traces may contain personal data, so I minimise it at the source. Sensitive fields are redacted or masked before they are traced, and only the fields the evaluator needs are logged. The judge's model provider must be approved under the same data agreements as the main app. Annotation queue access is restricted to trained reviewers, and workspace roles limit who can open the prod project. A PII regex code rule can flag leaks and route them for cleanup. I also remember that evaluated traces move to extended retention, so the retention policy and deletion obligations must cover them. Regression datasets built from production need the same review before they are shared.
Sourced from Docs by LangChain (MCP)
17How do annotation queues scale when automation rules send more runs than reviewers can handle?Very often asked
I control volume and prioritise. The filters on automation rules should be precise. Routing every low score is often too much, so I combine conditions, for example a low judge score plus negative user feedback, or an errored tool call on a paid tier. I keep separate queues by severity or domain, so urgent cases are not buried. Reservations stop two reviewers working the same run, and reviewer counts let me require more than one opinion only where it matters. A clear rubric keeps reviews fast and consistent. If backlog still grows, I sample within the rule's filter and look for clusters, since many flags usually come from one root cause.
Sourced from Docs by LangChain (MCP)
18How do reviewed failures become a useful regression dataset?Very often asked
In the single-run annotation queue, reviewers score the run against the rubric, confirm it is truly a failure, and correct the output so the example has a trustworthy reference. Confirmed cases are exported to a regression dataset as inputs plus the corrected reference output. I keep metadata such as failure category and source date, so the dataset can be sliced. Near-duplicates are pruned so one incident does not dominate. Then any prompt or model change runs evaluate() against that dataset and is compared with the current production experiment. Over time the dataset records every bug users actually hit, which makes it much more valuable than synthetic cases alone.
Sourced from Docs by LangChain (MCP)
19What happens if an online evaluator itself fails or the judge model times out?Very often asked
The run simply gets no feedback score from that evaluator. The danger is silence: an average score computed over fewer runs looks healthy, or the chart flattens and nobody notices. So I monitor evaluator coverage, meaning how many runs each evaluator scored in a window, and alert if it drops. Judge failures often come from rate limits, a changed model name, a revoked API key or oversized inputs, so I keep judge prompts within context limits. I treat evaluators as production code: versioned, tested on a few examples before enabling, and owned by a team. Missing scores should never be read as passing scores.
Sourced from Docs by LangChain (MCP)
20How do you use online evaluation as a guardrail during a gradual prompt rollout?Very often asked
The app pulls prompts by tag, and each run records which prompt tag or commit served it. During a rollout, part of the traffic uses the candidate. I group dashboards by prompt tag to compare error rate, latency, cost and judge scores between old and new on live traffic. I temporarily raise the sampling rate for runs with the candidate tag, so its scores reach a stable sample quickly. Alerts filtered to that tag give early warning. If the candidate is worse, I move the tag back, and no code deploy is needed. Its failing runs are routed to review and added to the regression dataset for the next attempt.
Sourced from Docs by LangChain (MCP)
21Why do you need both offline and online evaluation?Very often asked
Offline evaluation runs evaluate() on fixed datasets with reference outputs, so it is repeatable and comparable. It suits gating releases, regression tests and backtesting, and pytest or Vitest integrations put it in CI. But it only covers cases you thought of. Online evaluation scores real production runs and threads, so it catches new user behaviour, data drift and failures nobody anticipated. It usually has no reference output, and it is sampled. Each feeds the other: online failures, after human review, become offline regression examples, and offline results set the baselines for online alert thresholds. Relying only on offline misses drift. Relying only on online means shipping regressions before you find them.
Sourced from Docs by LangChain (MCP)
22What breaks if the app fails to pass a stable thread id?Often asked
Multi-turn conversations no longer group into threads. Each turn appears as an unrelated trace, so thread-level evaluators either have nothing to score or score fragments. Goal resolution and frustration detection become meaningless, because they depend on seeing the whole conversation. Debugging also gets harder, since a reviewer cannot see what the user asked three turns earlier. A subtler problem is ids that change mid-session, for example after a reconnect or a server-side regeneration, which split one conversation into two. I would generate the id once per session on the client or gateway, persist it, and add a code-rule check or dashboard metric for runs missing it.
Sourced from Docs by LangChain (MCP)
23What are the implications of online evaluators upgrading traces to extended retention?Often asked
There are three. First, cost: every evaluated trace is stored longer, so a high sampling rate raises storage spend as well as judge spend. Second, privacy: personal data in those traces lives longer, which has to match your retention and deletion commitments. Third, a benefit: the runs you scored, which are often the interesting ones, remain available for later review, dataset export and debugging. So when I set sampling rates and filters, I count retention as part of the budget. Automation rules can also extend retention deliberately for flagged runs, which is often cheaper than evaluating more broadly just to keep evidence.
Sourced from Docs by LangChain (MCP)
24When would you use a pairwise annotation queue?Often asked
Pairwise queues compare exactly two experiments, so I use them when absolute scores do not decide the question. A typical case is choosing between a current prompt and a candidate whose judge scores are close. Reviewers see both outputs for the same input and pick the better one, which is often easier and more consistent than scoring each on an absolute scale. That helps with subjective qualities such as tone or helpfulness. Pairwise LLM-as-judge evaluators can do something similar automatically, but a human pairwise pass is a good check before promoting a prompt tag on a sensitive change. For triaging single production failures, the single-run queue is the right tool.
Sourced from Docs by LangChain (MCP)
25How do you make webhook-driven automations robust?Often asked
I assume webhooks can be delayed, duplicated or lost. The receiver, such as a Slack relay or ticketing service, should be idempotent, keyed on the run id, so duplicate deliveries do not create duplicate tickets. It should respond quickly and do heavy work asynchronously. It must authenticate requests with a shared secret or a signed header, and it should not leak trace contents into channels with wide access. Send a link to the run instead of the full payload where possible. For anything critical, the webhook is not the only path. Dashboards and annotation queues still hold the data, so a missed notification does not mean a lost failure.
Sourced from Docs by LangChain (MCP)
26Why might you send traces through an OpenTelemetry collector instead of straight to LangSmith?Often asked
LangSmith accepts traces natively over an OTLP endpoint, so an app already instrumented with OpenTelemetry can send spans without rewriting its tracing code. A collector adds fan-out: the same spans can go to LangSmith for LLM-specific evaluation and to an existing observability backend for infrastructure monitoring. It is also a central place to drop noisy spans, add resource attributes such as environment, and redact sensitive fields before data leaves your network. The trade-off is one more component to run and scale. A misconfigured collector can silently drop traces, so I monitor trace counts on the LangSmith dashboard to catch gaps.
Sourced from Docs by LangChain (MCP)
27How would you evaluate an agent online, not just a single LLM call?Often asked
Agents fail in their trajectory, not only in the final answer. Online, I use code rules on child runs, for example flagging errored tool calls, too many steps or forbidden tools. An LLM-as-judge scores the final answer on a sample of root runs. Thread-level evaluators check whether the user's goal was resolved across turns. Automation rules route errored tool calls to review. Offline, the agentevals package provides trajectory evaluators, such as a trajectory LLM-as-judge, that compare the agent's sequence of steps against expectations. So problematic production trajectories go into a dataset and are scored with those evaluators when the agent's prompt or tools change.
Sourced from Docs by LangChain (MCP)
28How would you run online evaluation for a multi-tenant product?Often asked
Every run carries a tenant id in metadata, so evaluators, dashboards and alerts can be filtered or grouped by tenant. I can give high-value or regulated tenants a higher judge sampling rate through separate filters, while still running cheap code rules everywhere. Per-tenant charts stop a regression in one tenant's data or configuration from being averaged away by others. Privacy matters: some tenants may forbid sending their data to a third-party judge or into datasets. Their filters should exclude them from LLM judges and from automation rules that export to datasets. Reviewer access should respect tenant boundaries, and exports need checks so one customer's data does not appear in shared test sets.
Sourced from Docs by LangChain (MCP)
29How do you stop your regression dataset from becoming biased toward what the judge already catches?Often asked
If automation only routes judge-flagged runs, the dataset reflects the judge's blind spots. Failures the judge misses never get reviewed. I feed the queues from several sources: low judge scores, explicit negative user feedback, errored tool calls, code-rule hits, and a small random sample of runs that looked fine. Reviewer findings on that random stream show the judge's false negatives and improve its prompt or few-shot examples. I also label failure categories, so I can see whether some types are overrepresented. Finally, curated and synthetic cases fill gaps for rare but important scenarios that production traffic has not produced yet.
Sourced from Docs by LangChain (MCP)
30How do you prevent the judge itself from causing false regressions?Often asked
I pin the judge model version and keep the judge prompt versioned, so scores are only compared across a stable instrument. If I need to change the judge, I run old and new judges on the same labelled set, check agreement with human labels, and mark the switch on the dashboard so a step change is not mistaken for a product regression. Ideally I run both briefly in parallel. I avoid having the judge share the exact model and prompt style of the system under test, where it may favour its own outputs. And a human-reviewed sample stays in place as ground truth.
Sourced from Docs by LangChain (MCP)
31An alert fires at 2 a.m. that the average groundedness score dropped. What do you do?Often asked
I open the linked filtered runs and first check whether the alert is real. Did the evaluator's sample size drop, did the judge change, or is it a single tenant? Then I group by metadata: prompt tag, model, tenant and app version. A drop isolated to a new prompt tag means rolling the tag back. A drop tied to a retrieval or upstream data change shows up as low scores with weak retrieved context. I read a handful of the lowest-scoring runs to confirm the failure is genuine. After mitigation, I make sure those runs are in an annotation queue, so confirmed cases reach the regression dataset and a postmortem can follow.
Sourced from Docs by LangChain (MCP)
32Why alert on latency percentiles rather than average latency?Often asked
LLM latency is heavily skewed. Most requests may be quick while a tail of agent loops, long generations or retries takes much longer. An average hides that tail and can stay flat while a growing share of users waits a long time. Percentiles such as p95 or p99 show the worst experiences directly, and the dashboard exposes them as built-in metrics. I usually alert on a high percentile over a window and keep p50 on the chart for context. Grouping by model or prompt tag then shows whether a provider slowdown or a prompt producing longer outputs caused it. Sometimes latency regressions are really cost regressions too.
Sourced from Docs by LangChain (MCP)
33How would you combine explicit user feedback with evaluator scores?Often asked
User feedback, such as thumbs up or down or a correction, is attached to runs as feedback alongside evaluator scores, so both appear on dashboards and in filters. It covers every run a user rates without judge cost, but it is sparse and skewed toward strong reactions. I use it in three ways. First, as an automation rule trigger: negative feedback sends the run to the annotation queue. Second, as calibration: if users dislike runs the judge rated highly, the judge needs work. Third, as an alert signal over a window, alongside judge averages. Agreement between the two raises confidence, and disagreement shows exactly where human review should focus.
Sourced from Docs by LangChain (MCP)
Objective questions 33
1Which environment variable turns on LangSmith tracing for an application?Asked almost every time
Why: The reference notes name LANGSMITH_TRACING as the switch, used together with @traceable or wrappers.
Sourced from Docs by LangChain (MCP)
2Which evaluator is cheapest and safest to run at a high sampling rate?Asked almost every time
Why: Deterministic code rules cost almost nothing per run, unlike judge model calls or human time.
Sourced from Docs by LangChain (MCP)
3Which of these is NOT an automation rule action in the workflow?Asked almost every time
Why: Rules can queue, add to datasets, trigger webhooks or extend retention, while prompt fixes go through the Playground and evaluate().
Sourced from Docs by LangChain (MCP)
4Which side effect of running an online evaluator on a trace should you account for in cost planning?Very often asked
Why: LangSmith upgrades a trace to extended retention when an online evaluator runs on it, so higher sampling rates also raise retention costs.
Sourced from Docs by LangChain (MCP)
5Which LangSmith feature should send low-scoring production runs to human reviewers automatically?Very often asked
Why: Automation rules apply a filter, such as a low feedback score, and take an action like adding the run to an annotation queue. Pairwise queues compare exactly two experiments, so they do not fit this job.
Sourced from Docs by LangChain (MCP)
6Which wrapper traces calls made through the OpenAI client with minimal code change?Very often asked
Why: wrap_openai wraps the OpenAI client so its calls are traced automatically.
Sourced from Docs by LangChain (MCP)
7What groups the turns of a multi-turn conversation together in LangSmith?Very often asked
Why: Threads group multi-turn conversations, which requires a stable thread or session id on each run.
Sourced from Docs by LangChain (MCP)
8Why should the production project be kept apart from staging?Very often asked
Why: Evaluators and dashboards are attached per project, so mixing environments pollutes the signal.
Sourced from Docs by LangChain (MCP)
9Which failure is a thread-level evaluator best placed to catch?Very often asked
Why: Goal resolution and frustration emerge across turns, and single-turn judges miss them.
Sourced from Docs by LangChain (MCP)
10Which of these is a built-in project metric for dashboards, as opposed to evaluator feedback?Very often asked
Why: Trace count, error rate, latency percentiles, tokens and cost are built in, while the others come from evaluators.
Sourced from Docs by LangChain (MCP)
11A dashboard shows cost rising. Which grouping most directly reveals whether a model change caused it?Very often asked
Why: Runs carry model metadata, so grouping by model separates cost per model.
Sourced from Docs by LangChain (MCP)
12What should an alert notification include to speed up triage?Very often asked
Why: The workflow links alerts to the filtered runs so on-call can inspect the cases directly.
Sourced from Docs by LangChain (MCP)
13What do reservations in annotation queues prevent?Very often asked
Why: Reservations stop two people grabbing the same run.
Sourced from Docs by LangChain (MCP)
14How does the app pick up a newly approved prompt without a code change?Very often asked
Why: The winning commit is tagged in the Prompt Hub, and the app pulls by tag.
Sourced from Docs by LangChain (MCP)
15What is the quickest rollback after a bad prompt release?Very often asked
Why: Because the app pulls by tag, moving the tag reverts behaviour without a deploy.
Sourced from Docs by LangChain (MCP)
16Which function runs an offline experiment against the regression dataset?Very often asked
Why: evaluate() runs experiments, with options like repetitions, concurrency and caching.
Sourced from Docs by LangChain (MCP)
17Judge spend is over budget. Which change reduces it while keeping broad coverage?Very often asked
Why: Sampling and filters bound judge calls, while code rules keep coverage cheaply.
Sourced from Docs by LangChain (MCP)
18Which approach estimates daily judge calls correctly?Very often asked
Why: Only runs passing the filter and sampled are scored, once per judge evaluator.
Sourced from Docs by LangChain (MCP)
19An LLM judge's scores flatten and the run count it scored drops sharply. What is the most likely issue?Very often asked
Why: Falling coverage signals evaluator failure, and missing scores must not be read as passes.
Sourced from Docs by LangChain (MCP)
20Why should reviewers correct the output before exporting a failure to a regression dataset?Very often asked
Why: Dataset examples pair inputs with reference outputs that future experiments are checked against.
Sourced from Docs by LangChain (MCP)
21What two settings control which production runs an online evaluator scores?Often asked
Why: Online evaluators are configured with filters that select runs and a sampling rate. Repetitions and concurrency belong to offline evaluate(), and reviewer counts belong to annotation queues.
Sourced from Docs by LangChain (MCP)
22Which channels does the workflow use to notify on-call when an alert fires?Often asked
Why: Step 6 routes breaches to PagerDuty or a Slack webhook.
Sourced from Docs by LangChain (MCP)
23A pairwise annotation queue compares how many experiments?Often asked
Why: Pairwise queues work on exactly two experiments.
Sourced from Docs by LangChain (MCP)
24Why use repetitions when running evaluate() on a prompt fix?Often asked
Why: Repeating runs shows variance, so a comparison is not decided by one lucky output.
Sourced from Docs by LangChain (MCP)
25Which marker turns a pytest test into a LangSmith dataset and experiment?Often asked
Why: The notes list @pytest.mark.langsmith as the pytest integration.
Sourced from Docs by LangChain (MCP)
26Which package provides trajectory evaluators for agents?Often asked
Why: agentevals supplies trajectory evaluators such as trajectory LLM-as-judge.
Sourced from Docs by LangChain (MCP)
27What does an OpenTelemetry collector add in front of LangSmith's OTLP endpoint?Often asked
Why: The notes describe native OTLP ingest with fan-out via a collector.
Sourced from Docs by LangChain (MCP)
28Why base quality alerts on a window rather than on individual runs?Often asked
Why: Averaging over a window reduces noise from sparse sampled scores.
Sourced from Docs by LangChain (MCP)
29Which routing strategy best reduces judge blind spots in the regression dataset?Often asked
Why: Reviewing runs the judge passed reveals its false negatives.
Sourced from Docs by LangChain (MCP)
30For agents, which signal suits an automation rule that triggers human review?Often asked
Why: The workflow lists errored tool calls as a rule filter alongside low scores and negative feedback.
Sourced from Docs by LangChain (MCP)
31What privacy step should come before traces reach a third-party judge?Often asked
Why: Production traces may contain personal data, so they should be minimised before evaluation and review.
Sourced from Docs by LangChain (MCP)
32A webhook receiver gets the same run notification twice. What design handles this?Often asked
Why: Deliveries can repeat, so deduplicating by run id prevents duplicate tickets.
Sourced from Docs by LangChain (MCP)
33Which metadata lets you compare a candidate prompt with the current one on live traffic?Often asked
Why: Grouping dashboards and evaluator filters by prompt tag separates old and new versions.
Sourced from Docs by LangChain (MCP)
Track your progress through every blueprint in your dashboard.
Start learning