From 2ae6460f46cdd91644a37318d45bfd0dbe7ca223 Mon Sep 17 00:00:00 2001 From: Steven sun <98230804+Tuyohai@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:39:49 +0800 Subject: [PATCH] Add googlenews tools from rapidapi (#10877) Co-authored-by: steven --- .../builtin/rapidapi/_assets/rapidapi.png | Bin 0 -> 63239 bytes .../provider/builtin/rapidapi/rapidapi.py | 22 ++++++++++ .../provider/builtin/rapidapi/rapidapi.yaml | 39 ++++++++++++++++++ .../builtin/rapidapi/tools/google_news.py | 33 +++++++++++++++ .../builtin/rapidapi/tools/google_news.yaml | 24 +++++++++++ 5 files changed, 118 insertions(+) create mode 100644 api/core/tools/provider/builtin/rapidapi/_assets/rapidapi.png create mode 100644 api/core/tools/provider/builtin/rapidapi/rapidapi.py create mode 100644 api/core/tools/provider/builtin/rapidapi/rapidapi.yaml create mode 100644 api/core/tools/provider/builtin/rapidapi/tools/google_news.py create mode 100644 api/core/tools/provider/builtin/rapidapi/tools/google_news.yaml diff --git a/api/core/tools/provider/builtin/rapidapi/_assets/rapidapi.png b/api/core/tools/provider/builtin/rapidapi/_assets/rapidapi.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7468bb172326d7649a2f911c6f5dd7aa75584f GIT binary patch literal 63239 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 literal 0 HcmV?d00001 diff --git a/api/core/tools/provider/builtin/rapidapi/rapidapi.py b/api/core/tools/provider/builtin/rapidapi/rapidapi.py new file mode 100644 index 0000000000..31077b0894 --- /dev/null +++ b/api/core/tools/provider/builtin/rapidapi/rapidapi.py @@ -0,0 +1,22 @@ +from typing import Any + +from core.tools.errors import ToolProviderCredentialValidationError +from core.tools.provider.builtin.rapidapi.tools.google_news import GooglenewsTool +from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController + + +class RapidapiProvider(BuiltinToolProviderController): + def _validate_credentials(self, credentials: dict[str, Any]) -> None: + try: + GooglenewsTool().fork_tool_runtime( + meta={ + "credentials": credentials, + } + ).invoke( + user_id="", + tool_parameters={ + "language_region": "en-US", + }, + ) + except Exception as e: + raise ToolProviderCredentialValidationError(str(e)) diff --git a/api/core/tools/provider/builtin/rapidapi/rapidapi.yaml b/api/core/tools/provider/builtin/rapidapi/rapidapi.yaml new file mode 100644 index 0000000000..3f1d1c5824 --- /dev/null +++ b/api/core/tools/provider/builtin/rapidapi/rapidapi.yaml @@ -0,0 +1,39 @@ +identity: + name: rapidapi + author: Steven Sun + label: + en_US: RapidAPI + zh_Hans: RapidAPI + description: + en_US: RapidAPI is the world's largest API marketplace with over 1,000,000 developers and 10,000 APIs. + zh_Hans: RapidAPI是全球最大的API市场,拥有超过100万开发人员和10000个API。 + icon: rapidapi.png + tags: + - news +credentials_for_provider: + x-rapidapi-host: + type: text-input + required: true + label: + en_US: x-rapidapi-host + zh_Hans: x-rapidapi-host + placeholder: + en_US: Please input your x-rapidapi-host + zh_Hans: 请输入你的 x-rapidapi-host + help: + en_US: Get your x-rapidapi-host from RapidAPI. + zh_Hans: 从 RapidAPI 获取您的 x-rapidapi-host。 + url: https://rapidapi.com/ + x-rapidapi-key: + type: secret-input + required: true + label: + en_US: x-rapidapi-key + zh_Hans: x-rapidapi-key + placeholder: + en_US: Please input your x-rapidapi-key + zh_Hans: 请输入你的 x-rapidapi-key + help: + en_US: Get your x-rapidapi-key from RapidAPI. + zh_Hans: 从 RapidAPI 获取您的 x-rapidapi-key。 + url: https://rapidapi.com/ diff --git a/api/core/tools/provider/builtin/rapidapi/tools/google_news.py b/api/core/tools/provider/builtin/rapidapi/tools/google_news.py new file mode 100644 index 0000000000..d4b6dc4a46 --- /dev/null +++ b/api/core/tools/provider/builtin/rapidapi/tools/google_news.py @@ -0,0 +1,33 @@ +from typing import Any, Union + +import requests + +from core.tools.entities.tool_entities import ToolInvokeMessage +from core.tools.errors import ToolInvokeError, ToolProviderCredentialValidationError +from core.tools.tool.builtin_tool import BuiltinTool + + +class GooglenewsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + ) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]: + """ + invoke tools + """ + key = self.runtime.credentials.get("x-rapidapi-key", "") + host = self.runtime.credentials.get("x-rapidapi-host", "") + if not all([key, host]): + raise ToolProviderCredentialValidationError("Please input correct x-rapidapi-key and x-rapidapi-host") + headers = {"x-rapidapi-key": key, "x-rapidapi-host": host} + lr = tool_parameters.get("language_region", "") + url = f"https://{host}/latest?lr={lr}" + response = requests.get(url, headers=headers) + if response.status_code != 200: + raise ToolInvokeError(f"Error {response.status_code}: {response.text}") + return self.create_text_message(response.text) + + def validate_credentials(self, parameters: dict[str, Any]) -> None: + parameters["validate"] = True + self._invoke(parameters) diff --git a/api/core/tools/provider/builtin/rapidapi/tools/google_news.yaml b/api/core/tools/provider/builtin/rapidapi/tools/google_news.yaml new file mode 100644 index 0000000000..547681b166 --- /dev/null +++ b/api/core/tools/provider/builtin/rapidapi/tools/google_news.yaml @@ -0,0 +1,24 @@ +identity: + name: google_news + author: Steven Sun + label: + en_US: GoogleNews + zh_Hans: 谷歌新闻 +description: + human: + en_US: google news is a news aggregator service developed by Google. It presents a continuous, customizable flow of articles organized from thousands of publishers and magazines. + zh_Hans: 谷歌新闻是由谷歌开发的新闻聚合服务。它提供了一个持续的、可定制的文章流,这些文章是从成千上万的出版商和杂志中整理出来的。 + llm: A tool to get the latest news from Google News. +parameters: + - name: language_region + type: string + required: true + label: + en_US: Language and Region + zh_Hans: 语言和地区 + human_description: + en_US: The language and region determine the language and region of the search results, and its value is assigned according to the "National Language Code Comparison Table", such as en-US, which stands for English (United States); zh-CN, stands for Chinese (Simplified). + zh_Hans: 语言和地区决定了搜索结果的语言和地区,其赋值按照《国家语言代码对照表》,形如en-US,代表英语(美国);zh-CN,代表中文(简体)。 + llm_description: The language and region determine the language and region of the search results, and its value is assigned according to the "National Language Code Comparison Table", such as en-US, which stands for English (United States); zh-CN, stands for Chinese (Simplified). + default: en-US + form: llm