Implement initial generated opener logic in DuplexPipeline to utilize tool-capable assistant turns when tools are available. Update tests to verify the correct behavior of the generated opener under various conditions, ensuring proper handling of user input and task management.
This commit is contained in:
@@ -955,6 +955,16 @@ class DuplexPipeline:
|
||||
if not self._bot_starts_first():
|
||||
return
|
||||
|
||||
if self._generated_opener_enabled() and self._resolved_tool_schemas():
|
||||
# Run generated opener as a normal tool-capable assistant turn.
|
||||
# Use an empty user input so the opener can be driven by system prompt policy.
|
||||
if self._current_turn_task and not self._current_turn_task.done():
|
||||
logger.info("Skip initial generated opener: assistant turn already in progress")
|
||||
return
|
||||
self._current_turn_task = asyncio.create_task(self._handle_turn(""))
|
||||
logger.info("Initial generated opener started with tool-calling path")
|
||||
return
|
||||
|
||||
greeting_to_speak = self.conversation.greeting
|
||||
if self._generated_opener_enabled():
|
||||
generated_greeting = await self._generate_runtime_greeting()
|
||||
|
||||
Reference in New Issue
Block a user