jack 5 days ago
parent
commit
7ac339ec23
2 changed files with 32 additions and 0 deletions
  1. 27 0
      app/core/runner/pub_handler.py
  2. 5 0
      app/core/runner/thread_runner.py

+ 27 - 0
app/core/runner/pub_handler.py

@@ -337,6 +337,33 @@ class StreamEventHandler:
             )
             )
         )
         )
 
 
+    def pub_message_delta_tool(
+        self, message_id, index, content
+    ):
+        """
+        pub MessageDelta
+        """
+        delta = {
+            "tools": [
+                {
+                    "index": index,
+                    "type": "text",
+                    "text": {"value": content},
+                }
+            ],
+        }
+
+        self.pub_event(
+            events.ThreadMessageDelta(
+                data=events.MessageDeltaEvent(
+                    id=message_id,
+                    delta=delta,
+                    object="thread.message.delta",
+                ),
+                event="thread.message.delta",
+            )
+        )
+
     def pub_done(self):
     def pub_done(self):
         pub_event(self._channel, {"event": "done", "data": "done"})
         pub_event(self._channel, {"event": "done", "data": "done"})
 
 

+ 5 - 0
app/core/runner/thread_runner.py

@@ -293,6 +293,11 @@ class ThreadRunner:
                         },
                         },
                         completed=not external_tool_call_dict,
                         completed=not external_tool_call_dict,
                     )
                     )
+                    self.event_handler.pub_message_delta_tool(
+                        message_id=llm_callback_handler.message.id,
+                        index=0,
+                        content=tool_calls_with_outputs
+                    )
                 except Exception as e:
                 except Exception as e:
                     RunStepService.to_failed(
                     RunStepService.to_failed(
                         session=self.session, run_step_id=new_run_step.id, last_error=e
                         session=self.session, run_step_id=new_run_step.id, last_error=e