Spaces:
Sleeping
Sleeping
Updated web Search function
Browse files- pipeline.py +23 -18
pipeline.py
CHANGED
@@ -26,6 +26,7 @@ from langchain.prompts import PromptTemplate
|
|
26 |
from langchain.docstore.document import Document
|
27 |
from langchain_core.caches import BaseCache
|
28 |
from langchain_core.callbacks import Callbacks
|
|
|
29 |
|
30 |
from chain.classification_chain import get_classification_chain
|
31 |
from chain.refusal_chain import get_refusal_chain
|
@@ -220,32 +221,36 @@ def retrieve_websearch_result(query: str) -> Optional[str]:
|
|
220 |
return web_search_cache.get(query.strip().lower())
|
221 |
|
222 |
def do_web_search(query: str) -> str:
|
223 |
-
"""Performs web search if no cached result exists."""
|
224 |
try:
|
225 |
cached = retrieve_websearch_result(query)
|
226 |
if cached:
|
227 |
logger.info("Using cached web search result.")
|
228 |
return cached
|
229 |
|
230 |
-
logger.info("Performing a new web search for: '%s'", query)
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
)
|
|
|
|
|
|
|
243 |
|
244 |
-
|
245 |
-
|
246 |
-
|
|
|
247 |
except Exception as e:
|
248 |
-
logger.error(f"Web search failed: {e}")
|
249 |
return ""
|
250 |
|
251 |
def is_greeting(query: str) -> bool:
|
|
|
26 |
from langchain.docstore.document import Document
|
27 |
from langchain_core.caches import BaseCache
|
28 |
from langchain_core.callbacks import Callbacks
|
29 |
+
from langchain_community.tools import TavilySearchResults
|
30 |
|
31 |
from chain.classification_chain import get_classification_chain
|
32 |
from chain.refusal_chain import get_refusal_chain
|
|
|
221 |
return web_search_cache.get(query.strip().lower())
|
222 |
|
223 |
def do_web_search(query: str) -> str:
|
224 |
+
"""Performs web search using Tavily if no cached result exists."""
|
225 |
try:
|
226 |
cached = retrieve_websearch_result(query)
|
227 |
if cached:
|
228 |
logger.info("Using cached web search result.")
|
229 |
return cached
|
230 |
|
231 |
+
logger.info("Performing a new Tavily web search for: '%s'", query)
|
232 |
+
#Intialize Tavily search tool
|
233 |
+
tavily_api_key = os.environ.get("TAVILY_API_KEY")
|
234 |
+
if not tavily_api_key:
|
235 |
+
logger.error("Tavily API key not found.")
|
236 |
+
return "Unable to perform web search API key not set"
|
237 |
+
#Create Tavily Search Tool
|
238 |
+
tavily_search=TavilySearchResults(api_key=tavily_api_key)
|
239 |
+
#Perform search
|
240 |
+
search_results = tavily_search.search(query, num_results=3)
|
241 |
+
|
242 |
+
result_text = "Web Search Results:\n\n"
|
243 |
+
for i, result in enumerate(search_results):
|
244 |
+
result_text += f"{i+1}. {result.get('title', 'No Title')}\n"
|
245 |
+
result_text += f" URL: {result.get('url', 'No URL')}\n"
|
246 |
+
result_text += f" {result.get('content', 'No content available')[:300]}...\n\n"
|
247 |
|
248 |
+
store_websearch_result(query, result_text)
|
249 |
+
return result_text.strip()
|
250 |
+
|
251 |
+
|
252 |
except Exception as e:
|
253 |
+
logger.error(f"Tavily Web search failed: {e}")
|
254 |
return ""
|
255 |
|
256 |
def is_greeting(query: str) -> bool:
|