pedroferreira commited on
Commit
b476e3c
·
1 Parent(s): 06c32c7
validators/stream_manager.py CHANGED
@@ -33,9 +33,9 @@ class StreamManager:
33
 
34
  await self.log_database.add_streams_to_db(completed_streams)
35
  # Gets the first stream that acquired the lock, meaning the first stream that was able to return a non-empty chunk
36
- _, selected_stream = next(
37
  (
38
- (streamer, completed_stream)
39
  for streamer, completed_stream in zip(streamers, completed_streams)
40
  if streamer.lock_acquired
41
  ),
 
33
 
34
  await self.log_database.add_streams_to_db(completed_streams)
35
  # Gets the first stream that acquired the lock, meaning the first stream that was able to return a non-empty chunk
36
+ selected_stream = next(
37
  (
38
+ completed_stream
39
  for streamer, completed_stream in zip(streamers, completed_streams)
40
  if streamer.lock_acquired
41
  ),
validators/streamer.py CHANGED
@@ -93,10 +93,6 @@ class AsyncResponseDataStreamer:
93
  return initiated_response
94
 
95
  async def stream(self, request: web.Request) -> ProcessedStreamResponse:
96
- # response = web_response.StreamResponse(status=200, reason="OK")
97
- # response.headers["Content-Type"] = "application/json"
98
- # await response.prepare(request) # Prepare and send the headers
99
-
100
  try:
101
  start_time = time.time()
102
  client_response: web.Response = None
@@ -104,20 +100,21 @@ class AsyncResponseDataStreamer:
104
 
105
  async for chunk in self.async_iterator:
106
  if isinstance(chunk, str):
107
- # Chunks are currently returned in string arrays, so we need to concatenate them
108
- concatenated_chunks = "".join(chunk)
109
- self.accumulated_chunks.append(concatenated_chunks)
 
 
110
  self.accumulated_chunks_timings.append(time.time() - start_time)
111
  # Gets new response state
112
  self.sequence_number += 1
113
  new_response_state = self._create_chunk_response(
114
- concatenated_chunks
115
  )
116
- # Writes the new response state to the response
117
  client_response = await self.write_to_stream(
118
  request, client_response, new_response_state, self.lock
119
  )
120
- # await response.write(new_response_state.encode('utf-8'))
121
 
122
  if chunk is not None and isinstance(chunk, StreamPromptingSynapse):
123
  if len(self.accumulated_chunks) == 0:
 
93
  return initiated_response
94
 
95
  async def stream(self, request: web.Request) -> ProcessedStreamResponse:
 
 
 
 
96
  try:
97
  start_time = time.time()
98
  client_response: web.Response = None
 
100
 
101
  async for chunk in self.async_iterator:
102
  if isinstance(chunk, str):
103
+ # If chunk is empty, skip
104
+ if not chunk:
105
+ continue
106
+
107
+ self.accumulated_chunks.append(chunk)
108
  self.accumulated_chunks_timings.append(time.time() - start_time)
109
  # Gets new response state
110
  self.sequence_number += 1
111
  new_response_state = self._create_chunk_response(
112
+ chunk
113
  )
114
+ # Writes the new response state to the response
115
  client_response = await self.write_to_stream(
116
  request, client_response, new_response_state, self.lock
117
  )
 
118
 
119
  if chunk is not None and isinstance(chunk, StreamPromptingSynapse):
120
  if len(self.accumulated_chunks) == 0: