import logging import asyncio logging.basicConfig( level=logging.DEBUG, # 生产环境可改为 INFO 或 WARNING format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", handlers=[logging.FileHandler("BoweiAgent.log", encoding="utf-8"), logging.StreamHandler()], ) logger = logging.getLogger("BoweiAgent") import logging # 获取logger并设置级别 httpx_logger = logging.getLogger("httpx") httpx_logger.setLevel(logging.WARNING) # 设置httpcore及其子模块的级别 # 可选:禁用传播(防止被根logger处理) httpx_logger.propagate = False # 获取logger并设置级别 openai_logger = logging.getLogger("openai") openai_logger.setLevel(logging.WARNING) # 设置httpcore及其子模块的级别 # 可选:禁用传播(防止被根logger处理) openai_logger.propagate = False # 获取logger并设置级别 neo4j_logger = logging.getLogger("neo4j") neo4j_logger.setLevel(logging.WARNING) # 设置httpcore及其子模块的级别 # 可选:禁用传播(防止被根logger处理) neo4j_logger.propagate = False # 获取logger并设置级别 httpcore_logger = logging.getLogger("httpcore") httpcore_logger.setLevel(logging.WARNING) # 设置httpcore及其子模块的级别 # 可选:禁用传播(防止被根logger处理) httpcore_logger.propagate = False from src.config import Config from src.document_loader import load_file from src.llm_client import LLMClient from src.prompt_manager import PromptManager from src.code_executor import CodeExecutor from src.dialog_manager import DialogManager from src.neo4j_raw_retriever import Neo4jRawRetriever from src.embedding_client import EmbeddingClient from project_implementation import ProjectBuilder def main(): config = Config() business_structure = load_file(config.business_object_structure_path) bowei_api_docs = load_file(config.bowei_api_docs_path) llm_client = LLMClient(config.openai) prompt_manager = PromptManager() neo4j_conf = config.neo4j_conf embedding_conf = config.embedding embedding_client = EmbeddingClient(embedding_conf) # 创建Neo4j检索器 knowledge_retriever = Neo4jRawRetriever(neo4j_conf) ProjectBuilder.init_driver(neo4j_conf) code_executor = CodeExecutor(prompt_manager.prompts, llm_client) dialog_manager = DialogManager( llm_client, business_structure, bowei_api_docs, code_executor, knowledge_retriever, prompt_manager, ) pre_input_question = "查找名称中包含“工程”的项目划分项,并返回其人工费乘以1000的值。" asyncio.run(dialog_manager.run_async(pre_input=pre_input_question)) if __name__ == "__main__": main()