rsrini7 commited on
Commit
b4ec8f7
·
1 Parent(s): 280981c

refactor: move provider env keys to GlobalConfig and optimize imports

Browse files

Move PROVIDER_ENV_KEYS from app.py to GlobalConfig for better organization and maintainability. Also, optimize imports in llm_helper.py by removing unused imports and relocating the ChatOpenAI import to where it is needed.

Files changed (3) hide show
  1. app.py +4 -16
  2. global_config.py +21 -12
  3. helpers/llm_helper.py +5 -4
app.py CHANGED
@@ -26,24 +26,11 @@ import helpers.file_manager as filem
26
  from global_config import GlobalConfig
27
  from helpers import llm_helper, pptx_helper, text_helper
28
 
29
-
30
  load_dotenv()
31
 
32
-
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:
@@ -196,9 +183,9 @@ with st.sidebar:
196
  ).split(' ')[0]
197
 
198
  # --- Automatically fetch API key from .env if available ---
199
- provider_match = re.match(r'\[(.*?)\]', llm_provider_to_use)
200
  selected_provider = provider_match.group(1) if provider_match else llm_provider_to_use
201
- env_key_name = PROVIDER_ENV_KEYS.get(selected_provider)
202
  default_api_key = os.getenv(env_key_name, "") if env_key_name else ""
203
 
204
  # Always sync session state to env value if needed (auto-fill on provider change)
@@ -608,3 +595,4 @@ def main():
608
 
609
  if __name__ == '__main__':
610
  main()
 
 
26
  from global_config import GlobalConfig
27
  from helpers import llm_helper, pptx_helper, text_helper
28
 
 
29
  load_dotenv()
30
 
 
31
  RUN_IN_OFFLINE_MODE = os.getenv('RUN_IN_OFFLINE_MODE', 'False').lower() == 'true'
32
 
33
+ PROVIDER_REGEX = re.compile(r'\[(.*?)\]')
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  @st.cache_data
36
  def _load_strings() -> dict:
 
183
  ).split(' ')[0]
184
 
185
  # --- Automatically fetch API key from .env if available ---
186
+ provider_match = PROVIDER_REGEX.match(llm_provider_to_use)
187
  selected_provider = provider_match.group(1) if provider_match else llm_provider_to_use
188
+ env_key_name = GlobalConfig.PROVIDER_ENV_KEYS.get(selected_provider)
189
  default_api_key = os.getenv(env_key_name, "") if env_key_name else ""
190
 
191
  # Always sync session state to env value if needed (auto-fill on provider change)
 
595
 
596
  if __name__ == '__main__':
597
  main()
598
+
global_config.py CHANGED
@@ -20,10 +20,10 @@ class GlobalConfig:
20
  PROVIDER_COHERE = 'co'
21
  PROVIDER_GOOGLE_GEMINI = 'gg'
22
  PROVIDER_HUGGING_FACE = 'hf'
23
- PROVIDER_OLLAMA = 'ol'
24
- PROVIDER_TOGETHER_AI = 'to'
25
  PROVIDER_AZURE_OPENAI = 'az'
 
26
  PROVIDER_OPENROUTER = 'or'
 
27
  VALID_PROVIDERS = {
28
  PROVIDER_COHERE,
29
  PROVIDER_GOOGLE_GEMINI,
@@ -33,6 +33,14 @@ class GlobalConfig:
33
  PROVIDER_AZURE_OPENAI,
34
  PROVIDER_OPENROUTER,
35
  }
 
 
 
 
 
 
 
 
36
  VALID_MODELS = {
37
  '[az]azure/open-ai': {
38
  'description': 'faster, detailed',
@@ -64,6 +72,16 @@ class GlobalConfig:
64
  'max_new_tokens': 8192,
65
  'paid': False,
66
  },
 
 
 
 
 
 
 
 
 
 
67
  '[to]meta-llama/Llama-3.3-70B-Instruct-Turbo': {
68
  'description': 'detailed, slower',
69
  'max_new_tokens': 4096,
@@ -73,15 +91,6 @@ class GlobalConfig:
73
  'description': 'shorter, faster',
74
  'max_new_tokens': 4096,
75
  'paid': True,
76
- },
77
- '[or]openai/gpt-3.5-turbo': {
78
- 'description': 'OpenAI GPT-3.5 Turbo (via OpenRouter)',
79
- 'max_new_tokens': 2048,
80
- },
81
- '[or]openrouter/gpt-4-omni': {
82
- 'description': 'OpenRouter GPT-4 Omni',
83
- 'max_new_tokens': 8192,
84
- 'paid': True,
85
  }
86
  }
87
  LLM_PROVIDER_HELP = (
@@ -90,8 +99,8 @@ class GlobalConfig:
90
  '- **[co]**: Cohere\n'
91
  '- **[gg]**: Google Gemini API\n'
92
  '- **[hf]**: Hugging Face Inference API\n'
93
- '- **[to]**: Together AI\n'
94
  '- **[or]**: OpenRouter\n\n'
 
95
  '[Find out more](https://github.com/barun-saha/slide-deck-ai?tab=readme-ov-file#summary-of-the-llms)'
96
  )
