ADD file via upload

main
pghfovyix 1 month ago
parent 9e9a594e93
commit bdb2812c81

@ -0,0 +1,93 @@
"""
主程序入口
"""
import sys
from pathlib import Path
import argparse
# 添加项目根目录到Python路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))
from toolorchestra.core.orchestrator import ToolOrchestrator
from toolorchestra.utils.logger import setup_logging
def main():
"""主函数"""
parser = argparse.ArgumentParser(description="ToolOrchestra - 工具编排系统")
parser.add_argument(
"--config",
"-c",
default="config/tools.yaml",
help="配置文件路径"
)
parser.add_argument(
"--workflow",
"-w",
help="工作流配置文件路径"
)
parser.add_argument(
"--verbose",
"-v",
action="store_true",
help="详细输出模式"
)
args = parser.parse_args()
# 设置日志
log_level = "DEBUG" if args.verbose else "INFO"
logger = setup_logging(default_level=log_level)
try:
# 创建编排器
orchestrator = ToolOrchestrator(config_path=args.config)
# 加载工具
orchestrator.load_tools_from_config()
logger.info(f"已加载 {len(orchestrator.tools)} 个工具")
if args.workflow:
# 执行工作流
import yaml
with open(args.workflow, 'r') as f:
workflow = yaml.safe_load(f)
results = orchestrator.execute_workflow(workflow)
# 输出结果
for result in results:
print(f"工具: {result['tool']}, 状态: {result['status']}")
else:
# 交互模式
print("ToolOrchestra 已启动,输入 'exit' 退出")
while True:
command = input("> ").strip()
if command.lower() == "exit":
break
elif command.lower() == "list":
for name, tool in orchestrator.tools.items():
print(f" {name}: v{tool.version}")
elif command.startswith("run "):
# 简单命令执行
parts = command[4:].split()
if len(parts) >= 1:
tool_name = parts[0]
# 简化参数处理
params = {"input": " ".join(parts[1:])} if len(parts) > 1 else {}
result = orchestrator.execute_workflow([
{"tool": tool_name, "params": params}
])
print(f"结果: {result}")
except Exception as e:
logger.error(f"程序执行失败: {str(e)}")
return 1
return 0
if __name__ == "__main__":
sys.exit(main())
Loading…
Cancel
Save