From a356a93b95de7ba4f008e3a0b571e5c03066393f Mon Sep 17 00:00:00 2001 From: chentianrui Date: Tue, 24 Jun 2025 14:57:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..53f723b --- /dev/null +++ b/main.py @@ -0,0 +1,88 @@ +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()