Revert "LLMAssistantContextAggregator: create a task to run on_context_updated"
This reverts commit 397bae29f7.
This commit is contained in:
@@ -13,9 +13,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Fixed an issue that would cause `LLMAssistantContextAggregator` to block
|
|
||||||
processing more frames while processing a function call result.
|
|
||||||
|
|
||||||
- Fixed an issue where the `RTVIObserver` would report two bot started and
|
- Fixed an issue where the `RTVIObserver` would report two bot started and
|
||||||
stopped speaking events for each bot turn.
|
stopped speaking events for each bot turn.
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
from typing import Dict, List, Set
|
from typing import Dict, List
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
@@ -380,7 +380,6 @@ class LLMAssistantContextAggregator(LLMContextResponseAggregator):
|
|||||||
|
|
||||||
self._started = 0
|
self._started = 0
|
||||||
self._function_calls_in_progress: Dict[str, FunctionCallInProgressFrame] = {}
|
self._function_calls_in_progress: Dict[str, FunctionCallInProgressFrame] = {}
|
||||||
self._context_updated_tasks: Set[asyncio.Task] = ()
|
|
||||||
|
|
||||||
async def handle_aggregation(self, aggregation: str):
|
async def handle_aggregation(self, aggregation: str):
|
||||||
self._context.add_message({"role": "assistant", "content": aggregation})
|
self._context.add_message({"role": "assistant", "content": aggregation})
|
||||||
@@ -487,13 +486,10 @@ class LLMAssistantContextAggregator(LLMContextResponseAggregator):
|
|||||||
if run_llm:
|
if run_llm:
|
||||||
await self.push_context_frame(FrameDirection.UPSTREAM)
|
await self.push_context_frame(FrameDirection.UPSTREAM)
|
||||||
|
|
||||||
# Call the `on_context_updated` callback once the function call result
|
# Emit the on_context_updated callback once the function call
|
||||||
# is added to the context. Also, run this in a separate task to make
|
# result is added to the context
|
||||||
# sure we don't block the pipeline.
|
|
||||||
if properties and properties.on_context_updated:
|
if properties and properties.on_context_updated:
|
||||||
task = await self.create_task(properties.on_context_updated())
|
await properties.on_context_updated()
|
||||||
self._context_updated_tasks.add(task)
|
|
||||||
task.add_done_callback(self._context_updated_task_finished)
|
|
||||||
|
|
||||||
async def _handle_function_call_cancel(self, frame: FunctionCallCancelFrame):
|
async def _handle_function_call_cancel(self, frame: FunctionCallCancelFrame):
|
||||||
logger.debug(
|
logger.debug(
|
||||||
@@ -539,13 +535,6 @@ class LLMAssistantContextAggregator(LLMContextResponseAggregator):
|
|||||||
else:
|
else:
|
||||||
self._aggregation += frame.text
|
self._aggregation += frame.text
|
||||||
|
|
||||||
def _context_updated_task_finished(self, task: asyncio.Task):
|
|
||||||
self._context_updated_tasks.discard(task)
|
|
||||||
# The task is finished so this should exit immediately. We need to do
|
|
||||||
# this because otherwise the task manager would report a dangling task
|
|
||||||
# if we don't remove it.
|
|
||||||
asyncio.run_coroutine_threadsafe(self.wait_for_task(task), self.get_event_loop())
|
|
||||||
|
|
||||||
|
|
||||||
class LLMUserResponseAggregator(LLMUserContextAggregator):
|
class LLMUserResponseAggregator(LLMUserContextAggregator):
|
||||||
def __init__(self, messages: List[dict] = [], **kwargs):
|
def __init__(self, messages: List[dict] = [], **kwargs):
|
||||||
|
|||||||
@@ -369,7 +369,7 @@ class LLMService(AIService):
|
|||||||
if tuple_to_remove:
|
if tuple_to_remove:
|
||||||
self._function_call_tasks.discard(tuple_to_remove)
|
self._function_call_tasks.discard(tuple_to_remove)
|
||||||
# The task is finished so this should exit immediately. We need to
|
# The task is finished so this should exit immediately. We need to
|
||||||
# do this because otherwise the task manager would report a dangling
|
# do this because otherwise the task manager would have a dangling
|
||||||
# task if we don't remove it.
|
# task if we don't remove it.
|
||||||
asyncio.run_coroutine_threadsafe(self.wait_for_task(task), self.get_event_loop())
|
asyncio.run_coroutine_threadsafe(self.wait_for_task(task), self.get_event_loop())
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user