|
17 | 17 |
|
18 | 18 | load_dotenv() |
19 | 19 |
|
| 20 | + |
| 21 | +PROVIDER_ENV_VAR_MAP = { |
| 22 | + "google": "GOOGLE_API_KEY", |
| 23 | + "anthropic": "ANTHROPIC_API_KEY", |
| 24 | + "chatgpt": "OPENAI_API_KEY", |
| 25 | + "grok": "XAI_API_KEY", |
| 26 | + "glama": "GLAMA_API_KEY", |
| 27 | +} |
| 28 | + |
20 | 29 | PROVIDER_API_CONFIG = { |
21 | 30 | "google": { |
22 | 31 | "url_template": "https://generativelanguage.googleapis.com/v1beta/models?key={api_key}", |
@@ -144,8 +153,17 @@ def get_models(): |
144 | 153 | api_key = data.get('apiKey') |
145 | 154 | provider = data.get('provider') |
146 | 155 |
|
147 | | - if not api_key or not provider: |
148 | | - return jsonify({"error": "Missing required parameters (apiKey, provider)"}), 400 |
| 156 | + if not provider: |
| 157 | + return jsonify({"error": "Missing required parameter (provider)"}), 400 |
| 158 | + |
| 159 | + # If API key is not provided in the request, try to get it from environment variables |
| 160 | + if not api_key: |
| 161 | + env_var_name = PROVIDER_ENV_VAR_MAP.get(provider) |
| 162 | + if env_var_name: |
| 163 | + api_key = os.getenv(env_var_name) |
| 164 | + |
| 165 | + if not api_key: |
| 166 | + return jsonify({"error": f"Missing API Key for {provider}. Please provide it in the panel or set the {PROVIDER_ENV_VAR_MAP.get(provider)} environment variable."}), 400 |
149 | 167 |
|
150 | 168 | # Try using provider's get_models method first (more reliable) |
151 | 169 | try: |
@@ -208,8 +226,17 @@ def chat(): |
208 | 226 | # panel_data = data.get('panelData') # Keep if needed, maybe append to last message? |
209 | 227 | options = data.get('options', {}) # Includes model for Glama |
210 | 228 |
|
211 | | - if not api_key or not provider_name or not messages_input: |
212 | | - return jsonify({"error": "Missing required parameters (apiKey, llmProvider, messages)"}), 400 |
| 229 | + if not provider_name or not messages_input: |
| 230 | + return jsonify({"error": "Missing required parameters (llmProvider, messages)"}), 400 |
| 231 | + |
| 232 | + # If API key is not provided in the request, try to get it from environment variables |
| 233 | + if not api_key: |
| 234 | + env_var_name = PROVIDER_ENV_VAR_MAP.get(provider_name) |
| 235 | + if env_var_name: |
| 236 | + api_key = os.getenv(env_var_name) |
| 237 | + |
| 238 | + if not api_key: |
| 239 | + return jsonify({"error": f"Missing API Key for {provider_name}. Please provide it in the panel or set the {PROVIDER_ENV_VAR_MAP.get(provider_name)} environment variable."}), 400 |
213 | 240 |
|
214 | 241 | # --- Centralized Message Preparation --- |
215 | 242 | prepared_messages: List[Dict[str, Any]] = [] |
|
0 commit comments