sanjaystarc's picture
Update app.py
efbaf6a verified
import os
import requests
import streamlit as st
import openai
# Load secrets
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
SERPAPI_API_KEY = os.environ.get("SERPAPI_API_KEY")
if not OPENAI_API_KEY or not SERPAPI_API_KEY:
st.error("❌ Missing API keys! Add OPENAI_API_KEY and SERPAPI_API_KEY in Settings → Secrets.")
st.stop()
openai.api_key = OPENAI_API_KEY
# Fetch AI news from SerpAPI
def fetch_ai_news(query="latest AI news"):
url = "https://serpapi.com/search.json"
params = {"q": query, "engine": "google", "api_key": SERPAPI_API_KEY, "num": 5}
resp = requests.get(url, params=params).json()
return [{"title": r.get("title",""), "snippet": r.get("snippet",""), "link": r.get("link","")}
for r in resp.get("organic_results", [])]
# Summarize using old OpenAI API
def summarize_news(news_items):
combined_text = "\n\n".join([f"{n['title']} - {n['snippet']}" for n in news_items])
prompt = f"Summarize the following latest AI news into 5 concise bullet points:\n\n{combined_text}"
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
)
return response.choices[0].message["content"]
# Streamlit UI
st.title("🧠 AI News Summarizer")
query = st.text_input("Enter topic", "latest AI news")
if st.button("Fetch & Summarize"):
news = fetch_ai_news(query)
if not news:
st.warning("No news found")
else:
st.subheader("📰 Top Results")
for n in news:
st.markdown(f"**{n['title']}**")
st.markdown(n['snippet'])
st.markdown(f"[Read more]({n['link']})\n---")
st.subheader("🧩 AI Summary")
summary = summarize_news(news)
st.success(summary)