jack 2 meses atrás
pai
commit
300b16a92a

+ 25 - 1
app/core/runner/llm_callback_handler.py

@@ -38,7 +38,9 @@ class LLMCallbackHandler:
         :param response_stream: ChatCompletionChunk stream
         :return: ChatCompletionMessage
         """
-        message = ChatCompletionMessage(content="", role="assistant", tool_calls=[])
+        message = ChatCompletionMessage(
+            content="", role="assistant", tool_calls=[], audio=None
+        )
 
         index = 0
         try:
@@ -95,6 +97,28 @@ class LLMCallbackHandler:
                     self.event_handler.pub_message_delta(
                         self.message.id, index, delta.content, delta.role
                     )
+                elif delta.audio is not None:
+                    if not self.final_message_started:
+                        self.final_message_started = True
+
+                        self.message = self.on_message_create_func(content="")
+                        self.step = self.on_step_create_func(self.message.id)
+                        logging.debug(
+                            "create message and step (%s), (%s)",
+                            self.message,
+                            self.step,
+                        )
+
+                        self.event_handler.pub_run_step_created(self.step)
+                        self.event_handler.pub_run_step_in_progress(self.step)
+                        self.event_handler.pub_message_created(self.message)
+                        self.event_handler.pub_message_in_progress(self.message)
+
+                    # append message content delta
+                    # message.audio += delta.audio
+                    self.event_handler.pub_message_delta(
+                        self.message.id, index, delta.content, delta.role, delta.audio
+                    )
                 if chunk.usage:
                     self.event_handler.pub_message_usage(chunk)
                     continue

+ 2 - 1
app/core/runner/pub_handler.py

@@ -306,7 +306,7 @@ class StreamEventHandler:
             )
         )
 
-    def pub_message_delta(self, message_id, index, content, role):
+    def pub_message_delta(self, message_id, index, content, role, audio=None):
         """
         pub MessageDelta
         """
@@ -320,6 +320,7 @@ class StreamEventHandler:
                         ],
                         "role": role,
                     },
+                    audio=audio,
                     object="thread.message.delta",
                 ),
                 event="thread.message.delta",