Spaces:
Running
Running
auto load api key from .env if set for the selected model
Browse files
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 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|