thunder-lord commited on
Commit
59def00
·
verified ·
1 Parent(s): c917403

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -0
app.py CHANGED
@@ -1,4 +1,6 @@
1
  from flask import Flask, request, jsonify, send_from_directory
 
 
2
  from PIL import Image
3
  from io import BytesIO
4
  from prodiapy import Prodia
@@ -13,8 +15,15 @@ import string
13
  import random
14
 
15
 
 
16
  app = Flask(__name__)
17
 
 
 
 
 
 
 
18
  # Define the path to static files
19
  static_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)))
20
 
@@ -244,6 +253,47 @@ async def generate_image():
244
  except Exception as e:
245
  print('Error:', str(e))
246
  return jsonify({"status": "error", "error": "Internal Server Error"}), 500
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
 
248
  if __name__ == "__main__":
249
  app.run(host="0.0.0.0", port=7860, debug=True)
 
1
  from flask import Flask, request, jsonify, send_from_directory
2
+ from flask_limiter import Limiter
3
+ from flask_limiter.util import get_remote_address
4
  from PIL import Image
5
  from io import BytesIO
6
  from prodiapy import Prodia
 
15
  import random
16
 
17
 
18
+
19
  app = Flask(__name__)
20
 
21
+ limiter = Limiter(
22
+ app,
23
+ key_func=get_remote_address,
24
+ default_limits=["30 per minute"]
25
+ )
26
+
27
  # Define the path to static files
28
  static_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)))
29
 
 
253
  except Exception as e:
254
  print('Error:', str(e))
255
  return jsonify({"status": "error", "error": "Internal Server Error"}), 500
256
+
257
+
258
+ MODELS = {
259
+ 'gemini-1.0-pro-001': 'gemini-1.0-pro-001',
260
+ 'gemini-1.0-pro': 'gemini-1.0-pro',
261
+ 'gemini-pro': 'gemini-pro',
262
+ 'chat-bison-001': 'chat-bison-001'
263
+ }
264
+
265
+ @app.route('/gemini', methods=['GET'])
266
+ @limiter.limit("30 per minute")
267
+ def gemini():
268
+ prompt = request.args.get('prompt')
269
+ model = request.args.get('model', 'gemini-pro')
270
+
271
+ if not prompt:
272
+ return jsonify({'error': 'Prompt parameter is required'}), 400
273
+
274
+ if model not in MODELS:
275
+ return jsonify({'error': 'Invalid model'}), 400
276
+
277
+ url = "https://generativelanguage.googleapis.com/v1beta/models/{}/{}".format(MODELS[model], "generateContent" if model != 'chat-bison-001' else "generateMessage")
278
+ data = {
279
+ "contents": [
280
+ {
281
+ "parts": [
282
+ {
283
+ "text": prompt
284
+ }
285
+ ]
286
+ }
287
+ ]
288
+ }
289
+
290
+ response = requests.post(url + "?key=AIzaSyCKc8gUTrb7KjhAwY6NwATaMWIDr5etKFk", json=data)
291
+
292
+ if response.status_code == 200:
293
+ result = response.json()
294
+ return jsonify(result)
295
+ else:
296
+ return jsonify({'error': 'Failed to generate content'}), 500
297
 
298
  if __name__ == "__main__":
299
  app.run(host="0.0.0.0", port=7860, debug=True)