80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
初始化内置工具脚本
|
||
"""
|
||
import sys
|
||
import os
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
|
||
from app.core.database import SessionLocal
|
||
from app.models.tool import Tool
|
||
from app.services.tool_registry import tool_registry
|
||
from app.services.builtin_tools import (
|
||
http_request_tool,
|
||
file_read_tool,
|
||
HTTP_REQUEST_SCHEMA,
|
||
FILE_READ_SCHEMA
|
||
)
|
||
|
||
|
||
def init_builtin_tools():
|
||
"""初始化内置工具"""
|
||
db = SessionLocal()
|
||
|
||
try:
|
||
# 注册内置工具到注册表
|
||
tool_registry.register_builtin_tool(
|
||
"http_request",
|
||
http_request_tool,
|
||
HTTP_REQUEST_SCHEMA
|
||
)
|
||
|
||
tool_registry.register_builtin_tool(
|
||
"file_read",
|
||
file_read_tool,
|
||
FILE_READ_SCHEMA
|
||
)
|
||
|
||
print("✅ 内置工具已注册到工具注册表")
|
||
|
||
# 保存到数据库
|
||
tools_to_create = [
|
||
("http_request", HTTP_REQUEST_SCHEMA, "发送HTTP请求,支持GET、POST、PUT、DELETE方法"),
|
||
("file_read", FILE_READ_SCHEMA, "读取文件内容,只能读取项目目录下的文件")
|
||
]
|
||
|
||
created_count = 0
|
||
for tool_name, tool_schema, description in tools_to_create:
|
||
existing = db.query(Tool).filter(Tool.name == tool_name).first()
|
||
if not existing:
|
||
tool = Tool(
|
||
name=tool_name,
|
||
description=description,
|
||
category="builtin",
|
||
function_schema=tool_schema,
|
||
implementation_type="builtin",
|
||
is_public=True
|
||
)
|
||
db.add(tool)
|
||
created_count += 1
|
||
print(f"✅ 创建工具: {tool_name}")
|
||
else:
|
||
# 更新工具定义
|
||
existing.function_schema = tool_schema
|
||
existing.description = description
|
||
print(f"ℹ️ 更新工具: {tool_name}")
|
||
|
||
db.commit()
|
||
print(f"\n✅ 内置工具初始化完成!创建了 {created_count} 个工具")
|
||
except Exception as e:
|
||
db.rollback()
|
||
print(f"❌ 初始化失败: {str(e)}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
finally:
|
||
db.close()
|
||
|
||
|
||
if __name__ == "__main__":
|
||
init_builtin_tools()
|