|
23 | 23 |
|
24 | 24 | from openhands.sdk.llm.fallback_strategy import FallbackStrategy |
25 | 25 | from openhands.sdk.llm.utils.model_info import get_litellm_model_info |
| 26 | +from openhands.sdk.utils.deprecation import warn_deprecated |
26 | 27 | from openhands.sdk.utils.pydantic_secrets import serialize_secret, validate_secret |
27 | 28 |
|
28 | 29 |
|
@@ -336,7 +337,6 @@ class LLM(BaseModel, RetryMixin, NonNativeToolCallingMixin): |
336 | 337 | seed: int | None = Field( |
337 | 338 | default=None, description="The seed to use for random number generation." |
338 | 339 | ) |
339 | | - # REMOVE_AT: 1.20.0 - Remove this field (REST API deprecation runway) |
340 | 340 | safety_settings: list[dict[str, str]] | None = Field( |
341 | 341 | default=None, |
342 | 342 | deprecated=("Deprecated since v1.15.0 and scheduled for removal in v1.20.0."), |
@@ -405,6 +405,20 @@ class LLM(BaseModel, RetryMixin, NonNativeToolCallingMixin): |
405 | 405 | # ========================================================================= |
406 | 406 | # Validators |
407 | 407 | # ========================================================================= |
| 408 | + @field_validator("safety_settings", mode="before") |
| 409 | + @classmethod |
| 410 | + def _warn_safety_settings_deprecated( |
| 411 | + cls, v: list[dict[str, str]] | None |
| 412 | + ) -> list[dict[str, str]] | None: |
| 413 | + if v is not None: |
| 414 | + warn_deprecated( |
| 415 | + "LLM.safety_settings", |
| 416 | + deprecated_in="1.15.0", |
| 417 | + removed_in="1.20.0", |
| 418 | + details="Safety settings are no longer applied.", |
| 419 | + ) |
| 420 | + return v |
| 421 | + |
408 | 422 | @field_validator("api_key", "aws_access_key_id", "aws_secret_access_key") |
409 | 423 | @classmethod |
410 | 424 | def _validate_secrets(cls, v: str | SecretStr | None, info) -> SecretStr | None: |
|
0 commit comments