LamiaYT commited on
Commit
fcf479d
·
1 Parent(s): 15b5735
Files changed (1) hide show
  1. app.py +22 -21
app.py CHANGED
@@ -34,36 +34,37 @@ def serper_search(query: str) -> str:
34
  return "Serper key missing, please set SERPER_API_KEY."
35
 
36
  # --- Other Tools (unchanged) ---
 
 
 
37
  @tool
38
  def serper_search(query: str) -> str:
39
  """
40
- Search the web using the Serper API to find current factual information.
41
 
42
  Args:
43
- query (str): The search query string.
44
 
45
  Returns:
46
- str: A formatted string of top search results, or an error message.
47
  """
48
  api_key = os.getenv("SERPER_API_KEY")
49
- if api_key:
50
- try:
51
- url = "https://google.serper.dev/search"
52
- payload = {"q": query, "num": 10}
53
- headers = {'X-API-KEY': api_key}
54
- r = requests.post(url, headers=headers, json=payload, timeout=15)
55
- r.raise_for_status()
56
- data = r.json()
57
- snippets = []
58
- if kg := data.get("knowledgeGraph"):
59
- snippets.append(f"{kg.get('title')}: {kg.get('description')}")
60
- for item in data.get("organic", [])[:5]:
61
- snippets.append(f"{item.get('title')}\n{item.get('snippet')}\n{item.get('link')}")
62
- return "\n\n".join(snippets) if snippets else "No results."
63
- except Exception as e:
64
- return f"Serper error: {e}"
65
- else:
66
- return "Serper key missing, please set SERPER_API_KEY."
67
 
68
 
69
  @tool
 
34
  return "Serper key missing, please set SERPER_API_KEY."
35
 
36
  # --- Other Tools (unchanged) ---
37
+ from smolagents.tools import tool
38
+ import os, requests
39
+
40
  @tool
41
  def serper_search(query: str) -> str:
42
  """
43
+ Performs a Google search using the Serper API.
44
 
45
  Args:
46
+ query (str): The search query to look up.
47
 
48
  Returns:
49
+ str: A formatted string with search results or an error message.
50
  """
51
  api_key = os.getenv("SERPER_API_KEY")
52
+ if not api_key:
53
+ return "Serper API key is missing."
54
+
55
+ try:
56
+ url = "https://google.serper.dev/search"
57
+ headers = {'X-API-KEY': api_key}
58
+ payload = {"q": query, "num": 5}
59
+ response = requests.post(url, headers=headers, json=payload, timeout=10)
60
+ data = response.json()
61
+ results = []
62
+ for item in data.get("organic", []):
63
+ results.append(f"{item.get('title')}\n{item.get('snippet')}\n{item.get('link')}")
64
+ return "\n\n".join(results) if results else "No results found."
65
+ except Exception as e:
66
+ return f"Error during search: {e}"
67
+
 
 
68
 
69
 
70
  @tool