Spaces:
Sleeping
Sleeping
| import requests | |
| import os | |
| import gradio as gr | |
| from newspaper import Article | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain.schema import HumanMessage | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | |
| headers = { | |
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36' | |
| } | |
| def summarize (article_url): | |
| session = requests.Session() | |
| try: | |
| response = session.get(article_url, headers = headers, timeout = 10) | |
| if response.status_code == 200: | |
| article = Article(article_url) | |
| article.download() | |
| article.parse() | |
| # print(f'Title: {article.title}') | |
| # print(f'Content: {article.text}') | |
| else: | |
| print(f'Failed to retrieve article at url: {article_url}') | |
| except Exception as e: | |
| print(f'Error fectching article at url: {article_url}') | |
| article_title = article.title | |
| article_text = article.text | |
| template = """You are a very good assistant that summarizes online articles | |
| Here's the article you want to summarize | |
| ============ | |
| Title: {article_title} | |
| {article_text} | |
| ============ | |
| Write a summary of the previous article in a bulleted list. | |
| """ | |
| prompt = template.format(article_title = article_title, article_text = article_text) | |
| messages = [HumanMessage(content= prompt)] | |
| chat = ChatOpenAI(model_name = 'gpt-3.5-turbo', temperature=0) | |
| summary = chat(messages) | |
| return(summary.content) | |
| demo = gr.Interface( | |
| fn= summarize, | |
| inputs = ['text'], | |
| outputs = ['text'], | |
| article = 'The project takes in a url of an article or blog and returns a summary of it.' | |
| ) | |
| demo.launch() | |