diff --git a/main.py b/main.py new file mode 100644 index 0000000..6eb75be --- /dev/null +++ b/main.py @@ -0,0 +1,85 @@ +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 + + +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() + + # code_executor = CodeExecutor(prompt_manager.prompts, llm_client) + + neo4j_conf = config.neo4j_conf + embedding_conf = config.embedding + + embedding_client = EmbeddingClient(embedding_conf) + + knowledge_retriever = Neo4jRawRetriever(neo4j_conf) + + code_executor = CodeExecutor(prompt_manager.prompts, llm_client, neo4j_driver=knowledge_retriever.driver) + + 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()