Product

Automate Langfuse LLM Observability with CloudThinker AI Agents

When an LLM feature gets worse instead of down, nobody gets paged. CloudThinker reads your Langfuse traces, scores and prompt versions read-only, works the regression end to end, and proposes the fix for a named person to approve.

8 min read
Cover Image for Automate Langfuse LLM Observability with CloudThinker AI Agents

Automate Langfuse LLM Observability with CloudThinker AI Agents

There's an on-call rotation at your company that nobody set up: the one that should fire when your LLM feature gets worse instead of down. An outage pages someone. A prompt change that makes summaries 15% vaguer pages no one. It surfaces two weeks later as a screenshot in a customer Slack channel, and then someone on the AI team loses an afternoon scrolling traces, trying to reconstruct what changed and when.

This is part three of our Langfuse LLM observability series. Part one mapped the failure modes that make LLM features degrade silently: quality regressions with no stack trace, token cost creep, latency stacking across chained calls. Part two covered instrumenting all of it with Langfuse's native tools: traces, versioned prompts, scores and evals, cost dashboards.

If you followed part two, your Langfuse project now captures everything. That's also the new problem. Langfuse will faithfully record the bad trace, the score dip and the cost spike, but someone still has to notice, read the traces, diff the prompt versions and work out whether the culprit was Tuesday's deploy or the model upgrade. That investigation loop is what CloudThinker runs on top of Langfuse.


Why dashboards and threshold alerts stop short

Part two ended with a cron job polling the Metrics API and posting to Slack when a number crosses a line. That's a reasonable build, and it has three structural limits.

  • Thresholds don't know what normal is per feature. A 0.05 score drop is noise on a feature with 30 judged traces a day and a real regression on one with 3,000. One static threshold is wrong for both.
  • An alert carries a number, not a cause. "support-answer score below 0.7" tells you where to start. The work is still reading traces, opening prompt history and checking what shipped.
  • The next question depends on the last answer. If the drop lines up with a prompt version, you diff it. If it doesn't, you check models, then retrieval, then input mix. A cron job can't branch on what it found.

The person who knows how to work the regression from part two exists on your team. The problem is that they're busy, and the regression doesn't wait for their review slot.

Connecting CloudThinker to Langfuse

01LLM telemetry

LangfuseLangfuse

  • Traces and generationsSpans, tokens, latency, model
  • ScoresUser feedback, LLM-as-a-judge, datasets
  • Prompt versionsVersions, labels, change history

Project API key pair

02Investigation

CloudThinkerCloudThinker

  • Baseline and watchCost, p95 and score per feature
  • InvestigatePrompt diffs, bad-trace samples, change timeline
  • Propose the fixWith evidence and a rollback path

Outside your request path

03Where the team works

Chat and tickets

  • SlackSlackFindings and approvals in the thread
  • Microsoft TeamsMicrosoft TeamsSame flow for Teams-first orgs
  • JiraFollow-ups with the investigation linked

Nothing new to watch

Your app keeps talking to Langfuse exactly as before. CloudThinker reads the resulting telemetry from the side.

CloudThinker connects to your Langfuse project through its public API using the project's API key pair: the public key and secret key you already use for the SDK, found under Project Settings → API Keys in Langfuse Cloud or your self-hosted instance. Paste the key pair and your Langfuse host URL into CloudThinker's connection screen, and the first sync starts. The whole flow takes about five minutes; the Langfuse connection guide walks through it step by step.

Two answers your security review will want:

  • Reads only, from day one. CloudThinker queries traces, generations, scores, prompt versions and cost data. It doesn't modify your prompts, your datasets or your Langfuse configuration unless you later allow that change through Auto Mode.
  • Your application traffic never routes through CloudThinker. Your app talks to Langfuse exactly as before; CloudThinker reads the resulting telemetry from the side. Nothing sits in your request path, so there's no new latency and no new failure mode in production.

What gets watched continuously

The signals part one argued are worth watching daily, now actually watched daily:

  • Cost per feature and per user. Token spend broken down by the trace names, tags and metadata you set in part two. Each feature gets its own cost baseline, so a per-request drift gets flagged, not only a scary monthly total.
  • Latency percentiles. p50, p95 and p99 per trace name and per generation. Chained calls are decomposed, so "the assistant got slow" resolves to "the retrieval span doubled after the embedding model swap."
  • Score trends. Whatever scores land in Langfuse (LLM-as-a-judge evals, user thumbs, custom pipeline scores) are tracked as a moving average per prompt version and per release, which is where quality regressions show up first.
  • Error and fallback rates. Failed generations, timeouts, malformed JSON output, guardrail trips: the failure shapes that never throw a clean exception but degrade the product anyway.

The data is the same as your part-two setup. What changes is timing: a score dip that starts Thursday afternoon becomes a finding Thursday afternoon, not a war room the following sprint.

One regression, end to end

01Window

Find the break

When the score, cost or p95 left its baseline, and for which feature.

02Versions

Diff prompts

The prompt versions live before and after, as a readable diff.

03Evidence

Read bad traces

A sample of low-score traces, summarized as one failure pattern.

04Changes

Correlate

Label moves, model changes and deploy markers in the same window.

05Output

Proposal

Likely cause, the fix, its expected effect and the rollback path.

Step three is the one teams skip when they're busy: actually reading the traces the score is about.

