wt002 commited on
Commit
9655e8f
·
verified ·
1 Parent(s): c757bcf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -47
app.py CHANGED
@@ -29,9 +29,11 @@ class BasicAgent:
29
  def __call__(self, question: str) -> str:
30
  print(f"Agent received question (first 50 chars): {question[:50]}...")
31
  fixed_answer = self.process_request(question)
32
- print(f"Agent returning answer: {fixed_answer}")
33
  return fixed_answer
34
 
 
 
35
 
36
  class SearchAgent(BasicAgent):
37
  def __init__(self):
@@ -39,18 +41,23 @@ class SearchAgent(BasicAgent):
39
  print("SearchAgent specialized initialization.")
40
 
41
  def process_request(self, query: str) -> str:
42
- """Returns mock search results in JSON format"""
43
- # Generate 3 mock results with increasing relevance
44
- mock_results = [
45
- {
46
- "url": f"https://www.goole.com/search?q={query.replace(' ', '+')}&result={i}",
47
- "title": f"Example Result {i} for '{query[:15]}...'",
48
- "snippet": f"This is a mock search result snippet about {query[:15]}... showing result number {i}.",
49
- "relevance": i/3 # Score from 0.33 to 1.0
50
- }
51
- for i in range(1, 4)
52
- ]
53
-
 
 
 
 
 
54
  class BrowserAgent(BasicAgent):
55
  def __init__(self):
56
  super().__init__()
@@ -70,9 +77,17 @@ class BrowserAgent(BasicAgent):
70
  'timestamp': datetime.now()
71
  }
72
  self.history.append(self.current_page)
73
- return f"Successfully retrieved page: {url}"
 
 
 
 
74
  except Exception as e:
75
- return f"Error visiting {url}: {str(e)}"
 
 
 
 
76
 
77
  class ContentExtractorAgent(BasicAgent):
78
  def __init__(self):
@@ -94,7 +109,7 @@ class ContentExtractorAgent(BasicAgent):
94
  'text': main_content.get_text(separator='\n', strip=True),
95
  'links': [a['href'] for a in main_content.find_all('a', href=True)]
96
  }
97
- return str(extracted)
98
 
99
  class WebNavigator(BasicAgent):
100
  def __init__(self):
@@ -114,40 +129,58 @@ class WebNavigator(BasicAgent):
114
  return self.search_and_extract(question)
115
 
116
  def search_and_extract(self, query: str) -> str:
117
- search_results = eval(self.search_agent(query)) # Convert string output back to list
118
- extracted_data = []
119
-
120
- for result in search_results:
121
- visit_result = self.browser_agent(result['url'])
122
- if "Successfully" in visit_result:
123
- html = eval(self.browser_agent.current_page['content']) # Get stored HTML
124
- content = self.extractor_agent(html)
125
- extracted_data.append({
126
- 'query': query,
127
- 'url': result['url'],
128
- 'content': eval(content) # Convert string output back to dict
129
- })
130
-
131
- self.search_history.append({
132
- 'query': query,
133
- 'timestamp': datetime.now(),
134
- 'results': extracted_data
135
- })
136
-
137
- return str(extracted_data)
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
  def get_page_summary(self, url: str) -> str:
140
- visit_result = self.browser_agent(url)
141
- if "Successfully" in visit_result:
142
- html = eval(self.browser_agent.current_page['content'])
143
- content = eval(self.extractor_agent(html))
144
- return str({
145
- 'url': url,
146
- 'title': content['title'],
147
- 'summary': ' '.join(content['text'].split()[:100]) + '...'
 
 
 
 
 
 
 
 
148
  })
149
- return visit_result # Return the error message
150
-
151
 
152
 
153
 
 
29
  def __call__(self, question: str) -> str:
30
  print(f"Agent received question (first 50 chars): {question[:50]}...")
31
  fixed_answer = self.process_request(question)
