rsrini7 commited on
Commit
efd4c34
·
1 Parent(s): 3b3664d

auto load api key from .env if set for the selected model

Browse files
Files changed (1) hide show
  1. app.py +30 -2
app.py CHANGED
@@ -6,6 +6,7 @@ import logging
6
  import os
7
  import pathlib
8
  import random
 
9
  import tempfile
10
  from typing import List, Union
11
 
@@ -32,6 +33,18 @@ load_dotenv()
32
  RUN_IN_OFFLINE_MODE = os.getenv('RUN_IN_OFFLINE_MODE', 'False').lower() == 'true'
33
 
34
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  @st.cache_data
36
  def _load_strings() -> dict:
37
  """
@@ -182,14 +195,29 @@ with st.sidebar:
182
  on_change=reset_api_key
183
  ).split(' ')[0]
184
 
185
- # The API key/access token
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  api_key_token = st.text_input(
187
  label=(
188
  '3: Paste your API key/access token:\n\n'
189
  '*Mandatory* for all providers.'
190
  ),
 
191
  type='password',
192
- key='api_key_input'
 
193
  )
194
 
195
  # Additional configs for Azure OpenAI
 
6
  import os
7
  import pathlib
8
  import random
9
+ import re
10
  import tempfile
11
  from typing import List, Union
12
 
 
33
  RUN_IN_OFFLINE_MODE = os.getenv('RUN_IN_OFFLINE_MODE', 'False').lower() == 'true'
34
 
35
 
36
+ # --- API Key Environment Variable Mapping ---
37
+ PROVIDER_ENV_KEYS = {
38
+ GlobalConfig.PROVIDER_OPENROUTER: "OPENROUTER_API_KEY",
39
+ GlobalConfig.PROVIDER_COHERE: "COHERE_API_KEY",
40
+ GlobalConfig.PROVIDER_HUGGING_FACE: "HUGGINGFACEHUB_API_TOKEN",
41
+ GlobalConfig.PROVIDER_GOOGLE_GEMINI: "GOOGLE_API_KEY",
42
+ GlobalConfig.PROVIDER_TOGETHER_AI: "TOGETHER_API_KEY",
43
+ GlobalConfig.PROVIDER_AZURE_OPENAI: "AZURE_OPENAI_API_KEY",
44
+ # Add more as needed
45
+ }
46
+
47
+
48
  @st.cache_data
49
  def _load_strings() -> dict:
50
  """
 
195
  on_change=reset_api_key
196
  ).split(' ')[0]
197
 
198
+ # --- Automatically fetch API key from .env if available ---
199
+ # Extract provider code from model string, e.g. '[or]...' -> 'or'
200
+ provider_match = re.match(r'\[(.*?)\]', llm_provider_to_use)
201
+ selected_provider = provider_match.group(1) if provider_match else llm_provider_to_use
202
+ env_key_name = PROVIDER_ENV_KEYS.get(selected_provider)
203
+ default_api_key = os.getenv(env_key_name, "") if env_key_name else ""
204
+
205
+ # --- Session state sync workaround for Streamlit widget key issues ---
206
+ # Only set st.session_state['api_key_input'] if not already set by user
207
+ if default_api_key and (
208
+ 'api_key_input' not in st.session_state or not st.session_state['api_key_input']
209
+ ):
210
+ st.session_state['api_key_input'] = default_api_key
211
+
212
  api_key_token = st.text_input(
213
  label=(
214
  '3: Paste your API key/access token:\n\n'
215
  '*Mandatory* for all providers.'
216
  ),
217
+ value=default_api_key,
218
  type='password',
219
+ key='api_key_input',
220
+ disabled=bool(default_api_key), # disable input if key is present
221
  )
222
 
223
  # Additional configs for Azure OpenAI