feat: Add Optional API Key, Proxy Server, and Bypass Cache Parameters to Jina Tools (#5197)

This commit is contained in:
Jaxon Ley 2024-06-14 19:09:25 +08:00 committed by GitHub
parent 0f35d07052
commit 337bad8525
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 114 additions and 3 deletions

View File

@ -1,14 +1,32 @@
import json
from typing import Any
from core.tools.entities.values import ToolLabelEnum
from core.tools.errors import ToolProviderCredentialValidationError
from core.tools.provider.builtin.jina.tools.jina_reader import JinaReaderTool
from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
class GoogleProvider(BuiltinToolProviderController):
def _validate_credentials(self, credentials: dict[str, Any]) -> None:
try:
pass
if credentials['api_key'] is None:
credentials['api_key'] = ''
else:
result = JinaReaderTool().fork_tool_runtime(
runtime={
"credentials": credentials,
}
).invoke(
user_id='',
tool_parameters={
"url": "https://example.com",
},
)[0]
message = json.loads(result.message)
if message['code'] != 200:
raise ToolProviderCredentialValidationError(message['message'])
except Exception as e:
raise ToolProviderCredentialValidationError(str(e))

View File

@ -14,3 +14,19 @@ identity:
- search
- productivity
credentials_for_provider:
api_key:
type: secret-input
required: false
label:
en_US: API Key (leave empty if you don't have one)
zh_Hans: API 密钥(可留空)
pt_BR: Chave API (deixe vazio se você não tiver uma)
placeholder:
en_US: Please enter your Jina API key
zh_Hans: 请输入你的 Jina API 密钥
pt_BR: Por favor, insira sua chave de API do Jina
help:
en_US: Get your Jina API key from Jina (optional, but you can get a higher rate)
zh_Hans: 从 Jina 获取您的 Jina API 密钥(非必须,能得到更高的速率)
pt_BR: Obtenha sua chave de API do Jina na Jina (opcional, mas você pode obter uma taxa mais alta)
url: https://jina.ai

View File

@ -23,14 +23,24 @@ class JinaReaderTool(BuiltinTool):
'Accept': 'application/json'
}
if 'api_key' in self.runtime.credentials and self.runtime.credentials.get('api_key'):
headers['Authorization'] = "Bearer " + self.runtime.credentials.get('api_key')
target_selector = tool_parameters.get('target_selector', None)
if target_selector is not None:
if target_selector is not None and target_selector != '':
headers['X-Target-Selector'] = target_selector
wait_for_selector = tool_parameters.get('wait_for_selector', None)
if wait_for_selector is not None:
if wait_for_selector is not None and wait_for_selector != '':
headers['X-Wait-For-Selector'] = wait_for_selector
proxy_server = tool_parameters.get('proxy_server', None)
if proxy_server is not None and proxy_server != '':
headers['X-Proxy-Url'] = proxy_server
if tool_parameters.get('no_cache', False):
headers['X-No-Cache'] = 'true'
response = ssrf_proxy.get(
str(URL(self._jina_reader_endpoint + url)),
headers=headers,

View File

@ -51,6 +51,33 @@ parameters:
pt_BR: css selector for waiting for specific elements
llm_description: css selector of the target element to wait for
form: form
- name: proxy_server
type: string
required: false
label:
en_US: Proxy server
zh_Hans: 代理服务器
pt_BR: Servidor de proxy
human_description:
en_US: Use proxy to access URLs
zh_Hans: 利用代理访问 URL
pt_BR: Use proxy to access URLs
llm_description: Use proxy to access URLs
form: form
- name: no_cache
type: boolean
required: false
default: false
label:
en_US: Bypass the Cache
zh_Hans: 绕过缓存
pt_BR: Ignorar o cache
human_description:
en_US: Bypass the Cache
zh_Hans: 是否绕过缓存
pt_BR: Ignorar o cache
llm_description: bypass the cache
form: form
- name: summary
type: boolean
required: false

View File

@ -21,6 +21,16 @@ class JinaSearchTool(BuiltinTool):
'Accept': 'application/json'
}
if 'api_key' in self.runtime.credentials and self.runtime.credentials.get('api_key'):
headers['Authorization'] = "Bearer " + self.runtime.credentials.get('api_key')
proxy_server = tool_parameters.get('proxy_server', None)
if proxy_server is not None and proxy_server != '':
headers['X-Proxy-Url'] = proxy_server
if tool_parameters.get('no_cache', False):
headers['X-No-Cache'] = 'true'
response = ssrf_proxy.get(
str(URL(self._jina_search_endpoint + query)),
headers=headers,

View File

@ -8,6 +8,7 @@ identity:
description:
human:
en_US: Search on the web and get the top 5 results. Useful for grounding using information from the web.
zh_Hans: 在网络上搜索返回前 5 个结果。
llm: A tool for searching results on the web for grounding. Input should be a simple question.
parameters:
- name: query
@ -15,7 +16,36 @@ parameters:
required: true
label:
en_US: Question (Query)
zh_Hans: 信息查询
human_description:
en_US: used to find information on the web
zh_Hans: 在网络上搜索信息
llm_description: simple question to ask on the web
form: llm
- name: proxy_server
type: string
required: false
label:
en_US: Proxy server
zh_Hans: 代理服务器
pt_BR: Servidor de proxy
human_description:
en_US: Use proxy to access URLs
zh_Hans: 利用代理访问 URL
pt_BR: Use proxy to access URLs
llm_description: Use proxy to access URLs
form: form
- name: no_cache
type: boolean
required: false
default: false
label:
en_US: Bypass the Cache
zh_Hans: 绕过缓存
pt_BR: Ignorar o cache
human_description:
en_US: Bypass the Cache
zh_Hans: 是否绕过缓存
pt_BR: Ignorar o cache
llm_description: bypass the cache
form: form