Files
langchain_projectagent/main.py
T

86 lines
2.6 KiB
Python

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()