feat: JINA_API_BASE_URL
This commit is contained in:
@@ -3186,6 +3186,12 @@ JINA_API_KEY = PersistentConfig(
|
|||||||
os.getenv("JINA_API_KEY", ""),
|
os.getenv("JINA_API_KEY", ""),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
JINA_API_BASE_URL = PersistentConfig(
|
||||||
|
"JINA_API_BASE_URL",
|
||||||
|
"rag.web.search.jina_api_base_url",
|
||||||
|
os.getenv("JINA_API_BASE_URL", ""),
|
||||||
|
)
|
||||||
|
|
||||||
SEARCHAPI_API_KEY = PersistentConfig(
|
SEARCHAPI_API_KEY = PersistentConfig(
|
||||||
"SEARCHAPI_API_KEY",
|
"SEARCHAPI_API_KEY",
|
||||||
"rag.web.search.searchapi_api_key",
|
"rag.web.search.searchapi_api_key",
|
||||||
|
|||||||
@@ -299,6 +299,7 @@ from open_webui.config import (
|
|||||||
WEB_SEARCH_DOMAIN_FILTER_LIST,
|
WEB_SEARCH_DOMAIN_FILTER_LIST,
|
||||||
OLLAMA_CLOUD_WEB_SEARCH_API_KEY,
|
OLLAMA_CLOUD_WEB_SEARCH_API_KEY,
|
||||||
JINA_API_KEY,
|
JINA_API_KEY,
|
||||||
|
JINA_API_BASE_URL,
|
||||||
SEARCHAPI_API_KEY,
|
SEARCHAPI_API_KEY,
|
||||||
SEARCHAPI_ENGINE,
|
SEARCHAPI_ENGINE,
|
||||||
SERPAPI_API_KEY,
|
SERPAPI_API_KEY,
|
||||||
@@ -969,6 +970,7 @@ app.state.config.SEARCHAPI_ENGINE = SEARCHAPI_ENGINE
|
|||||||
app.state.config.SERPAPI_API_KEY = SERPAPI_API_KEY
|
app.state.config.SERPAPI_API_KEY = SERPAPI_API_KEY
|
||||||
app.state.config.SERPAPI_ENGINE = SERPAPI_ENGINE
|
app.state.config.SERPAPI_ENGINE = SERPAPI_ENGINE
|
||||||
app.state.config.JINA_API_KEY = JINA_API_KEY
|
app.state.config.JINA_API_KEY = JINA_API_KEY
|
||||||
|
app.state.config.JINA_API_BASE_URL = JINA_API_BASE_URL
|
||||||
app.state.config.BING_SEARCH_V7_ENDPOINT = BING_SEARCH_V7_ENDPOINT
|
app.state.config.BING_SEARCH_V7_ENDPOINT = BING_SEARCH_V7_ENDPOINT
|
||||||
app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY = BING_SEARCH_V7_SUBSCRIPTION_KEY
|
app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY = BING_SEARCH_V7_SUBSCRIPTION_KEY
|
||||||
app.state.config.EXA_API_KEY = EXA_API_KEY
|
app.state.config.EXA_API_KEY = EXA_API_KEY
|
||||||
|
|||||||
@@ -7,17 +7,21 @@ from yarl import URL
|
|||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def search_jina(api_key: str, query: str, count: int) -> list[SearchResult]:
|
def search_jina(
|
||||||
|
api_key: str, query: str, count: int, base_url: str = ""
|
||||||
|
) -> list[SearchResult]:
|
||||||
"""
|
"""
|
||||||
Search using Jina's Search API and return the results as a list of SearchResult objects.
|
Search using Jina's Search API and return the results as a list of SearchResult objects.
|
||||||
Args:
|
Args:
|
||||||
|
api_key (str): The Jina API key
|
||||||
query (str): The query to search for
|
query (str): The query to search for
|
||||||
count (int): The number of results to return
|
count (int): The number of results to return
|
||||||
|
base_url (str): Optional custom base URL for the Jina API
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
list[SearchResult]: A list of search results
|
list[SearchResult]: A list of search results
|
||||||
"""
|
"""
|
||||||
jina_search_endpoint = "https://s.jina.ai/"
|
jina_search_endpoint = base_url if base_url else "https://s.jina.ai/"
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
"Accept": "application/json",
|
"Accept": "application/json",
|
||||||
|
|||||||
@@ -548,6 +548,7 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)):
|
|||||||
"SERPAPI_API_KEY": request.app.state.config.SERPAPI_API_KEY,
|
"SERPAPI_API_KEY": request.app.state.config.SERPAPI_API_KEY,
|
||||||
"SERPAPI_ENGINE": request.app.state.config.SERPAPI_ENGINE,
|
"SERPAPI_ENGINE": request.app.state.config.SERPAPI_ENGINE,
|
||||||
"JINA_API_KEY": request.app.state.config.JINA_API_KEY,
|
"JINA_API_KEY": request.app.state.config.JINA_API_KEY,
|
||||||
|
"JINA_API_BASE_URL": request.app.state.config.JINA_API_BASE_URL,
|
||||||
"BING_SEARCH_V7_ENDPOINT": request.app.state.config.BING_SEARCH_V7_ENDPOINT,
|
"BING_SEARCH_V7_ENDPOINT": request.app.state.config.BING_SEARCH_V7_ENDPOINT,
|
||||||
"BING_SEARCH_V7_SUBSCRIPTION_KEY": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY,
|
"BING_SEARCH_V7_SUBSCRIPTION_KEY": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY,
|
||||||
"EXA_API_KEY": request.app.state.config.EXA_API_KEY,
|
"EXA_API_KEY": request.app.state.config.EXA_API_KEY,
|
||||||
@@ -609,6 +610,7 @@ class WebConfig(BaseModel):
|
|||||||
SERPAPI_API_KEY: Optional[str] = None
|
SERPAPI_API_KEY: Optional[str] = None
|
||||||
SERPAPI_ENGINE: Optional[str] = None
|
SERPAPI_ENGINE: Optional[str] = None
|
||||||
JINA_API_KEY: Optional[str] = None
|
JINA_API_KEY: Optional[str] = None
|
||||||
|
JINA_API_BASE_URL: Optional[str] = None
|
||||||
BING_SEARCH_V7_ENDPOINT: Optional[str] = None
|
BING_SEARCH_V7_ENDPOINT: Optional[str] = None
|
||||||
BING_SEARCH_V7_SUBSCRIPTION_KEY: Optional[str] = None
|
BING_SEARCH_V7_SUBSCRIPTION_KEY: Optional[str] = None
|
||||||
EXA_API_KEY: Optional[str] = None
|
EXA_API_KEY: Optional[str] = None
|
||||||
@@ -1094,6 +1096,7 @@ async def update_rag_config(
|
|||||||
request.app.state.config.SERPAPI_API_KEY = form_data.web.SERPAPI_API_KEY
|
request.app.state.config.SERPAPI_API_KEY = form_data.web.SERPAPI_API_KEY
|
||||||
request.app.state.config.SERPAPI_ENGINE = form_data.web.SERPAPI_ENGINE
|
request.app.state.config.SERPAPI_ENGINE = form_data.web.SERPAPI_ENGINE
|
||||||
request.app.state.config.JINA_API_KEY = form_data.web.JINA_API_KEY
|
request.app.state.config.JINA_API_KEY = form_data.web.JINA_API_KEY
|
||||||
|
request.app.state.config.JINA_API_BASE_URL = form_data.web.JINA_API_BASE_URL
|
||||||
request.app.state.config.BING_SEARCH_V7_ENDPOINT = (
|
request.app.state.config.BING_SEARCH_V7_ENDPOINT = (
|
||||||
form_data.web.BING_SEARCH_V7_ENDPOINT
|
form_data.web.BING_SEARCH_V7_ENDPOINT
|
||||||
)
|
)
|
||||||
@@ -1246,6 +1249,7 @@ async def update_rag_config(
|
|||||||
"SERPAPI_API_KEY": request.app.state.config.SERPAPI_API_KEY,
|
"SERPAPI_API_KEY": request.app.state.config.SERPAPI_API_KEY,
|
||||||
"SERPAPI_ENGINE": request.app.state.config.SERPAPI_ENGINE,
|
"SERPAPI_ENGINE": request.app.state.config.SERPAPI_ENGINE,
|
||||||
"JINA_API_KEY": request.app.state.config.JINA_API_KEY,
|
"JINA_API_KEY": request.app.state.config.JINA_API_KEY,
|
||||||
|
"JINA_API_BASE_URL": request.app.state.config.JINA_API_BASE_URL,
|
||||||
"BING_SEARCH_V7_ENDPOINT": request.app.state.config.BING_SEARCH_V7_ENDPOINT,
|
"BING_SEARCH_V7_ENDPOINT": request.app.state.config.BING_SEARCH_V7_ENDPOINT,
|
||||||
"BING_SEARCH_V7_SUBSCRIPTION_KEY": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY,
|
"BING_SEARCH_V7_SUBSCRIPTION_KEY": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY,
|
||||||
"EXA_API_KEY": request.app.state.config.EXA_API_KEY,
|
"EXA_API_KEY": request.app.state.config.EXA_API_KEY,
|
||||||
@@ -2027,6 +2031,7 @@ def search_web(
|
|||||||
request.app.state.config.JINA_API_KEY,
|
request.app.state.config.JINA_API_KEY,
|
||||||
query,
|
query,
|
||||||
request.app.state.config.WEB_SEARCH_RESULT_COUNT,
|
request.app.state.config.WEB_SEARCH_RESULT_COUNT,
|
||||||
|
request.app.state.config.JINA_API_BASE_URL,
|
||||||
)
|
)
|
||||||
elif engine == "bing":
|
elif engine == "bing":
|
||||||
return search_bing(
|
return search_bing(
|
||||||
|
|||||||
@@ -469,6 +469,24 @@
|
|||||||
{:else if webConfig.WEB_SEARCH_ENGINE === 'jina'}
|
{:else if webConfig.WEB_SEARCH_ENGINE === 'jina'}
|
||||||
<div class="mb-2.5 flex w-full flex-col">
|
<div class="mb-2.5 flex w-full flex-col">
|
||||||
<div>
|
<div>
|
||||||
|
<div class=" self-center text-xs font-medium mb-1">
|
||||||
|
{$i18n.t('Jina API Base URL')}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex w-full">
|
||||||
|
<div class="flex-1">
|
||||||
|
<input
|
||||||
|
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-hidden"
|
||||||
|
type="text"
|
||||||
|
placeholder={$i18n.t('Enter Jina API Base URL')}
|
||||||
|
bind:value={webConfig.JINA_API_BASE_URL}
|
||||||
|
autocomplete="off"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-2">
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
<div class=" self-center text-xs font-medium mb-1">
|
||||||
{$i18n.t('Jina API Key')}
|
{$i18n.t('Jina API Key')}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user