|
@@ -67,7 +67,7 @@ from apps.rag.search.main import SearchResult
|
|
from apps.rag.search.searxng import search_searxng
|
|
from apps.rag.search.searxng import search_searxng
|
|
from apps.rag.search.serper import search_serper
|
|
from apps.rag.search.serper import search_serper
|
|
from apps.rag.search.serpstack import search_serpstack
|
|
from apps.rag.search.serpstack import search_serpstack
|
|
-
|
|
|
|
|
|
+from apps.rag.search.serply import search_serply
|
|
|
|
|
|
from utils.misc import (
|
|
from utils.misc import (
|
|
calculate_sha256,
|
|
calculate_sha256,
|
|
@@ -113,6 +113,7 @@ from config import (
|
|
SERPSTACK_API_KEY,
|
|
SERPSTACK_API_KEY,
|
|
SERPSTACK_HTTPS,
|
|
SERPSTACK_HTTPS,
|
|
SERPER_API_KEY,
|
|
SERPER_API_KEY,
|
|
|
|
+ SERPLY_API_KEY,
|
|
RAG_WEB_SEARCH_RESULT_COUNT,
|
|
RAG_WEB_SEARCH_RESULT_COUNT,
|
|
RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
|
RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
|
RAG_EMBEDDING_OPENAI_BATCH_SIZE,
|
|
RAG_EMBEDDING_OPENAI_BATCH_SIZE,
|
|
@@ -165,6 +166,7 @@ app.state.config.BRAVE_SEARCH_API_KEY = BRAVE_SEARCH_API_KEY
|
|
app.state.config.SERPSTACK_API_KEY = SERPSTACK_API_KEY
|
|
app.state.config.SERPSTACK_API_KEY = SERPSTACK_API_KEY
|
|
app.state.config.SERPSTACK_HTTPS = SERPSTACK_HTTPS
|
|
app.state.config.SERPSTACK_HTTPS = SERPSTACK_HTTPS
|
|
app.state.config.SERPER_API_KEY = SERPER_API_KEY
|
|
app.state.config.SERPER_API_KEY = SERPER_API_KEY
|
|
|
|
+app.state.config.SERPLY_API_KEY = SERPLY_API_KEY
|
|
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = RAG_WEB_SEARCH_RESULT_COUNT
|
|
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = RAG_WEB_SEARCH_RESULT_COUNT
|
|
app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = RAG_WEB_SEARCH_CONCURRENT_REQUESTS
|
|
app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = RAG_WEB_SEARCH_CONCURRENT_REQUESTS
|
|
|
|
|
|
@@ -392,6 +394,7 @@ async def get_rag_config(user=Depends(get_admin_user)):
|
|
"serpstack_api_key": app.state.config.SERPSTACK_API_KEY,
|
|
"serpstack_api_key": app.state.config.SERPSTACK_API_KEY,
|
|
"serpstack_https": app.state.config.SERPSTACK_HTTPS,
|
|
"serpstack_https": app.state.config.SERPSTACK_HTTPS,
|
|
"serper_api_key": app.state.config.SERPER_API_KEY,
|
|
"serper_api_key": app.state.config.SERPER_API_KEY,
|
|
|
|
+ "serply_api_key": app.state.config.SERPLY_API_KEY,
|
|
"result_count": app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
|
"result_count": app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
|
"concurrent_requests": app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
|
"concurrent_requests": app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
|
},
|
|
},
|
|
@@ -419,6 +422,7 @@ class WebSearchConfig(BaseModel):
|
|
serpstack_api_key: Optional[str] = None
|
|
serpstack_api_key: Optional[str] = None
|
|
serpstack_https: Optional[bool] = None
|
|
serpstack_https: Optional[bool] = None
|
|
serper_api_key: Optional[str] = None
|
|
serper_api_key: Optional[str] = None
|
|
|
|
+ serply_api_key: Optional[str] = None
|
|
result_count: Optional[int] = None
|
|
result_count: Optional[int] = None
|
|
concurrent_requests: Optional[int] = None
|
|
concurrent_requests: Optional[int] = None
|
|
|
|
|
|
@@ -469,6 +473,7 @@ async def update_rag_config(form_data: ConfigUpdateForm, user=Depends(get_admin_
|
|
app.state.config.SERPSTACK_API_KEY = form_data.web.search.serpstack_api_key
|
|
app.state.config.SERPSTACK_API_KEY = form_data.web.search.serpstack_api_key
|
|
app.state.config.SERPSTACK_HTTPS = form_data.web.search.serpstack_https
|
|
app.state.config.SERPSTACK_HTTPS = form_data.web.search.serpstack_https
|
|
app.state.config.SERPER_API_KEY = form_data.web.search.serper_api_key
|
|
app.state.config.SERPER_API_KEY = form_data.web.search.serper_api_key
|
|
|
|
+ app.state.config.SERPLY_API_KEY = form_data.web.search.serply_api_key
|
|
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = form_data.web.search.result_count
|
|
app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = form_data.web.search.result_count
|
|
app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = (
|
|
app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = (
|
|
form_data.web.search.concurrent_requests
|
|
form_data.web.search.concurrent_requests
|
|
@@ -497,6 +502,7 @@ async def update_rag_config(form_data: ConfigUpdateForm, user=Depends(get_admin_
|
|
"serpstack_api_key": app.state.config.SERPSTACK_API_KEY,
|
|
"serpstack_api_key": app.state.config.SERPSTACK_API_KEY,
|
|
"serpstack_https": app.state.config.SERPSTACK_HTTPS,
|
|
"serpstack_https": app.state.config.SERPSTACK_HTTPS,
|
|
"serper_api_key": app.state.config.SERPER_API_KEY,
|
|
"serper_api_key": app.state.config.SERPER_API_KEY,
|
|
|
|
+ "serply_api_key": app.state.config.SERPLY_API_KEY,
|
|
"result_count": app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
|
"result_count": app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
|
"concurrent_requests": app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
|
"concurrent_requests": app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
|
},
|
|
},
|
|
@@ -744,6 +750,7 @@ def search_web(engine: str, query: str) -> list[SearchResult]:
|
|
- BRAVE_SEARCH_API_KEY
|
|
- BRAVE_SEARCH_API_KEY
|
|
- SERPSTACK_API_KEY
|
|
- SERPSTACK_API_KEY
|
|
- SERPER_API_KEY
|
|
- SERPER_API_KEY
|
|
|
|
+ - SERPLY_API_KEY
|
|
|
|
|
|
Args:
|
|
Args:
|
|
query (str): The query to search for
|
|
query (str): The query to search for
|
|
@@ -802,6 +809,15 @@ def search_web(engine: str, query: str) -> list[SearchResult]:
|
|
)
|
|
)
|
|
else:
|
|
else:
|
|
raise Exception("No SERPER_API_KEY found in environment variables")
|
|
raise Exception("No SERPER_API_KEY found in environment variables")
|
|
|
|
+ elif engine == "serply":
|
|
|
|
+ if app.state.config.SERPLY_API_KEY:
|
|
|
|
+ return search_serply(
|
|
|
|
+ app.state.config.SERPLY_API_KEY,
|
|
|
|
+ query,
|
|
|
|
+ app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
|
|
|
|
+ )
|
|
|
|
+ else:
|
|
|
|
+ raise Exception("No SERPLY_API_KEY found in environment variables")
|
|
else:
|
|
else:
|
|
raise Exception("No search engine API key found in environment variables")
|
|
raise Exception("No search engine API key found in environment variables")
|
|
|
|
|
|
@@ -809,6 +825,7 @@ def search_web(engine: str, query: str) -> list[SearchResult]:
|
|
@app.post("/web/search")
|
|
@app.post("/web/search")
|
|
def store_web_search(form_data: SearchForm, user=Depends(get_current_user)):
|
|
def store_web_search(form_data: SearchForm, user=Depends(get_current_user)):
|
|
try:
|
|
try:
|
|
|
|
+ logging.info(f"trying to web search with {app.state.config.RAG_WEB_SEARCH_ENGINE, form_data.query}")
|
|
web_results = search_web(
|
|
web_results = search_web(
|
|
app.state.config.RAG_WEB_SEARCH_ENGINE, form_data.query
|
|
app.state.config.RAG_WEB_SEARCH_ENGINE, form_data.query
|
|
)
|
|
)
|