Sauten commited on
Commit
0798026
·
verified ·
1 Parent(s): 8a38f92

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -7
app.py CHANGED
@@ -36,7 +36,13 @@ model = OpenAIServerModel(
36
  # # #top_p = 1
37
 
38
 
39
-
 
 
 
 
 
 
40
 
41
 
42
  @tool
@@ -47,17 +53,45 @@ def simple_web_search(query: str, num_results: int = 5) -> str:
47
  num_results: Result count.
48
  """
49
  try:
50
- with DDGS() as ddgs:
 
 
 
 
 
 
 
 
 
 
 
 
51
  results = []
52
  for result in ddgs.text(query, max_results=num_results):
53
  results.append({
54
- 'title': result.get('title', ''),
55
- 'link': result.get('href', ''),
56
- 'snippet': result.get('body', '')
57
  })
58
- return json.dumps(results if results else {"error": "No results found"})
 
 
 
 
 
 
 
 
 
 
 
59
  except Exception as e:
60
- return json.dumps({"error": str(e)})
 
 
 
 
 
61
  #simple_web_search = simple_web_search()
62
 
63
  class BasicAgent:
 
36
  # # #top_p = 1
37
 
38
 
39
+ USER_AGENTS = [
40
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
41
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
42
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0",
43
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1",
44
+ "Mozilla/5.0 (Linux; Android 10; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.5790.136 Mobile Safari/537.36"
45
+ ]
46
 
47
 
48
  @tool
 
53
  num_results: Result count.
54
  """
55
  try:
56
+ # Validate inputs
57
+ if not query.strip():
58
+ return json.dumps({"error": "Empty query string"})
59
+
60
+ num_results = max(1, min(10, num_results)) # Limit to 1-10 results
61
+
62
+ # Random delay and User-Agent
63
+ delay = random.uniform(1.0, 3.0)
64
+ user_agent = random.choice(USER_AGENTS)
65
+ time.sleep(delay)
66
+
67
+ # Perform search
68
+ with DDGS(headers={"User-Agent": user_agent}) as ddgs:
69
  results = []
70
  for result in ddgs.text(query, max_results=num_results):
71
  results.append({
72
+ 'title': result.get('title', 'No title'),
73
+ 'link': result.get('href', '#'),
74
+ 'snippet': result.get('body', 'No description')
75
  })
76
+ if len(results) >= num_results:
77
+ break
78
+
79
+ if not results:
80
+ return json.dumps({
81
+ "error": "No results found",
82
+ "query": query,
83
+ "user_agent": user_agent
84
+ })
85
+
86
+ return json.dumps(results)
87
+
88
  except Exception as e:
89
+ return json.dumps({
90
+ "error": str(e),
91
+ "type": type(e).__name__,
92
+ "query": query,
93
+ "user_agent": user_agent if 'user_agent' in locals() else "Unknown"
94
+ })
95
  #simple_web_search = simple_web_search()
96
 
97
  class BasicAgent: