{"library":"pydantic-ai-middleware","title":"pydantic-ai-middleware (Abandoned: Renamed to pydantic-ai-shields)","description":"`pydantic-ai-middleware` was a library providing a simple middleware layer for Pydantic-AI agents, allowing for `before_run`/`after_run` hooks and other lifecycle management without imposing strict guardrails. The last version of this package was `0.2.4`. As of version `0.3.0`, the package was renamed to `pydantic-ai-shields`, and its core middleware functionality was integrated directly into `pydantic-ai` v1.71+.","language":"python","status":"abandoned","last_verified":"Fri Apr 17","install":{"commands":["pip install pydantic-ai-middleware==0.2.4"],"cli":null},"imports":["from pydantic_ai_middleware.agent import MiddlewareAgent","from pydantic_ai_middleware.middleware import AgentMiddleware","from pydantic_ai_middleware.middleware import CostTrackingMiddleware","from pydantic_ai_middleware.chain import MiddlewareChain"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pydantic_ai import PydanticAI\nfrom pydantic_ai.agents import Agent\nfrom pydantic_ai_middleware.agent import MiddlewareAgent\nfrom pydantic_ai_middleware.middleware import AgentMiddleware\nimport asyncio\n\nclass MyCustomMiddleware(AgentMiddleware):\n    async def before_run(self, agent: Agent, input_data: str, **kwargs):\n        print(f\"Middleware: Before run with input: {input_data}\")\n        return input_data\n\n    async def after_run(self, agent: Agent, output_data: str, **kwargs):\n        print(f\"Middleware: After run with output: {output_data}\")\n        return output_data\n\nclass MyAgent(Agent):\n    def run(self, topic: str) -> str:\n        \"\"\"Generate a short story about the given topic.\"\"\"\n        return f\"A story about {topic}...\"\n\nai = PydanticAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\", \"sk-DUMMY\"), # Use a dummy key if not set\n    model=\"gpt-3.5-turbo\",\n)\nmy_agent = MyAgent(ai=ai)\n\nmiddleware_agent = MiddlewareAgent(\n    wrapped_agent=my_agent,\n    middleware=[MyCustomMiddleware()]\n)\n\nasync def main():\n    print(\"\\n--- Running Middleware Agent ---\")\n    result = await middleware_agent.run(\"a brave knight\")\n    print(f\"Agent final result: {result}\")\n    print(\"--------------------------------\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n","lang":"python","description":"This quickstart demonstrates how to wrap a `pydantic-ai` agent with custom middleware using `MiddlewareAgent` and `AgentMiddleware` from `pydantic-ai-middleware` v0.2.4. It defines a simple middleware to log before and after agent execution.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}