wt002 commited on
Commit
ad7890b
·
verified ·
1 Parent(s): b4eaa1c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +72 -14
app.py CHANGED
@@ -22,6 +22,9 @@ DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
22
 
23
  # --- Basic Agent Definition ---
24
 
 
 
 
25
  class BasicAgent:
26
  def __init__(self):
27
  print("BasicAgent initialized.")
@@ -29,30 +32,85 @@ class BasicAgent:
29
  def __call__(self, question: str) -> str:
30
  print(f"Agent received question: {question[:50]}...")
31
  answer = self.basic_search(question)
32
- print(f"Answer: {answer}")
33
  return answer
34
 
35
  def basic_search(self, query):
36
  try:
37
- # Get search results from DuckDuckGo
38
- results = ddg(query, max_results=3)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
- # Format the results
41
  if not results:
42
- return "No results found"
 
 
 
 
 
 
 
43
 
44
- formatted_results = []
45
- for i, result in enumerate(results, 1):
46
- formatted_results.append(
47
- f"{i}. {result['title']}\n"
48
- f" {result['link']}\n"
49
- f" {result['body']}"
50
- )
51
 
52
- return "\n\n".join(formatted_results)
53
 
 
 
54
  except Exception as e:
55
- return f"Search error: {str(e)}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
 
57
 
58
 
 
22
 
23
  # --- Basic Agent Definition ---
24
 
25
+ import requests
26
+ from bs4 import BeautifulSoup
27
+
28
  class BasicAgent:
29
  def __init__(self):
30
  print("BasicAgent initialized.")
 
32
  def __call__(self, question: str) -> str:
33
  print(f"Agent received question: {question[:50]}...")
34
  answer = self.basic_search(question)
35
+ print(f"Answer: {answer[:200]}...") # Truncate long answers
36
  return answer
37
 
38
  def basic_search(self, query):
39
  try:
40
+ # DuckDuckGo search URL
41
+ url = "https://html.duckduckgo.com/html/"
42
+
43
+ # Headers to mimic a browser request
44
+ headers = {
45
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0',
46
+ 'Accept': 'text/html,application/xhtml+xml',
47
+ 'Accept-Language': 'en-US,en;q=0.5',
48
+ }
49
+
50
+ # Search parameters
51
+ params = {
52
+ 'q': query,
53
+ 'kl': 'us-en'
54
+ }
55
+
56
+ # Make the POST request
57
+ response = requests.post(url, headers=headers, data=params)
58
+ response.raise_for_status() # Raise exception for bad status codes
59
+
60
+ # Parse the HTML response
61
+ soup = BeautifulSoup(response.text, 'html.parser')
62
+
63
+ # Find all search results
64
+ results = soup.find_all('div', class_='result')
65
 
 
66
  if not results:
67
+ return "No results found for your query."
68
+
69
+ # Prepare the answer with top 3 results
70
+ answer = "Here are the top search results:\n\n"
71
+ for i, result in enumerate(results[:3], 1): # Limit to 3 results
72
+ title = result.find('a', class_='result__a').get_text(strip=True)
73
+ link = result.find('a', class_='result__a')['href']
74
+ snippet = result.find('a', class_='result__snippet').get_text(strip=True) if result.find('a', class_='result__snippet') else "No description available"
75
 
76
+ answer += f"{i}. {title}\n URL: {link}\n Description: {snippet}\n\n"
 
 
 
 
 
 
77
 
78
+ return answer
79
 
80
+ except requests.exceptions.RequestException as e:
81
+ return f"Failed to complete the search request: {str(e)}"
82
  except Exception as e:
83
+ return f"An unexpected error occurred: {str(e)}"
84
+
85
+ # Example usage
86
+ if __name__ == "__main__":
87
+ agent = BasicAgent()
88
+
89
+ # Test queries
90
+ test_queries = [
91
+ "What is Python programming?",
92
+ "Latest Python version",
93
+ "How to learn machine learning"
94
+ ]
95
+
96
+ for query in test_queries:
97
+ print("\n" + "="*50)
98
+ print(f"Testing query: {query}")
99
+ result = agent(query)
100
+ print("\nSearch Result:")
101
+ print(result)
102
+
103
+ # Interactive mode
104
+ print("\n" + "="*50)
105
+ print("Interactive mode (type 'quit' to exit)")
106
+ while True:
107
+ user_query = input("\nEnter your search query: ")
108
+ if user_query.lower() == 'quit':
109
+ break
110
+ print("\n" + "="*50)
111
+ result = agent(user_query)
112
+ print("\nSearch Result:")
113
+ print(result)
114
 
115
 
116