Spaces:
Running
Running
import requests | |
from bs4 import BeautifulSoup | |
from fastapi import FastAPI#, Request | |
from fastapi.responses import StreamingResponse | |
from pydantic import BaseModel | |
import re | |
import replicate | |
class Item(BaseModel): | |
url: str | |
percentage: int | |
app = FastAPI() | |
def extract_article_content(url): | |
try: | |
response = requests.get(url) | |
soup = BeautifulSoup(response.text, 'html.parser') | |
results = soup.find_all(['h1', 'p']) | |
text = [result.text for result in results] | |
ARTICLE = ' '.join(text) | |
return ARTICLE | |
except Exception as e: | |
return "" | |
async def root(): | |
return {"status": "OK"} | |
async def root(item: Item): | |
try: | |
article = extract_article_content(item.url) | |
if len(article) == 0: | |
return {'summary': ""} | |
event_list = [] | |
for event in replicate.stream("snowflake/snowflake-arctic-instruct", input= { | |
"prompt": "summarize this following news article:" + article, | |
"temperature": 0.2}): | |
# Convert the event to a string and append it to the list | |
event_list.append(str(event)) | |
# After the event stream ends, process the collected events | |
output_variable = "".join(event_list) | |
return output_variable | |
except requests.RequestException as e: | |
return {"error": str(e), "status_code": 500} | |
async def root(item: Item): | |
try: | |
article = extract_article_content(item.url) | |
if len(article) == 0: | |
return {'summary': ""} | |
def event_generator(): | |
for event in replicate.stream("snowflake/snowflake-arctic-instruct", input={ | |
"prompt": "summarize this following news article:" + article, | |
"temperature": 0.2 | |
}): | |
# Yield the event as a string | |
yield str(event) | |
# Use StreamingResponse to stream the events | |
return StreamingResponse(event_generator()) | |
except requests.RequestException as e: | |
return {"error": str(e), "status_code": 500} | |
async def root(item: Item): | |
try: | |
article = extract_article_content(item.url) | |
if len(article) == 0: | |
return {'ERROR': "AHHHHHHHHH"} | |
return {"content":article} | |
except requests.RequestException as e: | |
return {"error": str(e), "status_code": 500} | |