mtyrrell commited on
Commit
1d98f09
Β·
1 Parent(s): 37d4c1b

refactor v0.3

Browse files
Files changed (1) hide show
  1. app/main.py +11 -10
app/main.py CHANGED
@@ -133,12 +133,12 @@ def extract_user_query_fallback(data: Any) -> str:
133
  # Streaming Handlers for LangServe
134
  # ─────────────────────────────────────────
135
 
136
- async def streaming_flexible_handler(data):
137
  """Streaming handler that yields individual tokens for LangServe"""
 
 
 
138
  try:
139
- logger.info(f"=== STREAMING HANDLER START ===")
140
- logger.info(f"streaming_flexible_handler received: {data} (type: {type(data)})")
141
-
142
  # Extract query using the same logic as flexible_handler
143
  if hasattr(data, 'extract_query'):
144
  query = data.extract_query()
@@ -161,7 +161,8 @@ async def streaming_flexible_handler(data):
161
 
162
  if not query.strip():
163
  # Yield error message as individual characters
164
- error_msg = "No query found. Please provide text in one of these fields: query, text, prompt, content, or messages array."
 
165
  for char in error_msg:
166
  yield char
167
  return
@@ -171,20 +172,18 @@ async def streaming_flexible_handler(data):
171
  full_text = result.result
172
 
173
  logger.info(f"Generated response: '{full_text}' (length: {len(full_text)})")
 
174
 
175
  # Yield individual characters - this is what LangServe expects for streaming
176
  for i, char in enumerate(full_text):
177
  logger.debug(f"Yielding character {i}: '{char}'")
178
  yield char
179
-
180
- # Small delay to simulate realistic streaming
181
- await asyncio.sleep(0.02)
182
 
183
  logger.info("=== STREAMING HANDLER COMPLETE ===")
184
 
185
  except Exception as e:
186
  logger.error(f"Error in streaming_flexible_handler: {e}", exc_info=True)
187
- error_msg = f"Error processing request: {str(e)}"
188
  for char in error_msg:
189
  yield char
190
 
@@ -195,6 +194,7 @@ async def streaming_flexible_handler(data):
195
  def flexible_handler(data) -> ChatFedOutput:
196
  """Primary handler for flexible input that accepts multiple formats"""
197
  try:
 
198
  logger.info(f"flexible_handler received: {data} (type: {type(data)})")
199
 
200
  # Handle both Pydantic model and raw dict input
@@ -240,7 +240,8 @@ def flexible_handler(data) -> ChatFedOutput:
240
  "extracted_query": query,
241
  "input_method": "flexible_handler",
242
  "input_type": str(type(data)),
243
- "extracted_from": extracted_from
 
244
  })
245
  return result
246
 
 
133
  # Streaming Handlers for LangServe
134
  # ─────────────────────────────────────────
135
 
136
+ def streaming_flexible_handler(data):
137
  """Streaming handler that yields individual tokens for LangServe"""
138
+ logger.info(f"=== STREAMING HANDLER CALLED ===")
139
+ logger.info(f"streaming_flexible_handler received: {data} (type: {type(data)})")
140
+
141
  try:
 
 
 
142
  # Extract query using the same logic as flexible_handler
143
  if hasattr(data, 'extract_query'):
144
  query = data.extract_query()
 
161
 
162
  if not query.strip():
163
  # Yield error message as individual characters
164
+ error_msg = "No query found. Please provide text."
165
+ logger.info(f"No query found, yielding error: '{error_msg}'")
166
  for char in error_msg:
167
  yield char
168
  return
 
172
  full_text = result.result
173
 
174
  logger.info(f"Generated response: '{full_text}' (length: {len(full_text)})")
175
+ logger.info("Starting to yield individual characters...")
176
 
177
  # Yield individual characters - this is what LangServe expects for streaming
178
  for i, char in enumerate(full_text):
179
  logger.debug(f"Yielding character {i}: '{char}'")
180
  yield char
 
 
 
181
 
182
  logger.info("=== STREAMING HANDLER COMPLETE ===")
183
 
184
  except Exception as e:
185
  logger.error(f"Error in streaming_flexible_handler: {e}", exc_info=True)
186
+ error_msg = f"Error: {str(e)}"
187
  for char in error_msg:
188
  yield char
189
 
 
194
  def flexible_handler(data) -> ChatFedOutput:
195
  """Primary handler for flexible input that accepts multiple formats"""
196
  try:
197
+ logger.info(f"=== NON-STREAMING HANDLER CALLED ===")
198
  logger.info(f"flexible_handler received: {data} (type: {type(data)})")
199
 
200
  # Handle both Pydantic model and raw dict input
 
240
  "extracted_query": query,
241
  "input_method": "flexible_handler",
242
  "input_type": str(type(data)),
243
+ "extracted_from": extracted_from,
244
+ "handler_type": "NON_STREAMING" # Added to identify which handler was used
245
  })
246
  return result
247