surabhic's picture
Update app.py
a51d3d1 verified
# app.py (Fast + Enhanced)
import gradio as gr
from duckduckgo_search import DDGS
from transformers import pipeline
import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
# Load faster summarizer
summarizer = pipeline("summarization", model="philschmid/bart-large-cnn-samsum")
# Web search
def search_web(query, num_results=3):
with DDGS() as ddgs:
results = [r for r in ddgs.text(query, max_results=num_results)]
return results
# Scrape and summarize
def fetch_summary(url):
try:
res = requests.get(url, timeout=5)
soup = BeautifulSoup(res.text, 'html.parser')
paragraphs = soup.find_all('p')
text = ' '.join([p.get_text() for p in paragraphs])
text = text.strip().replace('\n', ' ')[:1500] # Limit to 1500 characters
if len(text) < 100:
return None, None
summary = summarizer(text, max_length=100, min_length=30, do_sample=False)
return summary[0]['summary_text'], url
except:
return None, None
# Use-case generation
def generate_use_cases(insights, company, industry):
prompt = f"Based on these insights about {company} in the {industry} sector, list 3 practical AI use cases:\n\n{insights}"
summary = summarizer(prompt, max_length=120, min_length=40, do_sample=False)
return summary[0]['summary_text']
# Main pipeline
def process(company, industry):
query = f"{company} {industry} 2025 trends"
results = search_web(query, num_results=3)
# Parallel scrape/summarize
with ThreadPoolExecutor(max_workers=3) as executor:
summaries = list(executor.map(lambda r: fetch_summary(r['href']), results))
valid = [(s, u) for s, u in summaries if s and u]
all_summaries = '\n'.join([s for s, _ in valid])
references = '\n'.join([f"- [{u}]({u})" for _, u in valid])
use_cases = generate_use_cases(all_summaries, company, industry)
return all_summaries.strip(), use_cases.strip(), references.strip()
# Gradio UI
demo = gr.Interface(
fn=process,
inputs=[gr.Textbox(label="Company Name"), gr.Textbox(label="Industry")],
outputs=[
gr.Textbox(label="Summarized Insights"),
gr.Textbox(label="AI Use Cases"),
gr.Markdown(label="Reference Links")
],
title="⚡ AI Insight Generator (Fast & Free)",
description="Enter a company and industry to get real-time insights and AI business use cases—faster and without API keys!"
)
if __name__ == "__main__":
demo.launch()