-
Notifications
You must be signed in to change notification settings - Fork 9.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add googlenews tools from rapidapi (#10877)
Co-authored-by: steven <[email protected]>
- Loading branch information
Showing
5 changed files
with
118 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/ |
33 changes: 33 additions & 0 deletions
33
api/core/tools/provider/builtin/rapidapi/tools/google_news.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) |
24 changes: 24 additions & 0 deletions
24
api/core/tools/provider/builtin/rapidapi/tools/google_news.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |