Skip to content

Commit f9de3fd

Browse files
ayaka836Wwwzff
authored andcommitted
[test]Evaluate model performance and accuracy with UCM
1 parent f845eed commit f9de3fd

8 files changed

Lines changed: 2565 additions & 19 deletions

File tree

test/common/db_utils.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import threading
44
from datetime import datetime
55
from pathlib import Path
6-
from typing import Any, Dict, Optional
6+
from typing import Any, Dict, Optional, List
7+
from peewee import Model, AutoField, DateTimeField, TextField
8+
from playhouse.reflection import Introspector
79

810
# Lazy imports for database components
911
peewee = None
@@ -204,6 +206,52 @@ def write_to_db(table_name: str, data: Dict[str, Any]) -> bool:
204206
return False
205207

206208

209+
def read_from_db(
210+
table_name: str,
211+
filters: Optional[Dict[str, Any]] = None,
212+
limit: int = 1
213+
) -> List[Dict[str, Any]]:
214+
db_config = _get_db_config()
215+
if not db_config.get("enabled", False):
216+
logger.warning("Database disabled. Skipping read.")
217+
return []
218+
219+
db = _get_db()
220+
if db is None:
221+
logger.error("Failed to connect to database.")
222+
return []
223+
224+
_ensure_peewee_imported()
225+
226+
try:
227+
introspector = Introspector.from_database(db)
228+
DynamicModel = introspector.generate_models(table_names=[table_name]).get(table_name)
229+
230+
if DynamicModel is None:
231+
logger.warning(f"Table '{table_name}' not found in database.")
232+
return []
233+
234+
query = DynamicModel.select()
235+
236+
if filters:
237+
for key, value in filters.items():
238+
if hasattr(DynamicModel, key):
239+
field = getattr(DynamicModel, key)
240+
query = query.where(field == value)
241+
else:
242+
logger.warning(f"Filter key '{key}' does not exist in table '{table_name}'. Skipped.")
243+
244+
query = query.order_by(DynamicModel.created_at.desc()).limit(limit)
245+
246+
results = []
247+
for row in query:
248+
results.append(row.__data__)
249+
return results
250+
251+
except Exception as e:
252+
logger.error(f"Error reading from table '{table_name}': {e}")
253+
return []
254+
207255
def database_connection(build_id: str) -> None:
208256
logger.info(f"Setting test build ID: {build_id}")
209257
_set_test_build_id(build_id)

test/common/uc_eval/utils/multifieldqa_zh.jsonl

Lines changed: 200 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)