Update app.py
Browse files
app.py
CHANGED
@@ -216,6 +216,34 @@ async def website_summarizer(url: str):
|
|
216 |
raise HTTPException(status_code=500, detail=f"Error fetching or processing URL: {e}")
|
217 |
except Exception as e:
|
218 |
raise HTTPException(status_code=500, detail=f"Error during summarization: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
|
220 |
@app.get("/api/maps")
|
221 |
async def maps(
|
|
|
216 |
raise HTTPException(status_code=500, detail=f"Error fetching or processing URL: {e}")
|
217 |
except Exception as e:
|
218 |
raise HTTPException(status_code=500, detail=f"Error during summarization: {e}")
|
219 |
+
|
220 |
+
@app.get("/api/ask_website")
|
221 |
+
async def ask_website(url: str, question: str):
|
222 |
+
"""
|
223 |
+
Asks a question about the content of a given website.
|
224 |
+
"""
|
225 |
+
try:
|
226 |
+
# Extract text from the given URL
|
227 |
+
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0"})
|
228 |
+
response.raise_for_status()
|
229 |
+
visible_text = extract_text_from_webpage(response.text)
|
230 |
+
if len(visible_text) > 7500: # Adjust max_chars based on your needs
|
231 |
+
visible_text = visible_text[:7500] + "..."
|
232 |
+
|
233 |
+
# Construct a prompt for the chat model
|
234 |
+
prompt = f"Based on the following text, answer this question in Detail: [QUESTION] {question}\n\n[TEXT] {visible_text}"
|
235 |
+
|
236 |
+
# Use chat model to get the answer
|
237 |
+
with WEBS() as webs:
|
238 |
+
answer_result = webs.chat(keywords=prompt, model="gpt-3.5")
|
239 |
+
|
240 |
+
# Return the answer result
|
241 |
+
return JSONResponse(content=jsonable_encoder({answer_result}))
|
242 |
+
|
243 |
+
except requests.exceptions.RequestException as e:
|
244 |
+
raise HTTPException(status_code=500, detail=f"Error fetching or processing URL: {e}")
|
245 |
+
except Exception as e:
|
246 |
+
raise HTTPException(status_code=500, detail=f"Error during question answering: {e}")
|
247 |
|
248 |
@app.get("/api/maps")
|
249 |
async def maps(
|