Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -49,20 +49,32 @@ class RaindropSearchBot:
|
|
49 |
self.max_delay = 15 # Increased maximum delay
|
50 |
self.ua = UserAgent()
|
51 |
self.setup_proxies()
|
52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
def get_alternative_search_results(self, query: str) -> List[Dict]:
|
54 |
"""Implement alternative search engine if Google fails"""
|
55 |
-
# Example using DuckDuckGo (you'll need to install duckduckgo-search)
|
56 |
try:
|
57 |
-
from duckduckgo_search import
|
58 |
|
59 |
self.random_delay()
|
60 |
-
|
|
|
61 |
|
62 |
return [{
|
63 |
-
'title': result
|
64 |
-
'link': result
|
65 |
-
'snippet': result
|
66 |
} for result in results]
|
67 |
|
68 |
except Exception as e:
|
@@ -515,15 +527,7 @@ class RaindropSearchBot:
|
|
515 |
return output
|
516 |
|
517 |
def process_request(self, user_request: str) -> str:
|
518 |
-
"""
|
519 |
-
Process user request with improved error handling and query generation.
|
520 |
-
|
521 |
-
Args:
|
522 |
-
user_request (str): The user's original search request
|
523 |
-
|
524 |
-
Returns:
|
525 |
-
str: Formatted results and analysis
|
526 |
-
"""
|
527 |
try:
|
528 |
# Generate optimized search query
|
529 |
search_query = self.generate_search_queries(user_request)
|
@@ -538,8 +542,13 @@ class RaindropSearchBot:
|
|
538 |
# Get news results
|
539 |
news_results = self.get_news_results(search_query)
|
540 |
|
541 |
-
# Process all results
|
542 |
-
processed_results = self.process_all_results(
|
|
|
|
|
|
|
|
|
|
|
543 |
|
544 |
# Generate response
|
545 |
essay = self.generate_essay_response(processed_results, user_request)
|
@@ -593,7 +602,7 @@ class RaindropSearchBot:
|
|
593 |
"""
|
594 |
|
595 |
response = self.client.chat.completions.create(
|
596 |
-
model="gpt-
|
597 |
messages=[{"role": "user", "content": prompt}],
|
598 |
temperature=0.3,
|
599 |
max_tokens=100
|
|
|
49 |
self.max_delay = 15 # Increased maximum delay
|
50 |
self.ua = UserAgent()
|
51 |
self.setup_proxies()
|
52 |
+
|
53 |
+
def get_next_proxy(self) -> dict:
|
54 |
+
"""Get next proxy from the rotation"""
|
55 |
+
try:
|
56 |
+
proxy = next(self.proxy_cycle)
|
57 |
+
return {
|
58 |
+
'http': proxy,
|
59 |
+
'https': proxy
|
60 |
+
}
|
61 |
+
except StopIteration:
|
62 |
+
logger.warning("No proxies available, returning empty proxy dict")
|
63 |
+
return {}
|
64 |
+
|
65 |
def get_alternative_search_results(self, query: str) -> List[Dict]:
|
66 |
"""Implement alternative search engine if Google fails"""
|
|
|
67 |
try:
|
68 |
+
from duckduckgo_search import DDGS
|
69 |
|
70 |
self.random_delay()
|
71 |
+
with DDGS() as ddgs:
|
72 |
+
results = list(ddgs.text(query, max_results=5))
|
73 |
|
74 |
return [{
|
75 |
+
'title': result.get('title', ''),
|
76 |
+
'link': result.get('link', ''),
|
77 |
+
'snippet': result.get('body', '')
|
78 |
} for result in results]
|
79 |
|
80 |
except Exception as e:
|
|
|
527 |
return output
|
528 |
|
529 |
def process_request(self, user_request: str) -> str:
|
530 |
+
"""Process user request with improved error handling and query generation."""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
531 |
try:
|
532 |
# Generate optimized search query
|
533 |
search_query = self.generate_search_queries(user_request)
|
|
|
542 |
# Get news results
|
543 |
news_results = self.get_news_results(search_query)
|
544 |
|
545 |
+
# Process all results - Fix: Pass the user_request as first argument
|
546 |
+
processed_results = self.process_all_results(
|
547 |
+
request=user_request,
|
548 |
+
raindrop_results=[], # Empty list for raindrop results
|
549 |
+
google_results=google_results,
|
550 |
+
news_results=news_results
|
551 |
+
)
|
552 |
|
553 |
# Generate response
|
554 |
essay = self.generate_essay_response(processed_results, user_request)
|
|
|
602 |
"""
|
603 |
|
604 |
response = self.client.chat.completions.create(
|
605 |
+
model="gpt-4o-mini",
|
606 |
messages=[{"role": "user", "content": prompt}],
|
607 |
temperature=0.3,
|
608 |
max_tokens=100
|