113 lines
3.8 KiB
Python
113 lines
3.8 KiB
Python
import logging
|
|
import asyncio
|
|
import os
|
|
|
|
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并设置级别
|
|
langsmith_logger = logging.getLogger("langsmith.client")
|
|
langsmith_logger.setLevel(logging.WARNING) # 设置httpcore及其子模块的级别
|
|
# 可选:禁用传播(防止被根logger处理)
|
|
langsmith_logger.propagate = False
|
|
|
|
# 获取logger并设置级别
|
|
neo4j_logger = logging.getLogger("neo4j")
|
|
neo4j_logger.setLevel(logging.WARNING) # 设置httpcore及其子模块的级别
|
|
# 可选:禁用传播(防止被根logger处理)
|
|
neo4j_logger.propagate = False
|
|
|
|
# 获取logger并设置级别
|
|
urllib3_logger = logging.getLogger("urllib3")
|
|
urllib3_logger.setLevel(logging.WARNING) # 设置httpcore及其子模块的级别
|
|
# 可选:禁用传播(防止被根logger处理)
|
|
urllib3_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 import ProjectBuilder, ProjectToolkit
|
|
from project_implementation import ProjectToolkitNeo4j
|
|
|
|
|
|
|
|
def main():
|
|
config = Config()
|
|
# 根据配置设置环境变量
|
|
tracing_enabled = config.langsmith.get("tracing_enabled", False)
|
|
os.environ["LANGSMITH_PROJECT"] = config.langsmith.get("project")
|
|
os.environ["LANGSMITH_TRACING"] = "true" if tracing_enabled else "false"
|
|
os.environ["LANGSMITH_API_KEY"] = config.langsmith.get("api_key")
|
|
#os.environ["LANGSMITH_API_KEY"] = config.langsmith.get("api_url")
|
|
business_structure = load_file(config.business_object_structure_path)
|
|
bowei_api_docs = load_file(config.bowei_api_docs_path)
|
|
|
|
llm_client = LLMClient(config.openai)
|
|
llm_client_coder = LLMClient(config.openai_coder)
|
|
prompt_manager = PromptManager()
|
|
|
|
neo4j_conf = config.neo4j_conf
|
|
embedding_conf = config.embedding
|
|
|
|
embedding_client = EmbeddingClient(embedding_conf)
|
|
|
|
# 创建Neo4j检索器
|
|
|
|
knowledge_retriever = Neo4jRawRetriever(neo4j_conf)
|
|
|
|
|
|
code_executor = CodeExecutor(prompt_manager.prompts, llm_client_coder)
|
|
|
|
dialog_manager = DialogManager(
|
|
llm_client,
|
|
business_structure,
|
|
bowei_api_docs,
|
|
code_executor,
|
|
knowledge_retriever,
|
|
prompt_manager,
|
|
)
|
|
|
|
pre_input_question = '查找名称中包含"工程"的项目划分项,并返回其人工费乘以1000的值。'
|
|
pre_input_question = '查找名称中包含"工程"的项目划分项,并返回单位。'
|
|
|
|
try:
|
|
asyncio.run(dialog_manager.run_async(pre_input=pre_input_question))
|
|
finally:
|
|
|
|
neo4j_driver.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|