Files
aiagent/backend/scripts/init_builtin_tools.py

80 lines
2.4 KiB
Python
Raw Permalink Normal View History

2026-01-23 09:49:45 +08:00
#!/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()