Spaces:
Running
Running
File size: 4,770 Bytes
51cbadd f388c93 6b10944 f388c93 76b11c3 f388c93 1382a57 f388c93 2ef19ee c2c3e4e 2ef19ee f388c93 51cbadd f388c93 51cbadd e79be93 51cbadd e79be93 dfa74b3 6b10944 88eedcc 6b10944 d54a43a e79be93 51cbadd e79be93 51cbadd e79be93 415f13d e79be93 51cbadd 6b10944 51cbadd 6b10944 f388c93 2ef19ee 93f4a81 2ef19ee 5cc0492 2ef19ee f7af6f6 2ef19ee f388c93 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
from flask import Flask, render_template, request, jsonify, Response, stream_with_context
from google import genai
from google.genai import types
import os
from PIL import Image
import io
import base64
import json
app = Flask(__name__)
GOOGLE_API_KEY = os.environ.get("GEMINI_API_KEY")
client = genai.Client(
api_key=GOOGLE_API_KEY,
http_options={'api_version': 'v1alpha'},
)
@app.route('/')
def index():
#return "La plateforme est en maintenance."
return render_template('index.html')
@app.route('/free')
def indexx():
return render_template('maj.html')
@app.route('/solve', methods=['POST'])
def solve():
try:
image_data = request.files['image'].read()
img = Image.open(io.BytesIO(image_data))
buffered = io.BytesIO()
img.save(buffered, format="PNG")
img_str = base64.b64encode(buffered.getvalue()).decode()
def generate():
mode = 'starting'
try:
response = client.models.generate_content_stream(
model="gemini-2.5-pro-exp-03-25",
contents=[
{'inline_data': {'mime_type': 'image/png', 'data': img_str}},
" Résous ça en français. Write you answer with rendering Latex simple. $...$ pour les formules en ligne ou $$...$$ pour les blocs). je ne vzux las de documents latex donc rien ne doit commencer par : \documentclass{article}."
]
)
#Resous cette exercice. ça doit être bien présentable et espacé. je veux un jolie rendu
for chunk in response:
for part in chunk.candidates[0].content.parts:
if part.thought:
if mode != "thinking":
yield f'data: {json.dumps({"mode": "thinking"})}\n\n'
mode = "thinking"
else:
if mode != "answering":
yield f'data: {json.dumps({"mode": "answering"})}\n\n'
mode = "answering"
yield f'data: {json.dumps({"content": part.text})}\n\n'
except Exception as e:
print(f"Error during generation: {e}")
yield f'data: {json.dumps({"error": str(e)})}\n\n'
return Response(
stream_with_context(generate()),
mimetype='text/event-stream',
headers={
'Cache-Control': 'no-cache',
'X-Accel-Buffering': 'no'
}
)
except Exception as e:
return jsonify({'error': str(e)}), 500
@app.route('/solved', methods=['POST'])
def solved():
try:
image_data = request.files['image'].read()
img = Image.open(io.BytesIO(image_data))
buffered = io.BytesIO()
img.save(buffered, format="PNG")
img_str = base64.b64encode(buffered.getvalue()).decode()
def generate():
mode = 'starting'
try:
response = client.models.generate_content_stream(
model="gemini-2.0-flash-thinking-exp-01-21",
contents=[
{'inline_data': {'mime_type': 'image/png', 'data': img_str}},
" Résous ça en français. Write you answer with rendering Latex."
]
)
#Resous cette exercice. ça doit être bien présentable et espacé. je veux un jolie rendu
for chunk in response:
for part in chunk.candidates[0].content.parts:
if part.thought:
if mode != "thinking":
yield f'data: {json.dumps({"mode": "thinking"})}\n\n'
mode = "thinking"
else:
if mode != "answering":
yield f'data: {json.dumps({"mode": "answering"})}\n\n'
mode = "answering"
yield f'data: {json.dumps({"content": part.text})}\n\n'
except Exception as e:
print(f"Error during generation: {e}")
yield f'data: {json.dumps({"error": str(e)})}\n\n'
return Response(
stream_with_context(generate()),
mimetype='text/event-stream',
headers={
'Cache-Control': 'no-cache',
'X-Accel-Buffering': 'no'
}
)
except Exception as e:
return jsonify({'error': str(e)}), 500
if __name__ == '__main__':
app.run(debug=True) |