From 7f1413c6d95a2613caa8318cacf581b755f4c7cc Mon Sep 17 00:00:00 2001 From: fuwx Date: Mon, 10 Mar 2025 16:38:29 +0800 Subject: [PATCH] add tools --- .../tools/originx_service_instance.py | 43 ++++++++++++++ .../tools/originx_service_instance.yaml | 57 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_instance.py create mode 100644 api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_instance.yaml diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_instance.py b/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_instance.py new file mode 100644 index 0000000000..787126476f --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_instance.py @@ -0,0 +1,43 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +import requests + +from configs import dify_config +from core.tools.builtin_tool.tool import BuiltinTool +from core.tools.entities.tool_entities import ToolInvokeMessage +from libs.apo_utils import APOUtils + +class OriginxServiceListTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + service_name = tool_parameters.get("service_name") + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': 'Originx 北极星指标 (服务层级) - 北极星指标 - 列出指定服务的所有实例', + 'params': { + "service_name": service_name, + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + "timeseries": list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_instance.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_instance.yaml new file mode 100644 index 0000000000..8c988f7c00 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_instance.yaml @@ -0,0 +1,57 @@ +identity: + name: originx_service_instance + author: APO + label: + en_US: List service instances + zh_Hans: 列出该服务下的所有实例 + pt_BR: List service instances +description: + human: + en_US: List service instances + zh_Hans: 列出该服务下的所有实例 + pt_BR: List service instances + llm: 列出该服务下的所有实例 +display: + type: metric + title: Originx 北极星指标 (服务层级) - 北极星指标 - 列出指定服务的所有实例 + unit: ns +parameters: + - name: service_name + type: string + required: true + label: + en_US: service_name + zh_Hans: service_name + pt_BR: service_name + human_description: + en_US: Specified service name + zh_Hans: 指定的服务名 + pt_BR: Specified service name + llm_description: Specified service name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm \ No newline at end of file