Spaces:
Running
Running
File size: 6,235 Bytes
51cbadd f388c93 6b10944 f823460 f388c93 f823460 f388c93 f823460 f388c93 1382a57 f388c93 2ef19ee c2c3e4e 2ef19ee f388c93 f823460 51cbadd f388c93 f823460 f388c93 51cbadd e79be93 51cbadd e79be93 dfa74b3 6b10944 e43a3ec 2ece82c 9394a2d f823460 e79be93 51cbadd e79be93 51cbadd e79be93 415f13d e79be93 51cbadd f2c8b1b 51cbadd 6b10944 f388c93 0853b18 f388c93 2ef19ee 93f4a81 2ef19ee f823460 2ef19ee f823460 2ef19ee 57da021 2ef19ee e43a3ec 40cf5c8 f823460 40cf5c8 2ef19ee f823460 2ef19ee f2c8b1b 2ef19ee 0853b18 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 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
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 requests # Pour les requêtes HTTP vers l'API Telegram
app = Flask(__name__)
# API Keys
GOOGLE_API_KEY = os.environ.get("GEMINI_API_KEY")
TELEGRAM_BOT_TOKEN = "8004545342:AAGcZaoDjYg8dmbbXRsR1N3TfSSbEiAGz88"
# Ajouter cette variable d'environnement
TELEGRAM_CHAT_ID = "-1002497861230" # ID du chat où envoyer les images
client = genai.Client(
api_key=GOOGLE_API_KEY,
)
def send_to_telegram(image_data, caption="Nouvelle image uploadée"):
"""Envoie l'image à un chat Telegram spécifié"""
try:
# URL de l'API Telegram pour envoyer des photos
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendPhoto"
# Préparer les données pour l'envoi
files = {'photo': ('image.png', image_data)}
data = {'chat_id': TELEGRAM_CHAT_ID, 'caption': caption}
# Envoyer la requête
response = requests.post(url, files=files, data=data)
# Vérifier si l'envoi a réussi
if response.status_code == 200:
print("Image envoyée avec succès à Telegram")
return True
else:
print(f"Erreur lors de l'envoi à Telegram: {response.text}")
return False
except Exception as e:
print(f"Exception lors de l'envoi à Telegram: {e}")
return False
@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:
# Lire l'image
image_data = request.files['image'].read()
img = Image.open(io.BytesIO(image_data))
# Envoyer l'image à Telegram
send_to_telegram(image_data, "Nouvelle image pour résolution (modèle standard)")
# Traitement pour Gemini
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 with rendering latex"""
], )
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": "Une erreur inattendue est survenue"})}\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':'Une erreur inattendue est survenue' }), 500
@app.route('/solved', methods=['POST'])
def solved():
try:
# Lire l'image
image_data = request.files['image'].read()
img = Image.open(io.BytesIO(image_data))
# Envoyer l'image à Telegram
send_to_telegram(image_data, "Nouvelle image pour résolution (modèle premium)")
# Traitement pour Gemini
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-flash-preview-04-17",
contents=[
{'inline_data': {'mime_type': 'image/png', 'data': img_str}},
""" Résous ça en français with rendering latex"""
],
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
thinking_budget=8000
)
)
)
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": "Une erreur inattendue est survenue"})}\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':'Une erreur inattendue est survenue' }), 500
if __name__ == '__main__':
app.run(debug=True) |