import gradio as gr import requests from bs4 import BeautifulSoup import openai import os openai.api_key = os.getenv("OPENAI_API_KEY") def fetch_text_from_url(url): try: response = requests.get(url, timeout=10) soup = BeautifulSoup(response.text, 'html.parser') paragraphs = soup.find_all('p') content = ' '.join([p.get_text() for p in paragraphs]) return content[:4000] # trim for token limits except Exception as e: return f"Error fetching content: {str(e)}" def summarize_with_takeaways(content): prompt = f""" You are a helpful AI agent. Summarize the article and extract 3–5 key takeaways. Article: \"\"\" {content} \"\"\" Return in this format: Summary: Key Takeaways: - ... - ... - ... """ response = openai.ChatCompletion.create( model="gpt-4o", messages=[{"role": "user", "content": prompt}] ) return response.choices[0].message.content.strip() def summarize_url(url): content = fetch_text_from_url(url) if content.startswith("Error"): return content return summarize_with_takeaways(content) demo = gr.Interface( fn=summarize_url, inputs=gr.Textbox(label="Enter Weblink (URL)"), outputs=gr.Textbox(label="Summary & Takeaways"), title="🌐 Learning Agent: Weblink Summarizer", description="Get a concise summary + key takeaways from any article." ) demo.launch()