Spaces:
Building
Building
Update config_models.py
Browse files- config_models.py +39 -1
config_models.py
CHANGED
@@ -30,6 +30,45 @@ class ProviderDefinition(BaseModelWithDatetime):
|
|
30 |
requires_api_key: bool
|
31 |
requires_repo_info: Optional[bool] = False
|
32 |
description: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
|
35 |
class ProviderSettings(BaseModelWithDatetime):
|
@@ -38,7 +77,6 @@ class ProviderSettings(BaseModelWithDatetime):
|
|
38 |
endpoint: Optional[str] = None
|
39 |
settings: Optional[Dict[str, Any]] = Field(default_factory=dict)
|
40 |
|
41 |
-
|
42 |
# ===================== Global Config =====================
|
43 |
class GlobalConfig(BaseModelWithDatetime):
|
44 |
llm_provider: ProviderSettings = Field(
|
|
|
30 |
requires_api_key: bool
|
31 |
requires_repo_info: Optional[bool] = False
|
32 |
description: str
|
33 |
+
features: Optional[Dict[str, Any]] = Field(default_factory=dict)
|
34 |
+
|
35 |
+
def has_feature(self, feature_name: str) -> bool:
|
36 |
+
"""Check if provider has a specific feature"""
|
37 |
+
return feature_name in self.features if self.features else False
|
38 |
+
|
39 |
+
def get_feature(self, feature_name: str, default: Any = None) -> Any:
|
40 |
+
"""Get feature value with default"""
|
41 |
+
if not self.features:
|
42 |
+
return default
|
43 |
+
return self.features.get(feature_name, default)
|
44 |
+
|
45 |
+
def get_feature_bool(self, feature_name: str, default: bool = False) -> bool:
|
46 |
+
"""Get boolean feature value"""
|
47 |
+
if not self.features:
|
48 |
+
return default
|
49 |
+
value = self.features.get(feature_name, default)
|
50 |
+
if isinstance(value, bool):
|
51 |
+
return value
|
52 |
+
if isinstance(value, str):
|
53 |
+
return value.lower() in ('true', '1', 'yes', 'on')
|
54 |
+
return bool(value)
|
55 |
+
|
56 |
+
def get_feature_int(self, feature_name: str, default: int = 0) -> int:
|
57 |
+
"""Get integer feature value"""
|
58 |
+
if not self.features:
|
59 |
+
return default
|
60 |
+
value = self.features.get(feature_name, default)
|
61 |
+
try:
|
62 |
+
return int(value)
|
63 |
+
except (ValueError, TypeError):
|
64 |
+
return default
|
65 |
+
|
66 |
+
def get_feature_str(self, feature_name: str, default: str = "") -> str:
|
67 |
+
"""Get string feature value"""
|
68 |
+
if not self.features:
|
69 |
+
return default
|
70 |
+
value = self.features.get(feature_name, default)
|
71 |
+
return str(value) if value is not None else default
|
72 |
|
73 |
|
74 |
class ProviderSettings(BaseModelWithDatetime):
|
|
|
77 |
endpoint: Optional[str] = None
|
78 |
settings: Optional[Dict[str, Any]] = Field(default_factory=dict)
|
79 |
|
|
|
80 |
# ===================== Global Config =====================
|
81 |
class GlobalConfig(BaseModelWithDatetime):
|
82 |
llm_provider: ProviderSettings = Field(
|