Skip to content

Commit f93e880

Browse files
committed
Add feature to store API key in the backend for security
1 parent 98229d5 commit f93e880

File tree

1 file changed

+31
-4
lines changed

1 file changed

+31
-4
lines changed

backend/main.py

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@
1717

1818
load_dotenv()
1919

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+
2029
PROVIDER_API_CONFIG = {
2130
"google": {
2231
"url_template": "https://generativelanguage.googleapis.com/v1beta/models?key={api_key}",
@@ -144,8 +153,17 @@ def get_models():
144153
api_key = data.get('apiKey')
145154
provider = data.get('provider')
146155

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
149167

150168
# Try using provider's get_models method first (more reliable)
151169
try:
@@ -208,8 +226,17 @@ def chat():
208226
# panel_data = data.get('panelData') # Keep if needed, maybe append to last message?
209227
options = data.get('options', {}) # Includes model for Glama
210228

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
213240

214241
# --- Centralized Message Preparation ---
215242
prepared_messages: List[Dict[str, Any]] = []

0 commit comments

Comments
 (0)