larrysim commited on
Commit
9209303
Β·
verified Β·
1 Parent(s): 1fa6e70

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -23
app.py CHANGED
@@ -5,8 +5,9 @@ from google import genai
5
  st.set_page_config(page_title="Gemini API Tester", page_icon="⚑")
6
  st.title("⚑ Gemini API Tester")
7
 
8
- # ---------------- Session State ----------------
9
- state_defaults = {
 
10
  "api_key": None,
11
  "api_validated": False,
12
  "client": None,
@@ -15,7 +16,7 @@ state_defaults = {
15
  "messages": []
16
  }
17
 
18
- for k, v in state_defaults.items():
19
  if k not in st.session_state:
20
  st.session_state[k] = v
21
 
@@ -23,21 +24,22 @@ for k, v in state_defaults.items():
23
  with st.sidebar:
24
  st.header("πŸ” API Configuration")
25
 
26
- # ---------- NOT VALIDATED ----------
27
  if not st.session_state.api_validated:
28
- api_key_input = st.text_input(
29
  "Enter Google API Key",
30
- type="password"
 
31
  )
32
 
33
- validate = st.button("Validate API Key")
34
-
35
- if validate:
36
- if not api_key_input:
37
  st.warning("Please enter an API key.")
38
  else:
39
  try:
40
- client = genai.Client(api_key=api_key_input)
 
 
41
 
42
  models = [
43
  m.name for m in client.models.list()
@@ -47,34 +49,35 @@ with st.sidebar:
47
  if not models:
48
  st.error("API key valid, but no Gemini models available.")
49
  else:
50
- # Persist validated state
51
- st.session_state.api_key = api_key_input
52
  st.session_state.client = client
53
  st.session_state.models = models
54
  st.session_state.selected_model = models[0]
55
  st.session_state.api_validated = True
56
 
57
- st.success("API key validated successfully")
 
 
 
58
 
59
  except Exception as e:
60
  st.error("Invalid API key")
61
  st.caption(str(e))
62
 
63
- # ---------- VALIDATED ----------
64
  else:
65
  st.success("πŸ”’ API Key validated (hidden)")
66
 
67
- st.session_state.selected_model = st.selectbox(
68
  "Available Models",
69
  st.session_state.models,
70
- index=st.session_state.models.index(
71
- st.session_state.selected_model
72
- ) if st.session_state.selected_model in st.session_state.models else 0
73
  )
74
 
75
  if st.button("πŸ”„ Change API Key"):
76
- for k in ["api_key", "api_validated", "client", "models", "selected_model"]:
77
- st.session_state[k] = state_defaults[k]
78
 
79
  # ---------------- Chat History ----------------
80
  for msg in st.session_state.messages:
@@ -89,11 +92,13 @@ if prompt := st.chat_input("Ask something..."):
89
  st.stop()
90
 
91
  # User message
92
- st.session_state.messages.append({"role": "user", "content": prompt})
 
 
93
  with st.chat_message("user"):
94
  st.markdown(prompt)
95
 
96
- # Assistant
97
  with st.chat_message("assistant"):
98
  placeholder = st.empty()
99
  placeholder.markdown("Thinking...")
 
5
  st.set_page_config(page_title="Gemini API Tester", page_icon="⚑")
6
  st.title("⚑ Gemini API Tester")
7
 
8
+ # ---------------- Session State Defaults ----------------
9
+ defaults = {
10
+ "api_key_input": "",
11
  "api_key": None,
12
  "api_validated": False,
13
  "client": None,
 
16
  "messages": []
17
  }
18
 
19
+ for k, v in defaults.items():
20
  if k not in st.session_state:
21
  st.session_state[k] = v
22
 
 
24
  with st.sidebar:
25
  st.header("πŸ” API Configuration")
26
 
27
+ # -------- BEFORE VALIDATION --------
28
  if not st.session_state.api_validated:
29
+ st.text_input(
30
  "Enter Google API Key",
31
+ type="password",
32
+ key="api_key_input"
33
  )
34
 
35
+ if st.button("Validate API Key"):
36
+ if not st.session_state.api_key_input:
 
 
37
  st.warning("Please enter an API key.")
38
  else:
39
  try:
40
+ client = genai.Client(
41
+ api_key=st.session_state.api_key_input
42
+ )
43
 
44
  models = [
45
  m.name for m in client.models.list()
 
49
  if not models:
50
  st.error("API key valid, but no Gemini models available.")
51
  else:
52
+ # βœ… Persist validated state
53
+ st.session_state.api_key = st.session_state.api_key_input
54
  st.session_state.client = client
55
  st.session_state.models = models
56
  st.session_state.selected_model = models[0]
57
  st.session_state.api_validated = True
58
 
59
+ # πŸ”’ Clear visible input immediately
60
+ st.session_state.api_key_input = ""
61
+
62
+ st.success("API key validated")
63
 
64
  except Exception as e:
65
  st.error("Invalid API key")
66
  st.caption(str(e))
67
 
68
+ # -------- AFTER VALIDATION --------
69
  else:
70
  st.success("πŸ”’ API Key validated (hidden)")
71
 
72
+ st.selectbox(
73
  "Available Models",
74
  st.session_state.models,
75
+ key="selected_model"
 
 
76
  )
77
 
78
  if st.button("πŸ”„ Change API Key"):
79
+ for k in defaults:
80
+ st.session_state[k] = defaults[k]
81
 
82
  # ---------------- Chat History ----------------
83
  for msg in st.session_state.messages:
 
92
  st.stop()
93
 
94
  # User message
95
+ st.session_state.messages.append(
96
+ {"role": "user", "content": prompt}
97
+ )
98
  with st.chat_message("user"):
99
  st.markdown(prompt)
100
 
101
+ # Assistant response
102
  with st.chat_message("assistant"):
103
  placeholder = st.empty()
104
  placeholder.markdown("Thinking...")