3.2 整体流程与配置模块¶
学习目标¶
- 理解项目的整体流程
- 掌握项目的配置模块
一、整体流程¶
- 配置基础环境(config.py 和 create_logger.py)
- 初始化数据库(SQL 脚本)
- 采集数据(spider_weather.py)
- 完成 MCP 服务器(mcp_weather_server.py 、mcp_ticket_server.py 和 mcp_order_server.py)
- 完成A2A代理服务器(weather_server.py 、ticket_server.py 和 order_server.py)
- 完成客户端(main.py)
- 启动服务进行联调
- 启动MCP 服务器(mcp_weather_server.py 、mcp_ticket_server.py 和 mcp_order_server.py)
- 启动代理服务器(weather_server.py 、ticket_server.py 和 order_server.py)
- 启动客户端(main.py)
二、配置模块¶
1 config.py¶
config.py配置文件,主要是LLM 和数据库信息。统一管理配置,避免硬编码,便于修改。
项目中的定位:基础模块,提供全局参数(如 API 密钥、模型名称),所有脚本依赖它。
核心功能:定义 Config 类
位置:SmartVoyage/config.py
import os
# 项目根目录
project_root = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')
#定义配置文件
class Config:
def __init__(self):
# 大模型配置
self.base_url = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
self.api_key = 'sk-67320312aa3e4fsdfsss3411aa0d7'
self.model_name = 'qwen-plus'
# 数据库配置
self.host = 'localhost'
self.user = 'root'
self.password = 'root'
self.database = 'travel_rag'
# 日志配置
self.log_file = os.path.join(project_root, 'SmartVoyage', 'logs/app.log')
if __name__ == '__main__':
print(Config().log_file)
2 create_logger.py¶
create_logger.py主要是配置日志,设置整个项目的logger对象。
项目中的定位:管理logger,全局统一使用这一个。
核心功能:通过setup_logger方法设置,然后调用setup_logger方法返回logger对象。
位置:SmartVoyage/create_logger.py
import logging
import os
from SmartVoyage.config import Config
def setup_logger(name, log_file='logs/app.log'):
# 创建日志文件夹
os.makedirs(os.path.dirname(log_file), exist_ok=True)
# 获取日志记录器
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
# 防止重复输出的关键!
logger.propagate = False
# 定义日志格式
formatter = logging.Formatter('%(name)s - %(asctime)s - %(levelname)s - %(message)s')
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
console_handler.setLevel(logging.INFO) # 每个日志处理器可以单独设置日志级别,但是这个日志级别必须高于或等于处理器级别
# 创建文件处理器
file_handler = logging.FileHandler(filename=log_file, encoding="utf-8", mode="a")
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.DEBUG)
# 将处理器添加到日志记录器中
if not logger.handlers: # 先进行判断,再进行添加。避免重复添加处理器
logger.addHandler(console_handler)
logger.addHandler(file_handler)
return logger
logger = setup_logger('SmartVoage', Config().log_file)
注意:需要设置 logger.propagate = False 防止日志重复输出。因为某些包中,如create_fastapi_app也有日志对象,可能会重复。为了避免日志重复输出,需要设置 logger.propagate = False。
本节小结¶
本节主要描述了smartVoyage的整体流程和配置模块。