@@ -114,6 +114,7 @@ def chat():
114114 try :
115115 data = request .get_json ()
116116 message = data .get ('message' , '' )
117+ history = data .get ('history' , [])[- 20 :] # cap at 20 messages
117118
118119 if not message :
119120 return jsonify ({'error' : 'Message is required' }), 400
@@ -211,12 +212,18 @@ def chat():
211212- Always respond in the same language as the user's question and respond as if you are { personal_info ['name' ]} .
212213"""
213214
215+ # Build messages with conversation history
216+ openai_messages = [{"role" : "system" , "content" : final_answer_prompt }]
217+ for h in history :
218+ role = h .get ('role' , 'user' )
219+ if role in ('user' , 'assistant' ):
220+ openai_messages .append ({"role" : role , "content" : h .get ('content' , '' )})
221+ openai_messages .append ({"role" : "user" , "content" : message })
222+
214223 # Call OpenAI API for the final answer
215224 final_response = client .chat .completions .create (
216225 model = "gpt-4o-mini" ,
217- messages = [
218- {"role" : "system" , "content" : final_answer_prompt }
219- ],
226+ messages = openai_messages ,
220227 temperature = 0.5 ,
221228 max_tokens = 1000 ,
222229 )
@@ -249,6 +256,7 @@ def chat_stream():
249256 try :
250257 data = request .get_json ()
251258 message = data .get ('message' , '' )
259+ history = data .get ('history' , [])[- 20 :] # cap at 20 messages
252260
253261 if not message :
254262 return jsonify ({'error' : 'Message is required' }), 400
@@ -319,16 +327,25 @@ def chat_stream():
319327- Always respond in the same language as the user's question and respond as if you are { personal_info ['name' ]} .
320328"""
321329
322- # Capture user_id in closure before streaming
330+ # Build messages with conversation history
331+ stream_messages = [{"role" : "system" , "content" : final_answer_prompt }]
332+ for h in history :
333+ role = h .get ('role' , 'user' )
334+ if role in ('user' , 'assistant' ):
335+ stream_messages .append ({"role" : role , "content" : h .get ('content' , '' )})
336+ stream_messages .append ({"role" : "user" , "content" : message })
337+
338+ # Capture variables in closure before streaming
323339 captured_user_id = user_id
324340 captured_message = message
341+ captured_stream_messages = stream_messages
325342
326343 def generate ():
327344 full_response = []
328345 try :
329346 stream = client .chat .completions .create (
330347 model = "gpt-4o-mini" ,
331- messages = [{ "role" : "system" , "content" : final_answer_prompt }] ,
348+ messages = captured_stream_messages ,
332349 temperature = 0.5 ,
333350 max_tokens = 1000 ,
334351 stream = True ,
0 commit comments