from flask import Flask, render_template, request, jsonify import requests import os app = Flask(__name__) # Get the API key from an environment variable (more secure) GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY") if not GEMINI_API_KEY: raise ValueError("No GEMINI_API_KEY environment variable set!") @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': user_message = request.form.get('message') if not user_message: return "No message provided", 400 # Construct the Gemini API request url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key={GEMINI_API_KEY}" headers = {'Content-Type': 'application/json'} data = { "contents": [{ "parts": [{"text": user_message}] }] } try: response = requests.post(url, headers=headers, json=data) response.raise_for_status() # Raise an exception for bad status codes # Extract text from AI response (adjust based on actual response format) ai_response_data = response.json() try: ai_text = ai_response_data['candidates'][0]['content']['parts'][0]['text'] except (KeyError, IndexError): ai_text = "Error extracting text from AI response." return render_template('index.html', message=user_message, ai_response=ai_text) except requests.exceptions.RequestException as e: print(f"API request failed: {e}") return f"API request failed: {e}", 500 else: return render_template('index.html') if __name__ == '__main__': app.run(debug=False, host="0.0.0.0", port=7860) #Remove debug=True for production