97
  DEFAULT_MODEL_INDEX = int(os.environ.get('DEFAULT_MODEL_INDEX', '4'))
 
20
  PROVIDER_COHERE = 'co'
21
  PROVIDER_GOOGLE_GEMINI = 'gg'
22
  PROVIDER_HUGGING_FACE = 'hf'
 
 
23
  PROVIDER_AZURE_OPENAI = 'az'
24
+ PROVIDER_OLLAMA = 'ol'
25
  PROVIDER_OPENROUTER = 'or'
26
+ PROVIDER_TOGETHER_AI = 'to'
27
  VALID_PROVIDERS = {
28
  PROVIDER_COHERE,
29
  PROVIDER_GOOGLE_GEMINI,
 
33
  PROVIDER_AZURE_OPENAI,
34
  PROVIDER_OPENROUTER,
35
  }
36
+ PROVIDER_ENV_KEYS = {
37
+ PROVIDER_COHERE: "COHERE_API_KEY",
38
+ PROVIDER_GOOGLE_GEMINI: "GOOGLE_API_KEY",
39
+ PROVIDER_HUGGING_FACE: "HUGGINGFACEHUB_API_TOKEN",
40
+ PROVIDER_AZURE_OPENAI: "AZURE_OPENAI_API_KEY",
41
+ PROVIDER_OPENROUTER: "OPENROUTER_API_KEY",
42
+ PROVIDER_TOGETHER_AI: "TOGETHER_API_KEY",
43
+ }
44
  VALID_MODELS = {
45
  '[az]azure/open-ai': {
46
  'description': 'faster, detailed',
 
72
  'max_new_tokens': 8192,
73
  'paid': False,
74
  },
75
+ '[or]google/gemini-2.0-flash-001': {
76
+ 'description': 'Google Gemini-2.0-flash-001 (via OpenRouter)',
77
+ 'max_new_tokens': 8192,
78
+ 'paid': True,
79
+ },
80
+ '[or]openai/gpt-3.5-turbo': {
81
+ 'description': 'OpenAI GPT-3.5 Turbo (via OpenRouter)',
82
+ 'max_new_tokens': 4096,
83
+ 'paid': True,
84
+ },
85
  '[to]meta-llama/Llama-3.3-70B-Instruct-Turbo': {
86
  'description': 'detailed, slower',
87
  'max_new_tokens': 4096,
 
91
  'description': 'shorter, faster',
92
  'max_new_tokens': 4096,
93
  'paid': True,
 
 
 
 
 
 
 
 
 
94
  }
95
  }
96
  LLM_PROVIDER_HELP = (
 
99
  '- **[co]**: Cohere\n'
100
  '- **[gg]**: Google Gemini API\n'
101
  '- **[hf]**: Hugging Face Inference API\n'
 
102
  '- **[or]**: OpenRouter\n\n'
103
+ '- **[to]**: Together AI\n'
104
  '[Find out more](https://github.com/barun-saha/slide-deck-ai?tab=readme-ov-file#summary-of-the-llms)'
105
  )
106
  DEFAULT_MODEL_INDEX = int(os.environ.get('DEFAULT_MODEL_INDEX', '4'))
helpers/llm_helper.py CHANGED
@@ -11,7 +11,6 @@ import requests
11
  from requests.adapters import HTTPAdapter
12
  from urllib3.util import Retry
13
  from langchain_core.language_models import BaseLLM, BaseChatModel
14
- from langchain_openai import ChatOpenAI
15
  import os
16
 
17
  sys.path.append('..')
@@ -191,10 +190,12 @@ def get_langchain_llm(
191
 
192
  if provider == GlobalConfig.PROVIDER_OPENROUTER:
193
  # Use langchain-openai's ChatOpenAI for OpenRouter
 
 
194
  logger.debug('Getting LLM via OpenRouter: %s', model)
195
- openrouter_api_key = api_key or os.environ.get("OPENROUTER_API_KEY")
196
- base_url = "https://openrouter.ai/api/v1"
197
- # NOTE: model should be passed as model_name
198
  return ChatOpenAI(
199
  base_url=base_url,
200
  openai_api_key=openrouter_api_key,
 
11
  from requests.adapters import HTTPAdapter
12
  from urllib3.util import Retry
13
  from langchain_core.language_models import BaseLLM, BaseChatModel
 
14
  import os
15
 
16
  sys.path.append('..')
 
190
 
191
  if provider == GlobalConfig.PROVIDER_OPENROUTER:
192
  # Use langchain-openai's ChatOpenAI for OpenRouter
193
+ from langchain_openai import ChatOpenAI
194
+
195
  logger.debug('Getting LLM via OpenRouter: %s', model)
196
+ openrouter_api_key = api_key
197
+ base_url = 'https://openrouter.ai/api/v1'
198
+
199
  return ChatOpenAI(
200
  base_url=base_url,
201
  openai_api_key=openrouter_api_key,