Eliot0110 commited on
Commit
e425487
·
1 Parent(s): af60cba

feat: 添加utils工具模块

Browse files

- 新增logger.py统一日志管理
- 新增validators.py数据验证模型
- 配置utils包的__init__.py导入接口
- 为模块化架构提供基础工具支持

Files changed (3) hide show
  1. utils/__init__.py +20 -0
  2. utils/logger.py +36 -0
  3. utils/validators.py +14 -0
utils/__init__.py CHANGED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ provide a unified interface for logging and data validation
3
+
4
+ """
5
+
6
+ from .logger import log, setup_logger
7
+
8
+ # import data validation classes
9
+ from .validators import ChatRequest, ChatResponse
10
+
11
+ # define the __all__ variable to control what is imported when using 'from module import *'
12
+ __all__ = [
13
+ 'log',
14
+ 'setup_logger',
15
+ 'ChatRequest',
16
+ 'ChatResponse'
17
+ ]
18
+
19
+ # version information
20
+ __version__ = '1.0.0'
utils/logger.py CHANGED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+ import sys
3
+
4
+
5
+ def setup_logger():
6
+ """Set up a logger for the application."""
7
+ logger = logging.getLogger("TravelAssistant")
8
+ logger.setLevel(logging.INFO)
9
+
10
+ # avoid duplicate handlers
11
+ if logger.hasHandlers():
12
+ logger.handlers.clear()
13
+
14
+ # 创建一个 handler,用于写入日志文件
15
+ # file_handler = logging.FileHandler("app.log")
16
+ # file_handler.setLevel(logging.INFO)
17
+
18
+ # 创建一个 handler,用于输出到控制台
19
+ stream_handler = logging.StreamHandler(sys.stdout)
20
+ stream_handler.setLevel(logging.INFO)
21
+
22
+ # 定义 handler 的输出格式
23
+ formatter = logging.Formatter(
24
+ '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
25
+ )
26
+ # file_handler.setFormatter(formatter)
27
+ stream_handler.setFormatter(formatter)
28
+
29
+ # 给 logger 添加 handler
30
+ # logger.addHandler(file_handler)
31
+ logger.addHandler(stream_handler)
32
+
33
+ return logger
34
+
35
+ # 创建一个实例供其他模块导入
36
+ log = setup_logger()
utils/validators.py CHANGED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # utils/validators.py
2
+ from pydantic import BaseModel
3
+ from typing import List, Optional
4
+
5
+ class ChatRequest(BaseModel):
6
+ message: str
7
+ session_id: Optional[str] = None
8
+ history: Optional[List[List[str]]] = []
9
+
10
+ class ChatResponse(BaseModel):
11
+ reply: str
12
+ session_id: str
13
+ status_info: str
14
+ history: List[List[str]]