Spaces:
Building
Building
Update config_models.py
Browse files- config_models.py +24 -18
config_models.py
CHANGED
@@ -5,16 +5,22 @@ from typing import Optional, List, Dict, Any
|
|
5 |
from datetime import datetime
|
6 |
from pydantic import BaseModel, Field
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
# ===================== User & Auth =====================
|
10 |
-
class UserConfig(
|
11 |
username: str
|
12 |
password_hash: str
|
13 |
salt: Optional[str] = None
|
14 |
|
15 |
|
16 |
# ===================== Provider Models =====================
|
17 |
-
class ProviderDefinition(
|
18 |
type: str # llm, tts, stt
|
19 |
name: str
|
20 |
display_name: str
|
@@ -24,7 +30,7 @@ class ProviderDefinition(BaseModel):
|
|
24 |
description: str
|
25 |
|
26 |
|
27 |
-
class ProviderSettings(
|
28 |
name: str
|
29 |
api_key: Optional[str] = None
|
30 |
endpoint: Optional[str] = None
|
@@ -32,7 +38,7 @@ class ProviderSettings(BaseModel):
|
|
32 |
|
33 |
|
34 |
# ===================== Global Config =====================
|
35 |
-
class GlobalConfig(
|
36 |
llm_provider: ProviderSettings
|
37 |
tts_provider: ProviderSettings
|
38 |
stt_provider: ProviderSettings
|
@@ -53,18 +59,18 @@ class GlobalConfig(BaseModel):
|
|
53 |
|
54 |
|
55 |
# ===================== Localization Models =====================
|
56 |
-
class LocalizedExample(
|
57 |
locale_code: str
|
58 |
example: str
|
59 |
|
60 |
|
61 |
-
class LocalizedCaption(
|
62 |
locale_code: str
|
63 |
caption: str
|
64 |
|
65 |
|
66 |
# ===================== Parameter Models =====================
|
67 |
-
class ParameterConfig(
|
68 |
name: str
|
69 |
caption: List[LocalizedCaption]
|
70 |
type: str # str, int, float, bool, date
|
@@ -89,7 +95,7 @@ class ParameterConfig(BaseModel):
|
|
89 |
|
90 |
|
91 |
# ===================== Intent Models =====================
|
92 |
-
class IntentConfig(
|
93 |
name: str
|
94 |
caption: str
|
95 |
requiresApproval: Optional[bool] = False
|
@@ -103,7 +109,7 @@ class IntentConfig(BaseModel):
|
|
103 |
|
104 |
|
105 |
# ===================== LLM Configuration =====================
|
106 |
-
class GenerationConfig(
|
107 |
max_new_tokens: int = 512
|
108 |
temperature: float = 0.7
|
109 |
top_p: float = 0.9
|
@@ -115,7 +121,7 @@ class GenerationConfig(BaseModel):
|
|
115 |
early_stopping: Optional[bool] = None
|
116 |
|
117 |
|
118 |
-
class LLMConfiguration(
|
119 |
repo_id: str
|
120 |
generation_config: GenerationConfig = Field(default_factory=GenerationConfig)
|
121 |
use_fine_tune: bool = False
|
@@ -123,7 +129,7 @@ class LLMConfiguration(BaseModel):
|
|
123 |
|
124 |
|
125 |
# ===================== Version Models =====================
|
126 |
-
class VersionConfig(
|
127 |
no: int
|
128 |
caption: str
|
129 |
description: Optional[str] = None
|
@@ -140,7 +146,7 @@ class VersionConfig(BaseModel):
|
|
140 |
|
141 |
|
142 |
# ===================== Project Models =====================
|
143 |
-
class ProjectConfig(
|
144 |
id: int
|
145 |
name: str
|
146 |
caption: str
|
@@ -161,13 +167,13 @@ class ProjectConfig(BaseModel):
|
|
161 |
|
162 |
|
163 |
# ===================== API Models =====================
|
164 |
-
class RetryConfig(
|
165 |
retry_count: int = 3
|
166 |
backoff_seconds: int = 2
|
167 |
strategy: str = "static" # static, exponential
|
168 |
|
169 |
|
170 |
-
class AuthConfig(
|
171 |
enabled: bool
|
172 |
token_endpoint: Optional[str] = None
|
173 |
response_token_path: Optional[str] = None
|
@@ -176,14 +182,14 @@ class AuthConfig(BaseModel):
|
|
176 |
token_refresh_body: Optional[Dict[str, Any]] = None
|
177 |
|
178 |
|
179 |
-
class ResponseMapping(
|
180 |
variable_name: str
|
181 |
type: str # str, int, float, bool, date
|
182 |
json_path: str
|
183 |
caption: List[LocalizedCaption]
|
184 |
|
185 |
|
186 |
-
class APIConfig(
|
187 |
name: str
|
188 |
url: str
|
189 |
method: str = "POST"
|
@@ -203,7 +209,7 @@ class APIConfig(BaseModel):
|
|
203 |
|
204 |
|
205 |
# ===================== Activity Log =====================
|
206 |
-
class ActivityLogEntry(
|
207 |
id: int
|
208 |
timestamp: datetime
|
209 |
username: str
|
@@ -215,7 +221,7 @@ class ActivityLogEntry(BaseModel):
|
|
215 |
|
216 |
|
217 |
# ===================== Root Configuration =====================
|
218 |
-
class ServiceConfig(
|
219 |
global_config: GlobalConfig = Field(alias="config")
|
220 |
projects: List[ProjectConfig] = Field(default_factory=list)
|
221 |
apis: List[APIConfig] = Field(default_factory=list)
|
|
|
5 |
from datetime import datetime
|
6 |
from pydantic import BaseModel, Field
|
7 |
|
8 |
+
class BaseModelWithDatetime(BaseModel):
|
9 |
+
"""Base model with datetime serialization support"""
|
10 |
+
class Config:
|
11 |
+
json_encoders = {
|
12 |
+
datetime: lambda v: v.isoformat() if v else None
|
13 |
+
}
|
14 |
|
15 |
# ===================== User & Auth =====================
|
16 |
+
class UserConfig(BaseModelWithDatetime):
|
17 |
username: str
|
18 |
password_hash: str
|
19 |
salt: Optional[str] = None
|
20 |
|
21 |
|
22 |
# ===================== Provider Models =====================
|
23 |
+
class ProviderDefinition(BaseModelWithDatetime):
|
24 |
type: str # llm, tts, stt
|
25 |
name: str
|
26 |
display_name: str
|
|
|
30 |
description: str
|
31 |
|
32 |
|
33 |
+
class ProviderSettings(BaseModelWithDatetime):
|
34 |
name: str
|
35 |
api_key: Optional[str] = None
|
36 |
endpoint: Optional[str] = None
|
|
|
38 |
|
39 |
|
40 |
# ===================== Global Config =====================
|
41 |
+
class GlobalConfig(BaseModelWithDatetime):
|
42 |
llm_provider: ProviderSettings
|
43 |
tts_provider: ProviderSettings
|
44 |
stt_provider: ProviderSettings
|
|
|
59 |
|
60 |
|
61 |
# ===================== Localization Models =====================
|
62 |
+
class LocalizedExample(BaseModelWithDatetime):
|
63 |
locale_code: str
|
64 |
example: str
|
65 |
|
66 |
|
67 |
+
class LocalizedCaption(BaseModelWithDatetime):
|
68 |
locale_code: str
|
69 |
caption: str
|
70 |
|
71 |
|
72 |
# ===================== Parameter Models =====================
|
73 |
+
class ParameterConfig(BaseModelWithDatetime):
|
74 |
name: str
|
75 |
caption: List[LocalizedCaption]
|
76 |
type: str # str, int, float, bool, date
|
|
|
95 |
|
96 |
|
97 |
# ===================== Intent Models =====================
|
98 |
+
class IntentConfig(BaseModelWithDatetime):
|
99 |
name: str
|
100 |
caption: str
|
101 |
requiresApproval: Optional[bool] = False
|
|
|
109 |
|
110 |
|
111 |
# ===================== LLM Configuration =====================
|
112 |
+
class GenerationConfig(BaseModelWithDatetime):
|
113 |
max_new_tokens: int = 512
|
114 |
temperature: float = 0.7
|
115 |
top_p: float = 0.9
|
|
|
121 |
early_stopping: Optional[bool] = None
|
122 |
|
123 |
|
124 |
+
class LLMConfiguration(BaseModelWithDatetime):
|
125 |
repo_id: str
|
126 |
generation_config: GenerationConfig = Field(default_factory=GenerationConfig)
|
127 |
use_fine_tune: bool = False
|
|
|
129 |
|
130 |
|
131 |
# ===================== Version Models =====================
|
132 |
+
class VersionConfig(BaseModelWithDatetime):
|
133 |
no: int
|
134 |
caption: str
|
135 |
description: Optional[str] = None
|
|
|
146 |
|
147 |
|
148 |
# ===================== Project Models =====================
|
149 |
+
class ProjectConfig(BaseModelWithDatetime):
|
150 |
id: int
|
151 |
name: str
|
152 |
caption: str
|
|
|
167 |
|
168 |
|
169 |
# ===================== API Models =====================
|
170 |
+
class RetryConfig(BaseModelWithDatetime):
|
171 |
retry_count: int = 3
|
172 |
backoff_seconds: int = 2
|
173 |
strategy: str = "static" # static, exponential
|
174 |
|
175 |
|
176 |
+
class AuthConfig(BaseModelWithDatetime):
|
177 |
enabled: bool
|
178 |
token_endpoint: Optional[str] = None
|
179 |
response_token_path: Optional[str] = None
|
|
|
182 |
token_refresh_body: Optional[Dict[str, Any]] = None
|
183 |
|
184 |
|
185 |
+
class ResponseMapping(BaseModelWithDatetime):
|
186 |
variable_name: str
|
187 |
type: str # str, int, float, bool, date
|
188 |
json_path: str
|
189 |
caption: List[LocalizedCaption]
|
190 |
|
191 |
|
192 |
+
class APIConfig(BaseModelWithDatetime):
|
193 |
name: str
|
194 |
url: str
|
195 |
method: str = "POST"
|
|
|
209 |
|
210 |
|
211 |
# ===================== Activity Log =====================
|
212 |
+
class ActivityLogEntry(BaseModelWithDatetime):
|
213 |
id: int
|
214 |
timestamp: datetime
|
215 |
username: str
|
|
|
221 |
|
222 |
|
223 |
# ===================== Root Configuration =====================
|
224 |
+
class ServiceConfig(BaseModelWithDatetime):
|
225 |
global_config: GlobalConfig = Field(alias="config")
|
226 |
projects: List[ProjectConfig] = Field(default_factory=list)
|
227 |
apis: List[APIConfig] = Field(default_factory=list)
|