Everyone has GRPO now — it ships in every training library. The scarce, defensible input in agent training turned out to be the environment, and it looks suspiciously like your eval.
Search teams optimize NDCG. RAG teams copy them — and measure the wrong thing. For a pipeline that hands the whole top-k to a generator, recall is the floor and rank position is a second-order correction.
The chunk that matches your query best is rarely the chunk that answers it. Small-to-big retrieval fixes that — here's how the three patterns differ and which to reach for.
The list reads like a model-safety checklist. Read it again: most of the ten are not the model misbehaving — they're your architecture trusting the model too much. Agents make exactly those entries worse.
OpenAI shipped a drag-and-drop agent canvas in October, then posted its deprecation notice eight months later. The part that survived tells you which layer to build on.
Offline evals ask whether the agent matched a known answer. Online evals can't — there is no answer. Treating them as one pipeline with one metric is the mistake that lets agents pass every test and still fail in production.
The July 28 release candidate rips out sessions and the initialize handshake, deprecates Sampling and Roots, and adds MCP Apps — the clean break agent developers have to plan for.
Most teams assume LangGraph's checkpointer already makes their agents crash-proof. It doesn't — and the gap is architectural, not a missing setting. Here's exactly where it ends and where Temporal begins.
LangChain 1.0 reduced the agent to two lines and moved everything interesting into hooks. The quiet consequence: supervisor, swarm, and reflection stop being architectures and become middleware you stack.
Three different things hide under "structured output": valid JSON, the right shape, the right values. Each method buys you a different one — and none of them buys the last.
A tool description isn't documentation — it's a prompt you pay for on every call and the model rereads more carefully than your system prompt. Treat it like one, and stop shipping your whole API as tools.
Protocol tests prove your server works. They say nothing about the failure that actually breaks users — a perfectly valid server whose tool descriptions make the model reach for the wrong tool.
You can't prompt a model into never being wrong — hallucination is the same machinery as a correct answer. The win is making every claim cheap to check.
The cheaper-model reflex is the wrong first move. An agent's bill is dominated by the transcript it re-sends on every step — so the money is in the context, not the price card.
Buying a faster model is the reflex, and usually the wrong first move. An agent's wait is a chain of serial round-trips — so the latency is in the loop, not the tokens-per-second.
The 'reorder so the best chunks sit at the start and end' trick everyone copies from LangChain is a 2023 patch for a 2023 problem. On a tight, well-reranked context it can quietly demote your second-best evidence to the worst seat in the room.
Re-embedding your corpus is cheap. The expensive part is that two models live in two incompatible vector spaces — and a naive rolling reindex hides the damage behind green dashboards.
Every agent in production eventually meets a 429. The naive fix — just retry — is also the most expensive bug in modern LLM apps. Here's the layered pattern that survives the limit instead of paying triple for it.
A 429 means wait; a 400 means stop; a 200 from your backup model can be the most dangerous answer of all. The reliability layer every agent needs and most skip.
Token logprobs are right there in the API, cheap and ignored — and after RLHF they're systematically overconfident. The signal that actually tracks whether the answer is right costs you N times the inference.
The code is the easy part. The decision that quietly dictates your hosting bill, your scaling story, and your deploy strategy is one you make before you write a line: will your server hold a session, or not?
Prose chunkers shred code mid-function and wreck the structure retrieval depends on. Here is how to split on the AST instead — and why context enrichment matters more than chunk size.
The scoring framework is the commodity. The hard, valuable, un-buyable work is looking at your own outputs and distilling real failures into labeled cases — your eval set is a precipitate of error analysis, not a download.
Extracting entities and relations is the easy 80%. The graph is only as good as the step everyone skips — deciding that 'OpenAI', 'OpenAI Inc.', and 'the company' are one node.
A citation is a pointer, not a proof. Getting an LLM to footnote its answer is an architecture decision about which IDs survive into the prompt — not a line you add to the system message.
Every tool you connect sits in the context window competing for attention. Past a few dozen, accuracy falls. The fix isn't a bigger model — it's treating tool selection as a search problem.
The cheapest LLM call is the one you never make. Three ways to skip it when a question is close enough to one you already answered — and the one knob that decides whether that's a feature or a bug.
Both will run the same agent. The real difference is altitude — ADK hands you an org chart of agents, LangGraph hands you the wiring and a roll of tape.
Worktrees stop your agents from overwriting each other's files. They do nothing about the shared database, the fight over port 3000, or the review queue that becomes your real bottleneck.