Pydantic AI gives you a clean, typed agent: define an Agent , hand it tools, call agent. run(... ) , and it loops — model call, tool call, model call — until it produces a validated result.
Source: [Dev.to](https://dev.to/wartzarbee/pydantic-ai-keeps-one-growing-message-list-per-run-and-re-sends-the-whole-thing-every-step-4o7b)