基础模块
发布于 2025-12-31
基础模块(base)
Section titled “基础模块(base)”-
1.理解并掌握如何通过Config类集中管理系统的配置参数。
-
2.学会配置和使用日志记录器,实现对系统运行状态的监控。
-
3.认识base模块在系统架构中的作用,为学习后续核心逻辑奠定基础。
base模块是EduRAG智慧问答系统的基础,负责提供系统运行所需的核心功能,包括配置管理、日志记录。这些功能为系统的其他模块提供了稳定的支持,确保系统能够灵活配置、监控运行状态。
2.1 配置管理
Section titled “2.1 配置管理”config.py文件定义了Config类,用于集中管理系统中的所有配置参数。这些参数包括数据库连接信息、模型选择、分块策略、API设置等。通过集中管理配置,系统可以方便地调整参数、适配不同环境,并支持通过环境变量进行灵活配置。
# 导入配置解析库import configparser# 导入路径操作库import os
class Config: # 初始化配置,加载 config.ini 文件 def __init__(self, config_file='/Users/ligang/PycharmProjects/LLM/Itcast_qa_system/config.ini'): # 创建配置解析器 self.config = configparser.ConfigParser() # 读取配置文件 self.config.read(config_file)
# MySQL 配置 # MySQL 主机地址 self.MYSQL_HOST = self.config.get('mysql', 'host', fallback='localhost') # MySQL 用户名 self.MYSQL_USER = self.config.get('mysql', 'user', fallback='root') # MySQL 密码 self.MYSQL_PASSWORD = self.config.get('mysql', 'password', fallback='123456') # MySQL 数据库名 self.MYSQL_DATABASE = self.config.get('mysql', 'database', fallback='subjects_kg')
# Redis 配置 # Redis 主机地址 self.REDIS_HOST = self.config.get('redis', 'host', fallback='localhost') # Redis 端口 self.REDIS_PORT = self.config.getint('redis', 'port', fallback=6379) # Redis 密码 self.REDIS_PASSWORD = self.config.get('redis', 'password', fallback='1234') # Redis 数据库编号 self.REDIS_DB = self.config.getint('redis', 'db', fallback=0)
# Milvus 配置 # Milvus 主机地址 self.MILVUS_HOST = self.config.get('milvus', 'host', fallback='localhost') # Milvus 端口 self.MILVUS_PORT = self.config.get('milvus', 'port', fallback='19530') # Milvus 数据库名 self.MILVUS_DATABASE_NAME = self.config.get('milvus', 'database_name', fallback='itcast') # Milvus 集合名 self.MILVUS_COLLECTION_NAME = self.config.get('milvus', 'collection_name', fallback='edurag_final')
# LLM 配置 # LLM 模型名 self.LLM_MODEL = self.config.get('llm', 'model', fallback='qwen-plus') # DashScope API 密钥 self.DASHSCOPE_API_KEY = self.config.get('llm', 'dashscope_api_key') # DashScope API 地址 self.DASHSCOPE_BASE_URL = self.config.get('llm', 'dashscope_base_url', fallback='https://dashscope.aliyuncs.com/compatible-mode/v1')
# 检索参数 # 父块大小 self.PARENT_CHUNK_SIZE = self.config.getint('retrieval', 'parent_chunk_size', fallback=1200) # 子块大小 self.CHILD_CHUNK_SIZE = self.config.getint('retrieval', 'child_chunk_size', fallback=300) # 块重叠大小 self.CHUNK_OVERLAP = self.config.getint('retrieval', 'chunk_overlap', fallback=50) # 检索返回数量 self.RETRIEVAL_K = self.config.getint('retrieval', 'retrieval_k', fallback=5) # 最终候选数量 self.CANDIDATE_M = self.config.getint('retrieval', 'candidate_m', fallback=2)
# 应用配置 # 有效来源列表 self.VALID_SOURCES = eval( self.config.get('app', 'valid_sources', fallback='["ai", "java", "test", "ops", "bigdata"]')) # 客服电话 self.CUSTOMER_SERVICE_PHONE = self.config.get('app', 'customer_service_phone', fallback='12345678') # 日志文件路径 self.LOG_FILE = self.config.get('logger', 'log_file', fallback='logs/app.log')
if __name__ == '__main__': conf = Config() print(conf.CHILD_CHUNK_SIZE)- 环境变量支持:使用
dotenv加载.env文件中的环境变量,避免敏感信息硬编码。 - 默认值:每个参数设有默认值,确保未配置环境变量时系统仍可运行。
- 参数分类:按功能分类(如数据库、模型、分块等),便于管理和维护。
2.2 日志记录(logger.py)
Section titled “2.2 日志记录(logger.py)”logger.py文件定义了setup_logging函数,用于配置系统的日志记录器。日志记录器将运行信息、警告和错误输出到文件和控制台,便于开发、调试和运维人员监控系统状态。
# 导入日志库import logging# 导入路径操作库import os# 导入配置类from config import Config
def setup_logging(log_file=Config().LOG_FILE): # 创建日志目录 os.makedirs(os.path.dirname(log_file), exist_ok=True) # 获取日志器 logger = logging.getLogger("EduRAG") # 设置日志级别 logger.setLevel(logging.INFO) # 避免重复添加处理器 if not logger.handlers: # 创建文件处理器 file_handler = logging.FileHandler(log_file, encoding='utf-8') # 设置文件处理器级别 file_handler.setLevel(logging.INFO) # 创建控制台处理器 console_handler = logging.StreamHandler() # 设置控制台处理器级别 console_handler.setLevel(logging.INFO) # 设置日志格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 为文件处理器设置格式 file_handler.setFormatter(formatter) # 为控制台处理器设置格式 console_handler.setFormatter(formatter) # 添加文件处理器 logger.addHandler(file_handler) # 添加控制台处理器 logger.addHandler(console_handler) # 返回日志器 return logger
# 初始化日志器logger = setup_logging()- 日志级别:默认设为
INFO,记录关键运行信息。 - 双重输出:同时输出到文件和控制台,便于实时监控和后续分析。
- 格式化:日志包含时间戳、名称、级别和内容,便于问题定位。
base模块为EduRAG系统提供了以下核心支持:
- 配置管理:通过
Config类实现灵活的参数配置。 - 日志记录:通过
logger实现运行状态的实时监控和记录。
本章内容为学习者理解EduRAG系统的基础功能奠定了基础,为后续深入学习核心逻辑提供了支持。
发布于 2025-12-31