Docfile commited on
Commit
c54f02a
·
verified ·
1 Parent(s): e164347

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -33
app.py CHANGED
@@ -7,6 +7,7 @@ import json
7
  from werkzeug.utils import secure_filename
8
  import tempfile
9
  from datetime import datetime
 
10
 
11
  app = Flask(__name__)
12
  app.secret_key = os.urandom(24)
@@ -35,17 +36,8 @@ model = genai.GenerativeModel('gemini-2.0-flash-exp',
35
  safety_settings=safety_settings,
36
  system_instruction=SYSTEM_PROMPT)
37
 
38
- # Store chat sessions with user isolation
39
  chat_sessions = {}
40
- chat_histories = {}
41
-
42
- def get_client_ip():
43
- """Get a unique identifier for the client"""
44
- if request.headers.getlist("X-Forwarded-For"):
45
- ip = request.headers.getlist("X-Forwarded-For")[0]
46
- else:
47
- ip = request.remote_addr
48
- return ip
49
 
50
  def perform_web_search(query):
51
  conn = http.client.HTTPSConnection("google.serper.dev")
@@ -70,7 +62,6 @@ def format_search_results(data):
70
  return "Aucun résultat trouvé"
71
 
72
  result = []
73
-
74
  if 'knowledgeGraph' in data:
75
  kg = data['knowledgeGraph']
76
  result.append({
@@ -101,15 +92,14 @@ def allowed_file(filename):
101
 
102
  @app.route('/')
103
  def home():
104
- client_id = get_client_ip()
105
- if client_id not in chat_histories:
106
- chat_histories[client_id] = []
107
- return render_template('index.html', messages=chat_histories[client_id])
108
 
109
  @app.route('/send_message', methods=['POST'])
110
  def send_message():
111
  try:
112
- client_id = get_client_ip()
113
  data = request.json
114
  message = data.get('message')
115
  web_search_enabled = data.get('web_search', False)
@@ -117,10 +107,16 @@ def send_message():
117
  if not message:
118
  return jsonify({'error': 'No message provided'}), 400
119
 
120
- # Initialize or get existing chat session for this client
121
- if client_id not in chat_sessions:
122
- chat_sessions[client_id] = model.start_chat(history=[])
123
- chat_histories[client_id] = []
 
 
 
 
 
 
124
 
125
  # Perform web search if enabled
126
  if web_search_enabled:
@@ -130,19 +126,22 @@ def send_message():
130
  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?"""
131
 
132
  # Send message to Gemini
133
- response = chat_sessions[client_id].send_message(message)
134
 
135
- # Update message history for this client
136
- chat_histories[client_id].append({
 
 
 
 
137
  'role': 'user',
138
- 'content': message,
139
- 'timestamp': datetime.now().isoformat()
140
  })
141
- chat_histories[client_id].append({
142
  'role': 'assistant',
143
- 'content': response.text,
144
- 'timestamp': datetime.now().isoformat()
145
  })
 
146
 
147
  return jsonify({
148
  'response': response.text
@@ -176,11 +175,10 @@ def upload_file():
176
 
177
  @app.route('/clear_chat', methods=['POST'])
178
  def clear_chat():
179
- client_id = get_client_ip()
180
- if client_id in chat_sessions:
181
- del chat_sessions[client_id]
182
- if client_id in chat_histories:
183
- del chat_histories[client_id]
184
  return jsonify({'success': True})
185
 
186
  if __name__ == '__main__':
 
7
  from werkzeug.utils import secure_filename
8
  import tempfile
9
  from datetime import datetime
10
+ import uuid
11
 
12
  app = Flask(__name__)
13
  app.secret_key = os.urandom(24)
 
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):
43
  conn = http.client.HTTPSConnection("google.serper.dev")
 
62
  return "Aucun résultat trouvé"
63
 
64
  result = []
 
65
  if 'knowledgeGraph' in data:
66
  kg = data['knowledgeGraph']
67
  result.append({
 
92
 
93
  @app.route('/')
94
  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)
 
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:
 
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
 
175
 
176
  @app.route('/clear_chat', methods=['POST'])
177
  def clear_chat():
178
+ session_id = session.get('session_id')
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__':