feat(tool system): Tool info add tags variable
This commit is contained in:
@@ -33,7 +33,7 @@ async def list_apps():
|
|||||||
"""列出可访问的应用(占位)"""
|
"""列出可访问的应用(占位)"""
|
||||||
return success(data=[], msg="App API - Coming Soon")
|
return success(data=[], msg="App API - Coming Soon")
|
||||||
|
|
||||||
# /v1/apps/{resource_id}/chat
|
# /v1/app/chat
|
||||||
|
|
||||||
# @router.post("/chat")
|
# @router.post("/chat")
|
||||||
# @require_api_key(scopes=["app"])
|
# @require_api_key(scopes=["app"])
|
||||||
@@ -49,7 +49,6 @@ async def list_apps():
|
|||||||
# scopes: 所需的权限范围列表["app", "rag", "memory"]
|
# scopes: 所需的权限范围列表["app", "rag", "memory"]
|
||||||
|
|
||||||
# Args:
|
# Args:
|
||||||
# resource_id: 如果是应用的apikey传的是应用id; 如果是服务的apikey传的是工作空间id
|
|
||||||
# message: 请求参数
|
# message: 请求参数
|
||||||
# request: 声明请求
|
# request: 声明请求
|
||||||
# api_key_auth: 包含验证后的API Key 信息
|
# api_key_auth: 包含验证后的API Key 信息
|
||||||
|
|||||||
@@ -87,7 +87,8 @@ async def create_tool(
|
|||||||
tenant_id=current_user.tenant_id,
|
tenant_id=current_user.tenant_id,
|
||||||
icon=request.icon,
|
icon=request.icon,
|
||||||
description=request.description,
|
description=request.description,
|
||||||
config=request.config
|
config=request.config,
|
||||||
|
tags=request.tags
|
||||||
)
|
)
|
||||||
return success(data={"tool_id": tool_id}, msg="工具创建成功")
|
return success(data={"tool_id": tool_id}, msg="工具创建成功")
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@@ -112,7 +113,8 @@ async def update_tool(
|
|||||||
description=request.description,
|
description=request.description,
|
||||||
icon=request.icon,
|
icon=request.icon,
|
||||||
config=request.config,
|
config=request.config,
|
||||||
is_enabled=request.config.get("is_enabled", None)
|
is_enabled=request.config.get("is_enabled", None),
|
||||||
|
tags=request.tags
|
||||||
)
|
)
|
||||||
if not success_flag:
|
if not success_flag:
|
||||||
raise HTTPException(status_code=404, detail="工具不存在")
|
raise HTTPException(status_code=404, detail="工具不存在")
|
||||||
@@ -220,6 +222,8 @@ async def test_tool_connection(
|
|||||||
else:
|
else:
|
||||||
# 普通连接测试
|
# 普通连接测试
|
||||||
result = await service.test_connection(tool_id, current_user.tenant_id)
|
result = await service.test_connection(tool_id, current_user.tenant_id)
|
||||||
|
if result["success"] is False:
|
||||||
|
raise HTTPException(status_code=400, detail=result["message"])
|
||||||
return success(data=result, msg="连接测试完成")
|
return success(data=result, msg="连接测试完成")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise HTTPException(status_code=500, detail=str(e))
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|||||||
@@ -30,32 +30,5 @@
|
|||||||
"parameters": {
|
"parameters": {
|
||||||
"api_key": {"type": "string", "description": "百度搜索API密钥", "sensitive": true, "required": true}
|
"api_key": {"type": "string", "description": "百度搜索API密钥", "sensitive": true, "required": true}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"mineru": {
|
|
||||||
"name": "MinerU",
|
|
||||||
"description": "PDF文档解析工具",
|
|
||||||
"tool_class": "MinerUTool",
|
|
||||||
"category": "document",
|
|
||||||
"requires_config": true,
|
|
||||||
"version": "1.0.0",
|
|
||||||
"enabled": true,
|
|
||||||
"parameters": {
|
|
||||||
"api_key": {"type": "string", "description": "MinerU API密钥", "sensitive": true, "required": true},
|
|
||||||
"base_url": {"type": "string", "description": "API地址", "default": "https://api.mineru.com"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"textin": {
|
|
||||||
"name": "TextIn",
|
|
||||||
"description": "OCR文字识别服务",
|
|
||||||
"tool_class": "TextInTool",
|
|
||||||
"category": "ocr",
|
|
||||||
"requires_config": true,
|
|
||||||
"version": "1.0.0",
|
|
||||||
"enabled": true,
|
|
||||||
"parameters": {
|
|
||||||
"api_key": {"type": "string", "description": "TextIn API密钥", "sensitive": true, "required": true},
|
|
||||||
"api_secret": {"type": "string", "description": "TextIn API密钥", "sensitive": true, "required": true},
|
|
||||||
"base_url": {"type": "string", "description": "API地址", "default": "https://api.textin.com/v1"}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -191,6 +191,7 @@ class ToolCreateRequest(BaseModel):
|
|||||||
icon: Optional[str] = Field(None, max_length=255)
|
icon: Optional[str] = Field(None, max_length=255)
|
||||||
tool_type: ToolType
|
tool_type: ToolType
|
||||||
config: Dict[str, Any] = Field(default_factory=dict)
|
config: Dict[str, Any] = Field(default_factory=dict)
|
||||||
|
tags: List[str] = Field(default_factory=list)
|
||||||
|
|
||||||
|
|
||||||
class ToolUpdateRequest(BaseModel):
|
class ToolUpdateRequest(BaseModel):
|
||||||
@@ -200,6 +201,7 @@ class ToolUpdateRequest(BaseModel):
|
|||||||
icon: Optional[str] = Field(None, max_length=255)
|
icon: Optional[str] = Field(None, max_length=255)
|
||||||
config: Optional[Dict[str, Any]] = None
|
config: Optional[Dict[str, Any]] = None
|
||||||
is_enabled: Optional[bool] = None
|
is_enabled: Optional[bool] = None
|
||||||
|
tags: Optional[List[str]] = None
|
||||||
|
|
||||||
|
|
||||||
class ToolExecuteRequest(BaseModel):
|
class ToolExecuteRequest(BaseModel):
|
||||||
|
|||||||
@@ -83,7 +83,8 @@ class ToolService:
|
|||||||
tenant_id: uuid.UUID,
|
tenant_id: uuid.UUID,
|
||||||
icon: Optional[str] = None,
|
icon: Optional[str] = None,
|
||||||
description: Optional[str] = None,
|
description: Optional[str] = None,
|
||||||
config: Optional[Dict[str, Any]] = None
|
config: Optional[Dict[str, Any]] = None,
|
||||||
|
tags: Optional[List[str]] = None
|
||||||
) -> str:
|
) -> str:
|
||||||
"""创建工具"""
|
"""创建工具"""
|
||||||
if tool_type == ToolType.BUILTIN:
|
if tool_type == ToolType.BUILTIN:
|
||||||
@@ -98,7 +99,8 @@ class ToolService:
|
|||||||
tool_type=tool_type.value,
|
tool_type=tool_type.value,
|
||||||
tenant_id=tenant_id,
|
tenant_id=tenant_id,
|
||||||
status=ToolStatus.AVAILABLE.value,
|
status=ToolStatus.AVAILABLE.value,
|
||||||
config_data=config or {}
|
config_data=config or {},
|
||||||
|
tags=tags
|
||||||
)
|
)
|
||||||
self.db.add(tool_config)
|
self.db.add(tool_config)
|
||||||
self.db.flush()
|
self.db.flush()
|
||||||
@@ -123,7 +125,8 @@ class ToolService:
|
|||||||
description: Optional[str] = None,
|
description: Optional[str] = None,
|
||||||
icon: Optional[str] = None,
|
icon: Optional[str] = None,
|
||||||
config: Optional[Dict[str, Any]] = None,
|
config: Optional[Dict[str, Any]] = None,
|
||||||
is_enabled: Optional[bool] = None
|
is_enabled: Optional[bool] = None,
|
||||||
|
tags: Optional[List[str]] = None
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""更新工具"""
|
"""更新工具"""
|
||||||
config_obj = self._get_tool_config(tool_id, tenant_id)
|
config_obj = self._get_tool_config(tool_id, tenant_id)
|
||||||
@@ -140,6 +143,8 @@ class ToolService:
|
|||||||
config_obj.description = description
|
config_obj.description = description
|
||||||
if icon:
|
if icon:
|
||||||
config_obj.icon = icon
|
config_obj.icon = icon
|
||||||
|
if tags:
|
||||||
|
config_obj.tags = tags
|
||||||
if config:
|
if config:
|
||||||
config_obj.config_data = config.copy()
|
config_obj.config_data = config.copy()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user