guard • AI Agent SDK
Global guard that blocks real model requests.
guard
AI Agent
Global guard that blocks real model requests.
A test suite that stubs the model in most places still bills a provider (and goes flaky) the moment one path slips through. This module is the single switch that turns that silent slip into a loud failure::
from praisonaiagents.model_harness import allow_model_requests
# conftest.py — nothing in this suite may reach a provider allow_model_requests(False)
Once blocked, the two request paths an :class:~praisonaiagents.agent.Agent uses — `LLM/LiteLLM (Chat Completions and Responses, sync, async and streaming) and the OpenAI-native client -- raise :class:ModelRequestBlocked` before any network I/O, and the message names the call site in your code that triggered it.
Scope: this covers the agent’s own turn-taking. Auxiliary model calls made by other subsystems (memory scoring, embeddings) hold their own clients and are not routed through these two paths.
A :class:~praisonaiagents.model_harness.ScriptedModel answers from its script without touching either path, so scripted tests keep passing while the guard is on. That is the intended pairing: block globally, script explicitly.
The initial state can also be set from the environment, which is handy for CI without touching test code::
PRAISONAI_ALLOW_MODEL_REQUESTS=0 pytest
Design note — why :class:BaseException: the agent’s tool loop wraps model calls in broad `except Exception handlers that degrade a failure into a None result. A guard that can be swallowed is not a guard, so this error follows the precedent pytest sets with its own outcome exceptions and derives from BaseException`.
Import
from praisonaiagents.model_harness import guardClasses
Functions
Allow or block real model requests process-wide.
model_requests_allowed()Return whether real model requests are currently permitted.
no_model_requests()Block real model requests for the duration of the `with` block.
Raise :class:ModelRequestBlocked if real model requests are blocked.
Constants
| Name | Value |
|---|---|
_PACKAGE_ROOT | os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
_STDLIB_ROOT | os.path.dirname(os.__file__) |