kumrsanjeev commited on
Commit
d078aec
·
verified ·
1 Parent(s): 7531717

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +24 -74
src/streamlit_app.py CHANGED
@@ -1,102 +1,52 @@
1
  import streamlit as st
2
- import subprocess
3
  import sys
 
4
  import os
5
 
6
- # --- AUTO-INSTALLER (Error Fixer) ---
7
- def install(package):
8
- subprocess.check_call([sys.executable, "-m", "pip", "install", package])
 
 
 
9
 
 
10
  try:
11
  import google.generativeai as genai
12
  except ImportError:
13
- install('google-generativeai')
14
- import google.generativeai as genai
 
15
 
16
- # --- PAGE SETUP ---
17
  st.set_page_config(page_title="Nexus Flow AI Pro", page_icon="⚡", layout="wide")
18
 
19
- # Hide Faltu UI
20
- st.markdown("""
21
- <style>
22
- #MainMenu {visibility: hidden;}
23
- footer {visibility: hidden;}
24
- header {visibility: hidden;}
25
- </style>
26
- """, unsafe_allow_html=True)
27
-
28
- # --- API KEY CHECK ---
29
  if "GOOGLE_API_KEY" in st.secrets:
30
  genai.configure(api_key=st.secrets["GOOGLE_API_KEY"])
31
  else:
32
- st.error("⚠️ Sanjeev, Settings > Secrets mein GOOGLE_API_KEY missing hai!")
33
  st.stop()
34
 
35
- # --- BRAIN INSTRUCTIONS ---
36
- instruction = """
37
- You are Nexus Flow AI Pro, Sanjeev's expert digital partner.
38
- - REASONING: Think deep inside <thinking> tags.
39
- - IMAGES: Use [GENERATE_IMAGE: prompt] for visuals.
40
- - EXPERTISE: Video Editing (Punch Edit), Coding, and SAT prep.
41
- """
42
 
43
- # --- MODEL LOADING (With Backup) ---
44
- @st.cache_resource
45
- def load_model():
46
- try:
47
- return genai.GenerativeModel("gemini-1.5-flash", system_instruction=instruction)
48
- except:
49
- return genai.GenerativeModel("gemini-pro", system_instruction=instruction)
50
-
51
- model = load_model()
52
-
53
- # --- SESSION MEMORY ---
54
  if "messages" not in st.session_state:
55
  st.session_state.messages = []
56
- if "chat" not in st.session_state:
57
- st.session_state.chat = model.start_chat(history=[])
58
-
59
- # --- SIDEBAR ---
60
- with st.sidebar:
61
- st.title("Nexus Flow Pro 🤖")
62
- st.info("Status: Online & Connected")
63
- if st.button("🗑️ Clear Chat"):
64
- st.session_state.messages = []
65
- st.session_state.chat = model.start_chat(history=[])
66
- st.rerun()
67
 
68
- # --- CHAT INTERFACE ---
69
  for m in st.session_state.messages:
70
  with st.chat_message(m["role"]):
71
  st.markdown(m["content"])
72
- if m.get("image"): st.image(m["image"])
73
 
74
  if prompt := st.chat_input("Kaise help karu Sanjeev?"):
75
  st.session_state.messages.append({"role": "user", "content": prompt})
76
- with st.chat_message("user"): st.markdown(prompt)
77
-
 
78
  with st.chat_message("assistant"):
79
- with st.status("Nexus Flow is analyzing...", expanded=False):
80
- try:
81
- response = st.session_state.chat.send_message(prompt)
82
- full_res = response.text
83
-
84
- # Parsing Logic
85
- import urllib.parse
86
- img_url = None
87
- if "[GENERATE_IMAGE:" in full_res:
88
- import re
89
- raw_p = re.search(r'\[GENERATE_IMAGE:\s*(.*?)\]', full_res).group(1)
90
- img_url = f"https://image.pollinations.ai/prompt/{urllib.parse.quote(raw_p)}?width=1024&height=1024&nologo=true"
91
- final_ans = f"✅ Image created: **{raw_p}**"
92
- elif "<thinking>" in full_res:
93
- final_ans = full_res.split("</thinking>")[1].strip()
94
- else:
95
- final_ans = full_res
96
- except Exception as e:
97
- final_ans = f"Error: {e}"
98
-
99
- st.markdown(final_ans)
100
- if img_url: st.image(img_url)
101
- st.session_state.messages.append({"role": "assistant", "content": final_ans, "image": img_url})
102
 
 
1
  import streamlit as st
 
2
  import sys
3
+ import subprocess
4
  import os
5
 
6
+ # --- FORCE INSTALLER (The "Fixer") ---
7
+ def install_package(package):
8
+ try:
9
+ subprocess.check_call([sys.executable, "-m", "pip", "install", package])
10
+ except Exception as e:
11
+ st.error(f"Installation failed for {package}: {e}")
12
 
13
+ # Check if Gemini is missing, then install it
14
  try:
15
  import google.generativeai as genai
16
  except ImportError:
17
+ with st.spinner("🔧 Nexus Flow is self-repairing... Installing Gemini Library"):
18
+ install_package("google-generativeai")
19
+ import google.generativeai as genai
20
 
21
+ # --- PAGE CONFIG ---
22
  st.set_page_config(page_title="Nexus Flow AI Pro", page_icon="⚡", layout="wide")
23
 
24
+ # --- API KEY ---
 
 
 
 
 
 
 
 
 
25
  if "GOOGLE_API_KEY" in st.secrets:
26
  genai.configure(api_key=st.secrets["GOOGLE_API_KEY"])
27
  else:
28
+ st.error("⚠️ Sanjeev, please add GOOGLE_API_KEY in Settings > Secrets!")
29
  st.stop()
30
 
31
+ # --- THE BRAIN ---
32
+ instruction = "You are Nexus Flow AI Pro, Sanjeev's digital avatar. Expert in Video Editing (Punch Edit) and Coding."
33
+ model = genai.GenerativeModel("gemini-1.5-flash", system_instruction=instruction)
 
 
 
 
34
 
35
+ # --- SIMPLE CHAT ---
 
 
 
 
 
 
 
 
 
 
36
  if "messages" not in st.session_state:
37
  st.session_state.messages = []
 
 
 
 
 
 
 
 
 
 
 
38
 
 
39
  for m in st.session_state.messages:
40
  with st.chat_message(m["role"]):
41
  st.markdown(m["content"])
 
42
 
43
  if prompt := st.chat_input("Kaise help karu Sanjeev?"):
44
  st.session_state.messages.append({"role": "user", "content": prompt})
45
+ with st.chat_message("user"):
46
+ st.markdown(prompt)
47
+
48
  with st.chat_message("assistant"):
49
+ response = model.generate_content(prompt)
50
+ st.markdown(response.text)
51
+ st.session_state.messages.append({"role": "assistant", "content": response.text})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52