from newspaper import Article from newspaper import Config import gradio as gr import os import openai openai.api_key = os.getenv('api_token') def extract_article_text(url): USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0' config = Config() config.browser_user_agent = USER_AGENT config.request_timeout = 10 article = Article(url, config=config) article.download() article.parse() text = article.text return text def get_completion(prompt, model="gpt-3.5-turbo"): messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=0.5, # this is the degree of randomness of the model's output ) return response.choices[0].message["content"] def prompt_summary(url,movie): text = extract_article_text(url) text = text[:4096] prompt_sum = f""" Summarize the text {text} as if a 8-year old kid understands. The summary should be atmost 200 words and should help the kid understand how the summary could help him solve a real-world problem. Here is the format: 1.Importance of the article: 2.Real world scenario: 3.Key takeaway: """ prompt_mov = f""" Convert the technical article {text} into a short story involving the characters from the movie {movie}. The story should not exceed 200 words and should be written in a way that captures the essence of the article while also making it engaging and entertaining. """ prompt_topic = f""" Extract 5 key topics from the text {text}. The topics should clearly tell the user why it is important to read the article. Length of the topic should be limited to a single word """ response_top = get_completion(prompt_topic) response_mov = get_completion(prompt_mov) response_sum = get_completion(prompt_sum) return response_top, response_sum, response_mov inputs = [ gr.inputs.Textbox(label="Article URL"), gr.inputs.Textbox(label="Which is your favorite movie?") ] outputs = [ gr.outputs.Textbox(label="Key topics"), gr.outputs.Textbox(label="Summary without jargon"), gr.outputs.Textbox(label="Summary as movie synopsis") ] gr.Interface(prompt_summary, inputs, outputs, title="Article Cortex", description="Helps you understand any technical article as if it were a movie synopsis.").launch(debug=True)