FreeChat / api.py
1tbfree's picture
Update api.py
143fce1 verified
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