Docfile commited on
Commit
a2eb89f
·
verified ·
1 Parent(s): 23f07ff

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -20
app.py CHANGED
@@ -5,8 +5,6 @@ from dotenv import load_dotenv
5
  import http.client
6
  import json
7
  from werkzeug.utils import secure_filename
8
- import tempfile
9
- from datetime import datetime
10
  import uuid
11
 
12
  app = Flask(__name__)
@@ -31,12 +29,14 @@ SYSTEM_PROMPT = """
31
  """
32
 
33
  # Initialize Gemini model
34
- model = genai.GenerativeModel('gemini-2.0-flash-exp',
35
- tools='code_execution',
36
- safety_settings=safety_settings,
37
- system_instruction=SYSTEM_PROMPT)
38
-
39
- # Store chat sessions
 
 
40
  chat_sessions = {}
41
 
42
  def perform_web_search(query):
@@ -95,54 +95,69 @@ def home():
95
  if 'session_id' not in session:
96
  session['session_id'] = str(uuid.uuid4())
97
  session['messages'] = []
 
98
  return render_template('index.html', messages=session.get('messages', []))
99
 
100
  @app.route('/send_message', methods=['POST'])
101
  def send_message():
102
  try:
103
  data = request.json
104
- message = data.get('message')
105
  web_search_enabled = data.get('web_search', False)
106
 
107
- if not message:
108
  return jsonify({'error': 'No message provided'}), 400
109
 
110
- # Ensure session is initialized
111
  if 'session_id' not in session:
112
  session['session_id'] = str(uuid.uuid4())
113
  session['messages'] = []
 
114
 
115
  session_id = session['session_id']
116
 
117
- # Initialize chat session if needed
118
  if session_id not in chat_sessions:
119
  chat_sessions[session_id] = model.start_chat(history=[])
120
 
121
- # Perform web search if enabled
 
 
 
 
 
 
 
 
 
 
122
  if web_search_enabled:
123
- web_results = perform_web_search(message)
124
  if web_results:
125
  formatted_results = format_search_results(web_results)
126
- message = f"""Question: {message}\n\nRésultats de recherche web:\n{formatted_results}\n\nPourrais-tu analyser ces informations et me donner une réponse complète?"""
127
 
128
- # Send message to Gemini
129
- response = chat_sessions[session_id].send_message(message)
130
 
131
- # Update message history in session
132
  if 'messages' not in session:
133
  session['messages'] = []
134
 
135
  current_messages = session['messages']
136
  current_messages.append({
137
  'role': 'user',
138
- 'content': message
139
  })
140
  current_messages.append({
141
  'role': 'assistant',
142
  'content': response.text
143
  })
144
  session['messages'] = current_messages
145
-
 
 
 
146
  return jsonify({
147
  'response': response.text
148
  })
@@ -167,6 +182,13 @@ def upload_file():
167
 
168
  try:
169
  gemini_file = genai.upload_file(filepath)
 
 
 
 
 
 
 
170
  return jsonify({'success': True, 'filename': filename})
171
  except Exception as e:
172
  return jsonify({'error': str(e)}), 500
@@ -179,6 +201,7 @@ def clear_chat():
179
  if session_id in chat_sessions:
180
  del chat_sessions[session_id]
181
  session['messages'] = []
 
182
  return jsonify({'success': True})
183
 
184
  if __name__ == '__main__':
 
5
  import http.client
6
  import json
7
  from werkzeug.utils import secure_filename
 
 
8
  import uuid
9
 
10
  app = Flask(__name__)
 
29
  """
30
 
31
  # Initialize Gemini model
32
+ model = genai.GenerativeModel(
33
+ 'gemini-2.0-flash-exp',
34
+ tools='code_execution',
35
+ safety_settings=safety_settings,
36
+ system_instruction=SYSTEM_PROMPT
37
+ )
38
+
39
+ # Stockage des sessions de chat
40
  chat_sessions = {}
41
 
42
  def perform_web_search(query):
 
95
  if 'session_id' not in session:
96
  session['session_id'] = str(uuid.uuid4())
97
  session['messages'] = []
98
+ session['uploaded_files'] = [] # initialisation de la liste des fichiers uploadés
99
  return render_template('index.html', messages=session.get('messages', []))
100
 
101
  @app.route('/send_message', methods=['POST'])
102
  def send_message():
103
  try:
104
  data = request.json
105
+ user_message = data.get('message')
106
  web_search_enabled = data.get('web_search', False)
107
 
108
+ if not user_message:
109
  return jsonify({'error': 'No message provided'}), 400
110
 
111
+ # Initialiser la session si nécessaire
112
  if 'session_id' not in session:
113
  session['session_id'] = str(uuid.uuid4())
114
  session['messages'] = []
115
+ session['uploaded_files'] = []
116
 
117
  session_id = session['session_id']
118
 
119
+ # Initialiser la session de chat si nécessaire
120
  if session_id not in chat_sessions:
121
  chat_sessions[session_id] = model.start_chat(history=[])
122
 
123
+ # Intégration des fichiers uploadés dans le prompt
124
+ prompt = ""
125
+ if 'uploaded_files' in session and session['uploaded_files']:
126
+ prompt += "Fichiers uploadés:\n"
127
+ for file_info in session['uploaded_files']:
128
+ prompt += f"- Nom: {file_info['filename']}, Référence: {file_info['file_id']}\n"
129
+ prompt += "\n"
130
+
131
+ prompt += f"Question: {user_message}"
132
+
133
+ # Réaliser une recherche web si activée
134
  if web_search_enabled:
135
+ web_results = perform_web_search(user_message)
136
  if web_results:
137
  formatted_results = format_search_results(web_results)
138
+ prompt += f"\n\nRésultats de recherche web:\n{formatted_results}\n\nPourrais-tu analyser ces informations et me donner une réponse complète?"
139
 
140
+ # Envoi du message à Gemini
141
+ response = chat_sessions[session_id].send_message(prompt)
142
 
143
+ # Mise à jour de l'historique de chat dans la session
144
  if 'messages' not in session:
145
  session['messages'] = []
146
 
147
  current_messages = session['messages']
148
  current_messages.append({
149
  'role': 'user',
150
+ 'content': prompt
151
  })
152
  current_messages.append({
153
  'role': 'assistant',
154
  'content': response.text
155
  })
156
  session['messages'] = current_messages
157
+
158
+ # Optionnel : vider la liste des fichiers uploadés après utilisation
159
+ session['uploaded_files'] = []
160
+
161
  return jsonify({
162
  'response': response.text
163
  })
 
182
 
183
  try:
184
  gemini_file = genai.upload_file(filepath)
185
+ # Stocker la référence du fichier dans la session
186
+ if 'uploaded_files' not in session:
187
+ session['uploaded_files'] = []
188
+ session['uploaded_files'].append({
189
+ 'filename': filename,
190
+ 'file_id': gemini_file.get('id') if isinstance(gemini_file, dict) else gemini_file
191
+ })
192
  return jsonify({'success': True, 'filename': filename})
193
  except Exception as e:
194
  return jsonify({'error': str(e)}), 500
 
201
  if session_id in chat_sessions:
202
  del chat_sessions[session_id]
203
  session['messages'] = []
204
+ session['uploaded_files'] = []
205
  return jsonify({'success': True})
206
 
207
  if __name__ == '__main__':