NanobotzAI commited on
Commit
4c4c3fc
·
verified ·
1 Parent(s): aa7ea56

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -19
app.py CHANGED
@@ -79,26 +79,35 @@ def generate_response(
79
 
80
  context = search_relevant_text(message) # Get relevant content from PDF
81
 
82
- messages = [{"role": "system", "content": system_message}]
 
 
 
 
 
83
  for user_msg, bot_msg in history:
84
- if user_msg:
85
- messages.append({"role": "user", "content": user_msg})
86
- if bot_msg:
87
- messages.append({"role": "assistant", "content": bot_msg})
88
-
89
- messages.append({"role": "user", "content": f"Context: {context}\nQuestion: {message}"})
90
-
91
- response = ""
92
- for chunk in client.chat_completion(
93
- messages,
94
- max_tokens=max_tokens,
95
- stream=True,
96
- temperature=temperature,
97
- top_p=top_p,
98
- ):
99
- token = chunk.choices[0].delta.content or ""
100
- response += token
101
- yield response
 
 
 
 
102
 
103
  @app.route('/')
104
  def index():
 
79
 
80
  context = search_relevant_text(message) # Get relevant content from PDF
81
 
82
+ # Start with the system message in the first user message
83
+ messages = []
84
+ first_msg = f"{system_message}\n\nContext: {context}\nQuestion: {message}"
85
+ messages.append({"role": "user", "content": first_msg})
86
+
87
+ # Add conversation history ensuring alternating pattern (user, assistant, user, assistant...)
88
  for user_msg, bot_msg in history:
89
+ if user_msg.strip(): # Check if user message is not empty
90
+ if messages and messages[-1]['content'] != user_msg: # Check for duplicates
91
+ messages.append({"role": "user", "content": user_msg})
92
+ if bot_msg.strip(): # Check if assistant message is not empty
93
+ if messages and messages[-1]['content'] != bot_msg: # Check for duplicates
94
+ messages.append({"role": "assistant", "content": bot_msg})
95
+
96
+ try:
97
+ response = ""
98
+ for chunk in client.chat_completion(
99
+ messages,
100
+ max_tokens=max_tokens,
101
+ stream=True,
102
+ temperature=temperature,
103
+ top_p=top_p,
104
+ ):
105
+ token = chunk.choices[0].delta.content or ""
106
+ response += token
107
+ yield response
108
+ except Exception as e:
109
+ print(f"Error generating response: {str(e)}")
110
+ yield "I apologize, but I encountered an error while generating the response."
111
 
112
  @app.route('/')
113
  def index():