sanjaystarc commited on
Commit
efbaf6a
·
verified ·
1 Parent(s): c3e1571

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -31
app.py CHANGED
@@ -3,57 +3,37 @@ import requests
3
  import streamlit as st
4
  import openai
5
 
6
- # -----------------------------
7
  # Load secrets
8
- # -----------------------------
9
  OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
10
  SERPAPI_API_KEY = os.environ.get("SERPAPI_API_KEY")
11
 
12
  if not OPENAI_API_KEY or not SERPAPI_API_KEY:
13
- st.error(
14
- "❌ Missing API keys! Add OPENAI_API_KEY and SERPAPI_API_KEY in Settings → Secrets."
15
- )
16
  st.stop()
17
 
18
  openai.api_key = OPENAI_API_KEY
19
 
20
- # -----------------------------
21
- # Fetch AI news using SerpAPI REST
22
- # -----------------------------
23
  def fetch_ai_news(query="latest AI news"):
24
  url = "https://serpapi.com/search.json"
25
- params = {
26
- "q": query,
27
- "engine": "google",
28
- "api_key": SERPAPI_API_KEY,
29
- "num": 5
30
- }
31
- response = requests.get(url, params=params).json()
32
- news_list = [
33
- {"title": r.get("title", ""), "snippet": r.get("snippet", ""), "link": r.get("link", "")}
34
- for r in response.get("organic_results", [])
35
- ]
36
- return news_list
37
 
38
- # -----------------------------
39
- # Summarize news using OpenAI 1.x API
40
- # -----------------------------
41
  def summarize_news(news_items):
42
  combined_text = "\n\n".join([f"{n['title']} - {n['snippet']}" for n in news_items])
43
  prompt = f"Summarize the following latest AI news into 5 concise bullet points:\n\n{combined_text}"
44
 
45
- response = openai.chat.completions.create(
46
  model="gpt-4o-mini",
47
  messages=[{"role": "user", "content": prompt}],
48
  )
49
- return response.choices[0].message.content
50
 
51
- # -----------------------------
52
  # Streamlit UI
53
- # -----------------------------
54
- st.set_page_config(page_title="AI News Summarizer", page_icon="🧠", layout="centered")
55
-
56
- st.title("🧠 AI News Summarizer Agent")
57
  query = st.text_input("Enter topic", "latest AI news")
58
 
59
  if st.button("Fetch & Summarize"):
@@ -66,7 +46,6 @@ if st.button("Fetch & Summarize"):
66
  st.markdown(f"**{n['title']}**")
67
  st.markdown(n['snippet'])
68
  st.markdown(f"[Read more]({n['link']})\n---")
69
-
70
  st.subheader("🧩 AI Summary")
71
  summary = summarize_news(news)
72
  st.success(summary)
 
3
  import streamlit as st
4
  import openai
5
 
 
6
  # Load secrets
 
7
  OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
8
  SERPAPI_API_KEY = os.environ.get("SERPAPI_API_KEY")
9
 
10
  if not OPENAI_API_KEY or not SERPAPI_API_KEY:
11
+ st.error("❌ Missing API keys! Add OPENAI_API_KEY and SERPAPI_API_KEY in Settings → Secrets.")
 
 
12
  st.stop()
13
 
14
  openai.api_key = OPENAI_API_KEY
15
 
16
+ # Fetch AI news from SerpAPI
 
 
17
  def fetch_ai_news(query="latest AI news"):
18
  url = "https://serpapi.com/search.json"
19
+ params = {"q": query, "engine": "google", "api_key": SERPAPI_API_KEY, "num": 5}
20
+ resp = requests.get(url, params=params).json()
21
+ return [{"title": r.get("title",""), "snippet": r.get("snippet",""), "link": r.get("link","")}
22
+ for r in resp.get("organic_results", [])]
 
 
 
 
 
 
 
 
23
 
24
+ # Summarize using old OpenAI API
 
 
25
  def summarize_news(news_items):
26
  combined_text = "\n\n".join([f"{n['title']} - {n['snippet']}" for n in news_items])
27
  prompt = f"Summarize the following latest AI news into 5 concise bullet points:\n\n{combined_text}"
28
 
29
+ response = openai.ChatCompletion.create(
30
  model="gpt-4o-mini",
31
  messages=[{"role": "user", "content": prompt}],
32
  )
33
+ return response.choices[0].message["content"]
34
 
 
35
  # Streamlit UI
36
+ st.title("🧠 AI News Summarizer")
 
 
 
37
  query = st.text_input("Enter topic", "latest AI news")
38
 
39
  if st.button("Fetch & Summarize"):
 
46
  st.markdown(f"**{n['title']}**")
47
  st.markdown(n['snippet'])
48
  st.markdown(f"[Read more]({n['link']})\n---")
 
49
  st.subheader("🧩 AI Summary")
50
  summary = summarize_news(news)
51
  st.success(summary)