sanjaystarc commited on
Commit
e863e76
·
verified ·
1 Parent(s): ca81c03

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -12
app.py CHANGED
@@ -3,18 +3,23 @@ import requests
3
  import streamlit as st
4
  import openai
5
 
6
- # Load API keys from Hugging Face 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 Secrets.")
 
 
12
  st.stop()
13
 
14
- # Set OpenAI API key
15
  openai.api_key = OPENAI_API_KEY
16
 
17
- # Fetch news from SerpAPI via REST
 
 
18
  def fetch_ai_news(query="latest AI news"):
19
  url = "https://serpapi.com/search.json"
20
  params = {
@@ -23,29 +28,31 @@ def fetch_ai_news(query="latest AI news"):
23
  "api_key": SERPAPI_API_KEY,
24
  "num": 5
25
  }
26
- resp = requests.get(url, params=params).json()
27
  news_list = [
28
- {
29
- "title": r.get("title",""),
30
- "snippet": r.get("snippet",""),
31
- "link": r.get("link","")
32
- }
33
- for r in resp.get("organic_results", [])
34
  ]
35
  return news_list
36
 
 
37
  # Summarize news using OpenAI 1.x API
 
38
  def summarize_news(news_items):
39
  combined_text = "\n\n".join([f"{n['title']} - {n['snippet']}" for n in news_items])
40
  prompt = f"Summarize the following latest AI news into 5 concise bullet points:\n\n{combined_text}"
41
 
42
- response = openai.ChatCompletion.create(
43
  model="gpt-4o-mini",
44
  messages=[{"role": "user", "content": prompt}],
45
  )
46
  return response.choices[0].message.content
47
 
 
48
  # Streamlit UI
 
 
 
49
  st.title("🧠 AI News Summarizer Agent")
50
  query = st.text_input("Enter topic", "latest AI news")
51
 
@@ -59,6 +66,7 @@ if st.button("Fetch & Summarize"):
59
  st.markdown(f"**{n['title']}**")
60
  st.markdown(n['snippet'])
61
  st.markdown(f"[Read more]({n['link']})\n---")
 
62
  st.subheader("🧩 AI Summary")
63
  summary = summarize_news(news)
64
  st.success(summary)
 
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 = {
 
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
 
 
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)