LamiaYT commited on
Commit
f9069a2
·
1 Parent(s): 34dd2d1
Files changed (1) hide show
  1. app.py +23 -3
app.py CHANGED
@@ -19,10 +19,10 @@ DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
19
  @tool
20
  def smart_web_search(query: str) -> str:
21
  """Smart web search with Serper API and Wikipedia fallback.
22
-
23
  Args:
24
  query (str): The search query to execute
25
-
26
  Returns:
27
  str: Search results from Serper API or Wikipedia
28
  """
@@ -30,12 +30,32 @@ def smart_web_search(query: str) -> str:
30
  time.sleep(random.uniform(1, 3))
31
  serper_key = os.getenv("SERPER_API_KEY")
32
  if serper_key:
33
- # ... rest of your existing implementation ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  return get_detailed_wikipedia(query)
35
  except Exception as e:
36
  return f"Search error: {str(e)}"
37
 
38
 
 
39
  @tool
40
  def extract_youtube_details(url: str) -> str:
41
  """Extract details from YouTube videos."""
 
19
  @tool
20
  def smart_web_search(query: str) -> str:
21
  """Smart web search with Serper API and Wikipedia fallback.
22
+
23
  Args:
24
  query (str): The search query to execute
25
+
26
  Returns:
27
  str: Search results from Serper API or Wikipedia
28
  """
 
30
  time.sleep(random.uniform(1, 3))
31
  serper_key = os.getenv("SERPER_API_KEY")
32
  if serper_key:
33
+ url = "https://google.serper.dev/search"
34
+ payload = json.dumps({"q": query, "num": 5})
35
+ headers = {
36
+ 'X-API-KEY': serper_key,
37
+ 'Content-Type': 'application/json'
38
+ }
39
+ response = requests.post(url, headers=headers, data=payload, timeout=15)
40
+ if response.status_code == 200:
41
+ data = response.json()
42
+ results = []
43
+ if 'answerBox' in data:
44
+ results.append(f"ANSWER: {data['answerBox'].get('answer', '')}")
45
+ if 'knowledgeGraph' in data:
46
+ kg = data['knowledgeGraph']
47
+ results.append(f"INFO: {kg.get('title', '')} - {kg.get('description', '')}")
48
+ if 'organic' in data:
49
+ for item in data['organic'][:3]:
50
+ results.append(f"RESULT: {item.get('title', '')} - {item.get('snippet', '')}")
51
+ return "\n".join(results) if results else "No Serper results"
52
+ # If serper_key is not set or no results, fallback to Wikipedia
53
  return get_detailed_wikipedia(query)
54
  except Exception as e:
55
  return f"Search error: {str(e)}"
56
 
57
 
58
+
59
  @tool
60
  def extract_youtube_details(url: str) -> str:
61
  """Extract details from YouTube videos."""