diff --git a/changelog/4217.added.md b/changelog/4217.added.md new file mode 100644 index 000000000..4319a08b3 --- /dev/null +++ b/changelog/4217.added.md @@ -0,0 +1 @@ +- Added `is_async=True` support to `register_function()` and `register_direct_function()`. When enabled, the LLM continues the conversation immediately without waiting for the function result. The result is injected back into the context as a `developer` message once available, triggering a new LLM inference at that point. diff --git a/changelog/4217.changed.md b/changelog/4217.changed.md new file mode 100644 index 000000000..af8831c3b --- /dev/null +++ b/changelog/4217.changed.md @@ -0,0 +1 @@ +- When multiple function calls are returned in a single LLM response, the LLM is now triggered exactly once after the last call in the batch completes, rather than waiting for all function calls. diff --git a/changelog/4217.fixed.2.md b/changelog/4217.fixed.2.md new file mode 100644 index 000000000..af7bff8fa --- /dev/null +++ b/changelog/4217.fixed.2.md @@ -0,0 +1 @@ +- Fixed `BaseOutputTransport` discarding pending `UninterruptibleFrame` items (e.g. function-call context updates) when an interruption arrived. The audio task is now kept alive and only interruptible frames are drained when uninterruptible frames are present in the queue. diff --git a/changelog/4217.fixed.3.md b/changelog/4217.fixed.3.md new file mode 100644 index 000000000..234effdc0 --- /dev/null +++ b/changelog/4217.fixed.3.md @@ -0,0 +1 @@ +- Fixed spurious LLM inference being triggered when a function call result arrived while the user was actively speaking. The context frame is now suppressed until the user stops speaking. diff --git a/changelog/4217.fixed.md b/changelog/4217.fixed.md new file mode 100644 index 000000000..b6a351628 --- /dev/null +++ b/changelog/4217.fixed.md @@ -0,0 +1 @@ +- Fixed an issue where `UninterruptibleFrame` items queued in `FrameProcessor` could be incorrectly dropped on interruption. Previously only the frame currently being processed was checked; now the entire process queue is scanned so pending uninterruptible frames are always delivered.