Spaces:
Build error
Build error
File size: 2,710 Bytes
51cbadd f388c93 6b10944 9723415 f388c93 824351a f388c93 51cbadd f388c93 51cbadd e79be93 9723415 51cbadd e79be93 6b10944 e79be93 6b10944 e79be93 51cbadd 9723415 e79be93 51cbadd e79be93 9723415 e79be93 51cbadd 6b10944 51cbadd 6b10944 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 |
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
import time
app = Flask(__name__)
GOOGLE_API_KEY = "AIzaSyC_zxN9IHjEAxIoshWPzMfgb9qwMsu5t5Y"
client = genai.Client(
api_key=GOOGLE_API_KEY,
http_options={'api_version': 'v1alpha'},
)
@app.route('/')
def index():
return render_template('index.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'
start_time = time.time()
try:
response = client.models.generate_content_stream(
model="gemini-2.0-flash-thinking-exp-01-21",
config={'thinking_config': {'include_thoughts': True}},
contents=[
{'inline_data': {'mime_type': 'image/png', 'data': img_str}},
"Résous ce problème mathématique étape par étape."
]
)
for chunk in response:
for part in chunk.candidates[0].content.parts:
current_time = time.time()
elapsed_seconds = round(current_time - start_time, 1)
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, "elapsed_time": elapsed_seconds})}\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) |