Here's the walkthrough with illustrative numbers. The summarize-ticket feature's judge score drops from 0.90 to 0.72 over two days. Nothing errors. CloudThinker picks it up because the drop is well outside that feature's normal day-to-day variation.

1. Pin the window. The score broke from baseline at 14:20 on Tuesday, scoped to summarize-ticket only. Other features held steady, which already makes a shared cause (a provider outage, a platform-wide model change) less likely.

2. Name the readings. Four explanations fit a score drop on one feature, and each predicts something checkable:

ReadingWhat it predictsWhat came back
Prompt changeA new version took the production label near 14:20v14 got the label at 14:12
Model changeGenerations show a new model value in the windowSame model before and after
Retrieval changeLow-score traces show bad or missing contextContext looks normal on sampled traces
Input mix shiftDrop concentrated in one tenant or input sizeDrop concentrated in inputs over ~3,000 tokens

3. Diff the versions. v13 to v14 changed two things: a tighter length instruction, and the removal of one few-shot example, the only one with a long input and a citation block in the output.

4. Read the bad traces. A sample of low-scoring traces from the window, summarized in one line: responses now omit the citation block whenever the input runs past about 3,000 tokens. Short inputs score the same as before.

5. Propose. The finding lands in the team's channel with the evidence attached: the score chart, the diff, five linked traces and the timeline. Two options: move the production label back to v13 now (instant, reversible), and stage a v15 that restores the long-input example on staging, with a dataset run against it before promotion.

The whole thing reads like what your best engineer would write after an hour with the traces. It arrives a few minutes after the window opens, with every claim linked to the Langfuse data behind it.

Nothing changes that you haven't allowed

CloudThinker acts within Auto Mode, so you decide what runs on its own and what waits for approval.

Every finding, proposal, approval and action lands in an audit trail: what regressed, what the evidence was, what was proposed, who approved, what changed. When someone asks "why did the prompt roll back last Tuesday?", the answer is a link, not archaeology.

What the first week typically surfaces

The numbers below are illustrative, a composite of what a first week tends to look like for a mid-market team running three or four LLM features through Langfuse. Yours will differ.

FindingDetailImpact
Silent quality regressionJudge score down 0.9 → 0.72 after prompt v14; diff shows a dropped few-shot exampleCaught in hours, not weeks
Cost creep on one featureSummarization cost per request up 60%, a retry loop resending full contextTypically 10 to 25% of LLM spend
Latency stackingp95 up 2.1s; retrieval span doubled after an embedding model changeOne prompt-flow change to fix
Malformed-output cluster4% of generations failing JSON parsing, all on inputs past ~3K tokensSilent fallbacks made visible
Zombie prompt versionsTwo features still pinned to prompt versions superseded months agoDrift and confusion removed

None of these findings is exotic. Each one is something Langfuse already recorded and nobody had time to read. The value isn't new data. It's that the reading, diffing and correlating happen continuously, and each row arrives with a proposed fix gated by approval.

Why this beats the traditional setup

Dashboards and polling alertsWith CloudThinker on top
DetectionStatic thresholds, or a weekly lookPer-feature baselines, checked continuously
First message"Score below 0.7"Window, likely cause and evidence
Prompt diffingSide-by-side view, a person reads itDiff summarized and tied to the failure pattern
Trace reviewWhen someone finds the timeSampled and summarized for every regression
RollbackA person decides, often days laterProposed with evidence, gated by Auto Mode

The deeper difference is where the investigation starts. With dashboards, it starts when a person notices. With an agent on top, it has already happened by the time anyone looks, and the person's job is to check the reasoning and decide.

Getting started

1. Connect read-only and ask about the last week.

"Why did our summarization quality scores drop this week? Diff the prompt versions around the regression and show me five example traces. Propose only, change nothing."

2. Find where the money goes.

"Which feature's cost per request grew fastest this month, and what changed in its traces, prompts or model settings around that time?"

3. Check a latency complaint against the spans.

"Compare p95 latency for the support-assistant trace before and after Tuesday's deploy, broken down by span."

Each answer cites the underlying Langfuse traces, scores and prompt versions, so you can verify it rather than trust it.

4. Let one scoped action run once the team trusts the findings.

"For the summarize-ticket prompt only: if the judge score drops more than 0.1 within 24 hours of a label change, move the production label back to the previous version and post the evidence. Prompt edits still come to me."

What CloudThinker won't do

"AI agent connected to the system that watches your AI" deserves a plain answer:

  • No prompt edits, label moves or dataset changes you haven't allowed. Every write goes through Auto Mode.
  • No actions outside the audit trail. Every proposal and action is logged with its evidence and its approver.
  • No product decisions. CloudThinker will tell you prompt v14 dropped the citation behavior and users scored it lower. Whether citations are worth 400 extra tokens per response is your call, and it stays yours.

Related reading

From recorded to resolved

Part one showed how LLM features degrade without ever going down. Part two gave you the Langfuse instrumentation to record all of it. The remaining work is reading what was recorded, on time, every time something moves. That's the part CloudThinker takes on, with a person approving every change until you decide otherwise.

Try CloudThinker free with 100 premium credits and no card required, then follow the Langfuse connection guide and see your project's first findings within the hour.

langfuseobservabilityllmopsllmtracingpromptmanagementaiagentcloudthinker