diff --git a/src/agents/retry.py b/src/agents/retry.py index 5ad40f68ac..91d33a489f 100644 --- a/src/agents/retry.py +++ b/src/agents/retry.py @@ -210,7 +210,7 @@ def retry_policy_retries_all_transient_errors(policy: RetryPolicy | None) -> boo class ModelRetrySettings: """Opt-in runner-managed retry settings for model calls.""" - max_retries: int | None = None + max_retries: int | None = Field(default=None, ge=0) """Retries allowed after the initial model request.""" backoff: ModelRetryBackoffInput | None = None diff --git a/tests/test_retry_count_validation.py b/tests/test_retry_count_validation.py new file mode 100644 index 0000000000..928bf42a04 --- /dev/null +++ b/tests/test_retry_count_validation.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +import pytest +from pydantic import ValidationError + +from agents.retry import ModelRetrySettings + + +def test_model_retry_settings_rejects_negative_max_retries() -> None: + with pytest.raises(ValidationError): + ModelRetrySettings(max_retries=-1) + + +def test_model_retry_settings_allows_zero_max_retries() -> None: + settings = ModelRetrySettings(max_retries=0) + assert settings.max_retries == 0