diff --git a/mem0/configs/vector_stores/s3_vectors.py b/mem0/configs/vector_stores/s3_vectors.py index 4118a40861..252e897fdd 100644 --- a/mem0/configs/vector_stores/s3_vectors.py +++ b/mem0/configs/vector_stores/s3_vectors.py @@ -16,12 +16,16 @@ class S3VectorsConfig(BaseModel): @model_validator(mode="before") @classmethod def validate_extra_fields(cls, values: Dict[str, Any]) -> Dict[str, Any]: - allowed_fields = set(cls.model_fields.keys()) - input_fields = set(values.keys()) - extra_fields = input_fields - allowed_fields + # Precompute allowed_fields only once per class for efficiency + if not hasattr(cls, "_allowed_fields_cache"): + # Use tuple instead of set for fixed allowed_fields; should be small and membership is still fast + cls._allowed_fields_cache = tuple(cls.model_fields.keys()) + allowed_fields = cls._allowed_fields_cache + # Filter extra fields faster using set difference + extra_fields = set(values) - set(allowed_fields) if extra_fields: raise ValueError( - f"Extra fields not allowed: {', '.join(extra_fields)}. Please input only the following fields: {', '.join(allowed_fields)}" + f"Extra fields not allowed: {', '.join(sorted(extra_fields))}. Please input only the following fields: {', '.join(sorted(allowed_fields))}" ) return values