32
+ print(f"Agent returning answer: {fixed_answer[:100]}...") # Truncate long output
33
  return fixed_answer
34
 
35
+ def process_request(self, question: str) -> str:
36
+ return "This is a default answer."
37
 
38
  class SearchAgent(BasicAgent):
39
  def __init__(self):
 
41
  print("SearchAgent specialized initialization.")
42
 
43
  def process_request(self, query: str) -> str:
44
+ """Returns mock search results in JSON format"""
45
+ mock_results = [
46
+ {
47
+ "url": f"https://www.google.com/search?q={query.replace(' ', '+')}&result={i}",
48
+ "title": f"Example Result {i} for '{query[:15]}...'",
49
+ "snippet": f"This is a mock search result snippet about {query[:15]}... showing result number {i}.",
50
+ "relevance": i/3 # Score from 0.33 to 1.0
51
+ }
52
+ for i in range(1, 4)
53
+ ]
54
+ return json.dumps({
55
+ "query": query,
56
+ "results": mock_results,
57
+ "count": len(mock_results),
58
+ "status": "success"
59
+ })
60
+
61
  class BrowserAgent(BasicAgent):
62
  def __init__(self):
63
  super().__init__()
 
77
  'timestamp': datetime.now()
78
  }
79
  self.history.append(self.current_page)
80
+ return json.dumps({
81
+ "status": "success",
82
+ "url": url,
83
+ "message": f"Successfully retrieved page: {url}"
84
+ })
85
  except Exception as e:
86
+ return json.dumps({
87
+ "status": "error",
88
+ "url": url,
89
+ "message": f"Error visiting {url}: {str(e)}"
90
+ })
91
 
92
  class ContentExtractorAgent(BasicAgent):
93
  def __init__(self):
 
109
  'text': main_content.get_text(separator='\n', strip=True),
110
  'links': [a['href'] for a in main_content.find_all('a', href=True)]
111
  }
112
+ return json.dumps(extracted)
113
 
114
  class WebNavigator(BasicAgent):
115
  def __init__(self):
 
129
  return self.search_and_extract(question)
130
 
131
  def search_and_extract(self, query: str) -> str:
132
+ try:
133
+ search_results = json.loads(self.search_agent(query))
134
+ if search_results['status'] != 'success':
135
+ return json.dumps({"error": "Search failed", "details": search_results})
136
+
137
+ extracted_data = []
138
+ for result in search_results['results']:
139
+ visit_result = json.loads(self.browser_agent(result['url']))
140
+
141
+ if visit_result['status'] == 'success':
142
+ content = json.loads(self.extractor_agent(self.browser_agent.current_page['content']))
143
+ extracted_data.append({
144
+ 'query': query,
145
+ 'url': result['url'],
146
+ 'content': content
147
+ })
148
+
149
+ self.search_history.append({
150
+ 'query': query,
151
+ 'timestamp': datetime.now().isoformat(),
152
+ 'results': extracted_data
153
+ })
154
+
155
+ return json.dumps({
156
+ "status": "success",
157
+ "query": query,
158
+ "results": extracted_data
159
+ })
160
+ except Exception as e:
161
+ return json.dumps({
162
+ "status": "error",
163
+ "message": str(e)
164
+ })
165
 
166
  def get_page_summary(self, url: str) -> str:
167
+ try:
168
+ visit_result = json.loads(self.browser_agent(url))
169
+ if visit_result['status'] != 'success':
170
+ return json.dumps(visit_result)
171
+
172
+ content = json.loads(self.extractor_agent(self.browser_agent.current_page['content']))
173
+ return json.dumps({
174
+ "status": "success",
175
+ "url": url,
176
+ "title": content['title'],
177
+ "summary": ' '.join(content['text'].split()[:100]) + '...'
178
+ })
179
+ except Exception as e:
180
+ return json.dumps({
181
+ "status": "error",
182
+ "message": str(e)
183
  })
 
 
184
 
185
 
186