We deployed Pydantic AI, exercised structured outputs, dependency injection, retries, and tool calls, then compared its behavior with LangGraph across a 160-scenario test matrix.
How the Model Context Protocol's host/client/server pieces fit together, what npx/uvx are for in local dev vs. production, a working PydanticAI example, and stdio vs. Streamable HTTP transports.
My daily research agent spends most of its time deciding whether each source is relevant and whether it says anything new. I moved those closed judgments from Claude Opus to Jev, a model that writes no text, and the key was to pass the question being judged against every time. Here is the pipeline, the Pydantic AI types, three papers Jev placed on a four-step relevance ladder, and why writing stays with an LLM.
Static validators like tflint and checkov steer the agent and gate its submissions, but they cannot tell you if it did the task. A separate pydantic_evals harness grades that, then sweeps five models across Bedrock, Mistral, and Fireworks and picks one on cost per pass instead of sticker price.
Pydantic AI brings Pydantic's validation to LLM agents. Pair it with Lumbox and you get type-safe inbox, OTP, and send tools with zero marshaling boilerplate.
The agent gets a workspace, file tools (list, read, write, edit, delete), and a terraform_validate tool it can invoke at any point. It writes HCL, sees errors, edits, validates again. To ship the terraform CLI next to the runtime, the Lambda flips from a zip package to a container image. The deliverable is the workspace, not a Pydantic result. A caller-side retry covers the case where the agent claimed done but validate still fails.
Swap Bedrock for the Mistral API without touching the agent: an SSM model registry built at invoke time, plus EMF metrics so one CloudWatch dashboard covers every provider.