mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
Co-authored-by: Calvin Smith <calvin@all-hands.dev> Co-authored-by: Graham Neubig <neubig@gmail.com> Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
from pydantic import BaseModel, SecretStr, SerializationInfo, field_serializer
|
|
from pydantic.json import pydantic_encoder
|
|
|
|
|
|
class Settings(BaseModel):
|
|
"""
|
|
Persisted settings for OpenHands sessions
|
|
"""
|
|
|
|
language: str | None = None
|
|
agent: str | None = None
|
|
max_iterations: int | None = None
|
|
security_analyzer: str | None = None
|
|
confirmation_mode: bool | None = None
|
|
llm_model: str | None = None
|
|
llm_api_key: SecretStr | None = None
|
|
llm_base_url: str | None = None
|
|
remote_runtime_resource_factor: int | None = None
|
|
|
|
@field_serializer('llm_api_key')
|
|
def llm_api_key_serializer(self, llm_api_key: SecretStr, info: SerializationInfo):
|
|
"""Custom serializer for the LLM API key.
|
|
|
|
To serialize the API key instead of `"********"`, set `expose_secrets` to True in the serialization context. For example::
|
|
|
|
settings.model_dump_json(context={'expose_secrets': True})
|
|
"""
|
|
context = info.context
|
|
if context and context.get('expose_secrets', False):
|
|
return llm_api_key.get_secret_value()
|
|
|
|
return pydantic_encoder(llm_api_key)
|