{"id":24312,"library":"pydantic-deep","title":"Pydantic Deep","description":"Batteries-included agent harness for Python built on Pydantic AI, providing tool-calling, sandboxed execution via Docker, multi-agent teams, and unlimited context. Current version 0.3.17, released monthly.","status":"active","version":"0.3.17","language":"python","source_language":"en","source_url":"https://github.com/vstorm-co/pydantic-deepagents","tags":["agents","ai","tool-calling","sandbox","multi-agent","pydantic","async"],"install":[{"cmd":"pip install pydantic-deep","lang":"bash","label":"default"},{"cmd":"pip install pydantic-deep[all]","lang":"bash","label":"all extras"}],"dependencies":[{"reason":"Core agent framework for tool-calling and model routing","package":"pydantic-ai","optional":false},{"reason":"Required for BrowserCapability (headless browser)","package":"playwright","optional":true},{"reason":"Required for DockerSandbox capability","package":"docker","optional":true}],"imports":[{"note":"Public API is at package root, not in submodule","wrong":"from pydantic_deep.agent import create_deep_agent","symbol":"create_deep_agent","correct":"from pydantic_deep import create_deep_agent"},{"note":"Capabilities are in the capabilities subpackage","wrong":"from pydantic_deep import BrowserCapability","symbol":"BrowserCapability","correct":"from pydantic_deep.capabilities import BrowserCapability"},{"note":"Sandbox classes are in the sandbox subpackage","wrong":"from pydantic_deep import DockerSandbox","symbol":"DockerSandbox","correct":"from pydantic_deep.sandbox import DockerSandbox"}],"quickstart":{"code":"import asyncio\nfrom pydantic_deep import create_deep_agent\n\nasync def main():\n    agent = create_deep_agent(\n        model=\"openai:gpt-4o\",\n        api_key=os.environ.get(\"OPENAI_API_KEY\", \"\"),\n        instructions=\"You are a helpful assistant.\"\n    )\n    result = await agent.run(\"What is the capital of France?\")\n    print(result.data)\n\nif __name__ == \"__main__\":\n    import os\n    asyncio.run(main())","lang":"python","description":"Minimal agent creation with a single synchronous call."},"warnings":[{"fix":"Update code: if you previously relied on appending, manually include the base prompt prefix in your instructions string.","message":"In 0.3.16, `instructions` now replaces `BASE_PROMPT` instead of appending to it. Previously, passing `instructions=\"...\"` appended to the base prompt; now it becomes the full system prompt. Use `instructions=None` (default) to keep the default base prompt.","severity":"breaking","affected_versions":">=0.3.16"},{"fix":"Upgrade to >=0.3.13 or pass tools as list of `Tool` objects using the `tool` decorator with full metadata.","message":"Tools passed via `tools=` parameter lost metadata (name, description, etc.) before 0.3.13. They were added via `agent.tool()` which hardcoded `takes_ctx=True` and discarded `Tool` metadata.","severity":"gotcha","affected_versions":"<0.3.13"},{"fix":"Upgrade to >=0.3.11, which lazily initializes Playwright only on first browser tool call.","message":"BrowserCapability opens Playwright browser eagerly on every agent run before 0.3.11. This caused a browser window to spawn even when no browser tool was used.","severity":"gotcha","affected_versions":"<0.3.11"},{"fix":"Upgrade to >=0.3.14, which propagates parent settings to subagents.","message":"Subagent factory ignores parent `web_search`/`web_fetch` settings before 0.3.14, causing 400 errors on Bedrock/Vertex models that do not support the beta web tools.","severity":"deprecated","affected_versions":"<0.3.14"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use a supported model format like 'openai:gpt-4o' only if you have pydantic-ai >=0.0.22 with the openai extra installed. Ensure OPENAI_API_KEY env var is set.","cause":"Model string format is incorrect or missing provider registration.","error":"pydantic_ai.exceptions.UserError: Unknown model: openai:gpt-4o"},{"fix":"Use `async with async_playwright() as p:` instead of `with sync_playwright() as p:`. Or switch to `BrowserCapability` which handles this internally.","cause":"Playwright synchronous calls are used in an async context (e.g., using `sync_playwright` inside async agent run).","error":"playwright._impl._errors.Error: It looks like you are using Playwright Sync API inside the async event loop."},{"fix":"Start Docker Desktop or daemon, and ensure your user is in the 'docker' group (on Linux).","cause":"Docker daemon is not running or the user does not have permissions to access the Docker socket.","error":"docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}