From 69ec549e88ce337ccea011c97ab23dc785ee8509 Mon Sep 17 00:00:00 2001 From: James Hush Date: Tue, 19 Nov 2024 16:40:29 +0800 Subject: [PATCH] Remove extra files --- examples/bigly-debug.patch | 106 -------------------------- examples/foundational/bad-snippet.log | 56 -------------- 2 files changed, 162 deletions(-) delete mode 100644 examples/bigly-debug.patch delete mode 100644 examples/foundational/bad-snippet.log diff --git a/examples/bigly-debug.patch b/examples/bigly-debug.patch deleted file mode 100644 index bc751b9fe..000000000 --- a/examples/bigly-debug.patch +++ /dev/null @@ -1,106 +0,0 @@ -diff --git a/src/pipecat/processors/frame_processor.py b/src/pipecat/processors/frame_processor.py -index 9f614ba..e7d3e0a 100644 ---- a/src/pipecat/processors/frame_processor.py -+++ b/src/pipecat/processors/frame_processor.py -@@ -245,7 +245,8 @@ class FrameProcessor: - logger.trace(f"Pushing {frame} upstream from {self} to {self._prev}") - await self._prev.queue_frame(frame, direction) - except Exception as e: -- logger.exception(f"Uncaught exception in {self}: {e}") -+ logger.exception(f"<> Uncaught exception in {self}: {e}") -+ raise Exception("internal_push_frame") from e - - def __create_input_task(self): - self.__input_queue = asyncio.Queue() -diff --git a/src/pipecat/services/ai_services.py b/src/pipecat/services/ai_services.py -index e0f16e2..5c374a0 100644 ---- a/src/pipecat/services/ai_services.py -+++ b/src/pipecat/services/ai_services.py -@@ -289,6 +289,7 @@ class TTSService(AIService): - - async def process_frame(self, frame: Frame, direction: FrameDirection): - await super().process_frame(frame, direction) -+ print(f"_---_ai_services.py process_frame * frame: {frame}") - - if isinstance(frame, TextFrame): - await self._process_text_frame(frame) -@@ -343,6 +344,7 @@ class TTSService(AIService): - await self._push_tts_frames(text) - - async def _push_tts_frames(self, text: str): -+ print(f"_____ai_services.py * push_tts_frames str: {str}") - # Don't send only whitespace. This causes problems for some TTS models. But also don't - # strip all whitespace, as whitespace can influence prosody. - if not text.strip(): -diff --git a/src/pipecat/services/cartesia.py b/src/pipecat/services/cartesia.py -index 7fad02f..276b172 100644 ---- a/src/pipecat/services/cartesia.py -+++ b/src/pipecat/services/cartesia.py -@@ -137,6 +137,7 @@ class CartesiaTTSService(WordTTSService): - def _build_msg( - self, text: str = "", continue_transcript: bool = True, add_timestamps: bool = True - ): -+ print(f"_____cartesia.py * _build_msg str: {str}") - voice_config = {} - voice_config["mode"] = "id" - voice_config["id"] = self._voice_id -diff --git a/src/pipecat/services/openai.py b/src/pipecat/services/openai.py -index b6927e8..df9715b 100644 ---- a/src/pipecat/services/openai.py -+++ b/src/pipecat/services/openai.py -@@ -166,6 +166,7 @@ class BaseOpenAILLMService(LLMService): - params.update(self._settings["extra"]) - - chunks = await self._client.chat.completions.create(**params) -+ print(f"_____openai.py get_chat_completions * chunks: {chunks}") - return chunks - - async def _stream_chat_completions( -@@ -202,6 +203,7 @@ class BaseOpenAILLMService(LLMService): - function_name = "" - arguments = "" - tool_call_id = "" -+ print(f"_____openai.py * _process_context: tool_call_id", tool_call_id) - - await self.start_ttfb_metrics() - -@@ -210,6 +212,7 @@ class BaseOpenAILLMService(LLMService): - ) - - async for chunk in chunk_stream: -+ # print(f"___*__openai.py * chunk: {chunk}") - if chunk.usage: - tokens = LLMTokenUsage( - prompt_tokens=chunk.usage.prompt_tokens, -@@ -237,7 +240,7 @@ class BaseOpenAILLMService(LLMService): - # We accumulate all the arguments for the rest of the streamed response, then when - # the response is done, we package up all the arguments and the function name and - # yield a frame containing the function name and the arguments. -- -+ print(f"___________________________openai.py * tool_call_id: {tool_call_id}") - tool_call = chunk.choices[0].delta.tool_calls[0] - if tool_call.index != func_idx: - functions_list.append(function_name) -@@ -503,6 +506,7 @@ class OpenAIAssistantContextAggregator(LLMAssistantContextAggregator): - - async def process_frame(self, frame, direction): - await super().process_frame(frame, direction) -+ print(f"___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : {frame}") - # See note above about not calling push_frame() here. - if isinstance(frame, StartInterruptionFrame): - self._function_calls_in_progress.clear() -@@ -525,11 +529,14 @@ class OpenAIAssistantContextAggregator(LLMAssistantContextAggregator): - elif isinstance(frame, OpenAIImageMessageFrame): - self._pending_image_frame_message = frame - await self._push_aggregation() -+ else: -+ print(f"___<2>__openai.py * OpenAIAssistantContextAggregator process_frame frame : {frame}") - - async def _push_aggregation(self): - if not ( - self._aggregation or self._function_call_result or self._pending_image_frame_message - ): -+ print(f"_____openai.py * return from push_aggregation__________") - return - - run_llm = False diff --git a/examples/foundational/bad-snippet.log b/examples/foundational/bad-snippet.log deleted file mode 100644 index 0f0e36cf4..000000000 --- a/examples/foundational/bad-snippet.log +++ /dev/null @@ -1,56 +0,0 @@ -BAD - -2024-11-18 20:36:51.394 | DEBUG | pipecat.transports.base_input:_handle_interruptions:124 - User started speaking -_---_ai_services.py process_frame * frame: StartInterruptionFrame#13 -_____openai.py * return from push_aggregation__________ -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : StartInterruptionFrame#13 -_---_ai_services.py process_frame * frame: UserStartedSpeakingFrame#13 -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : UserStartedSpeakingFrame#13 -___<2>__openai.py * OpenAIAssistantContextAggregator process_frame frame : UserStartedSpeakingFrame#13 -2024-11-18 20:36:52.714 | DEBUG | pipecat.transports.base_input:_handle_interruptions:131 - User stopped speaking -_---_ai_services.py process_frame * frame: StopInterruptionFrame#13 -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : StopInterruptionFrame#13 -___<2>__openai.py * OpenAIAssistantContextAggregator process_frame frame : StopInterruptionFrame#13 -_---_ai_services.py process_frame * frame: UserStoppedSpeakingFrame#13 -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : UserStoppedSpeakingFrame#13 -___<2>__openai.py * OpenAIAssistantContextAggregator process_frame frame : UserStoppedSpeakingFrame#13 -_____openai.py * _process_context: tool_call_id -2024-11-18 20:36:52.715 | DEBUG | pipecat.services.openai:_stream_chat_completions:175 - Generating chat: [{"role": "system", "content": "Main Prompt", "name": "system"}, {"role": "assistant", "content": "I'm ready to help. What do you need assistance with today?"}, {"role": "user", "content": "Hello? Can you call me"}, {"role": "user", "content": "a meeting option?"}, {"role": "assistant", "content": "", "tool_calls": [{"id": "call_vYUGnPvKR00EIZvqfQkKQ6ny", "function": {"name": "get_meeting_dates", "arguments": "{}"}, "type": "function"}]}, {"role": "tool", "content": "\"\\n \\\"1- 8AM Eastern on November 16 2024\\n\\n2- 9AM Eastern on November 16 2024\\n\\n3- 10AM Eastern on November 16 2024\\n\\n4- 11AM Eastern on November 16 2024\\n\\n5- 12PM Eastern on November 16 2024\\n\\n6- 1PM Eastern on November 16 2024\\n\\n7- 2PM Eastern on November 16 2024\\n\\n8- 3PM Eastern on November 16 2024\\n\\n9- 4PM Eastern on November 16 2024\\n\\n10- 5PM Eastern on November 16 2024\\n\\n11- 6PM Eastern on November 16 2024\\n\\n12- 7PM Eastern on November 16 2024\\n\\n\\\"\\n \"", "tool_call_id": "call_vYUGnPvKR00EIZvqfQkKQ6ny"}, {"role": "assistant", "content": "Here are the available meeting slots on November 16, 2024: 1. 8"}, {"role": "user", "content": "Can you tell me about a"}, {"role": "assistant", "content": "Could"}, {"role": "user", "content": "solar panel? Okay."}, {"role": "assistant", "content": "", "tool_calls": [{"id": "call_MNTgAllUH5r8qbrj7JfxxYDs", "function": {"name": "get_knowledge_base", "arguments": "{\"question\": \"solar panel\", \"reason\": \"GENERAL_QUESTION\"}"}, "type": "function"}]}, {"role": "tool", "content": "\"Sure! Here are some random facts that could be associated with a solar panel company: 1. **History**: The company was founded in 2008 by a group of renewable energy enthusiasts who wanted to make solar power more accessible to homeowners and businesses. 2. **Headquarters**: Their headquarters is a net-zero energy building powered entirely by their own solar panels, showcasing their commitment to sustainability. 3. **Products**: They produce three main types of solar panels: monocrystalline, polycrystalline, and thin-film, catering to different customer needs and budgets. 4. **Innovation**: The company holds patents for advanced solar cell technology that increases efficiency by 20% compared to industry standards. 5. **Global Reach**: They have installed solar systems in over 40 countries and have manufacturing plants on three continents.6. **Community Impact**: For every 100 solar panels sold, they donate a panel to a school or community center in underprivileged areas. 7. **Workforce**: The company employs over 5,000 people, 40% of whom are in research and development roles. 8. **Recognition**: They won the \\u201cGreen Energy Innovator of the Year\\u201d award in 2022 for their work on solar panels made from recycled materials. 9. **Sustainability**: Their panels are designed to last 25+ years and are 95% recyclable at the end of their life cycle. 10. **Customer Perks**: They offer a 25-year warranty and real-time monitoring systems that allow users to track energy production via an app. 11. **Mission Statement**: \\\"Empowering the world with clean energy, one panel at a time.\\\" 12. **Energy Production**: The combined output of all their installations generates enough electricity to power over 2 million homes annually. 13. **R&D Efforts**: They are actively working on integrating solar panels into everyday items like backpacks and electric vehicles. 14. **Solar Farms**: The company has partnered with governments to develop large-scale solar farms, including one that spans over 10,000 acres. 15. **Future Goals**: By 2030, they aim to make solar power the most affordable energy source worldwide. Would you like these customized for a specific scenario?\"", "tool_call_id": "call_MNTgAllUH5r8qbrj7JfxxYDs"}, {"role": "assistant", "content": "Here's some information related to"}, {"role": "user", "content": "Can you tell me"}, {"role": "user", "content": "about"}, {"role": "assistant", "content": "Could"}, {"role": "user", "content": "a solar panel."}, {"role": "assistant", "content": "", "tool_calls": [{"id": "call_41inbmYQzvhWSTU0cXd3EqRF", "function": {"name": "get_knowledge_base", "arguments": "{\"question\": \"about a solar panel\", \"reason\": \"GENERAL_QUESTION\"}"}, "type": "function"}]}, {"role": "tool", "content": "\"Sure! Here are some random facts that could be associated with a solar panel company: 1. **History**: The company was founded in 2008 by a group of renewable energy enthusiasts who wanted to make solar power more accessible to homeowners and businesses. 2. **Headquarters**: Their headquarters is a net-zero energy building powered entirely by their own solar panels, showcasing their commitment to sustainability. 3. **Products**: They produce three main types of solar panels: monocrystalline, polycrystalline, and thin-film, catering to different customer needs and budgets. 4. **Innovation**: The company holds patents for advanced solar cell technology that increases efficiency by 20% compared to industry standards. 5. **Global Reach**: They have installed solar systems in over 40 countries and have manufacturing plants on three continents.6. **Community Impact**: For every 100 solar panels sold, they donate a panel to a school or community center in underprivileged areas. 7. **Workforce**: The company employs over 5,000 people, 40% of whom are in research and development roles. 8. **Recognition**: They won the \\u201cGreen Energy Innovator of the Year\\u201d award in 2022 for their work on solar panels made from recycled materials. 9. **Sustainability**: Their panels are designed to last 25+ years and are 95% recyclable at the end of their life cycle. 10. **Customer Perks**: They offer a 25-year warranty and real-time monitoring systems that allow users to track energy production via an app. 11. **Mission Statement**: \\\"Empowering the world with clean energy, one panel at a time.\\\" 12. **Energy Production**: The combined output of all their installations generates enough electricity to power over 2 million homes annually. 13. **R&D Efforts**: They are actively working on integrating solar panels into everyday items like backpacks and electric vehicles. 14. **Solar Farms**: The company has partnered with governments to develop large-scale solar farms, including one that spans over 10,000 acres. 15. **Future Goals**: By 2030, they aim to make solar power the most affordable energy source worldwide. Would you like these customized for a specific scenario?\"", "tool_call_id": "call_41inbmYQzvhWSTU0cXd3EqRF"}, {"role": "assistant", "content": "Here's some information about solar panels and a related company: 1. **History**: The company began in 2008,"}, {"role": "user", "content": "Okay. Hey. Can you tell me what are my meeting time options?"}, {"role": "assistant", "content": "Here are your available meeting time options on November 16, 2024: 1. 8 AM Eastern"}, {"role": "user", "content": "What, are some times that I can meet?"}, {"role": "user", "content": "With people November."}, {"role": "assistant", "content": "Here are the available meeting slots on November 16, 2024: 1. 8 AM Eastern 2. 9 AM Eastern 3. 10 AM Eastern"}, {"role": "user", "content": "What is 9"}, {"role": "user", "content": "that I can meet people?"}, {"role": "assistant", "content": "On November 16, 2024, you can meet people at the following times"}, {"role": "user", "content": "And you tell me"}, {"role": "user", "content": "about"}] -_____openai.py get_chat_completions * chunks: -2024-11-18 20:36:53.205 | DEBUG | pipecat.transports.base_input:_handle_interruptions:124 - User started speaking -_---_ai_services.py process_frame * frame: StartInterruptionFrame#14 -_____openai.py * return from push_aggregation__________ -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : StartInterruptionFrame#14 -_---_ai_services.py process_frame * frame: UserStartedSpeakingFrame#14 -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : UserStartedSpeakingFrame#14 -___<2>__openai.py * OpenAIAssistantContextAggregator process_frame frame : UserStartedSpeakingFrame#14 -2024-11-18 20:36:54.684 | DEBUG | pipecat.transports.base_input:_handle_interruptions:131 - User stopped speaking -_---_ai_services.py process_frame * frame: StopInterruptionFrame#14 -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : StopInterruptionFrame#14 -___<2>__openai.py * OpenAIAssistantContextAggregator process_frame frame : StopInterruptionFrame#14 -_---_ai_services.py process_frame * frame: UserStoppedSpeakingFrame#14 -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : UserStoppedSpeakingFrame#14 -___<2>__openai.py * OpenAIAssistantContextAggregator process_frame frame : UserStoppedSpeakingFrame#14 -_____openai.py * _process_context: tool_call_id -2024-11-18 20:36:54.685 | DEBUG | pipecat.services.openai:_stream_chat_completions:175 - Generating chat: [{"role": "system", "content": "Main Prompt", "name": "system"}, {"role": "assistant", "content": "I'm ready to help. What do you need assistance with today?"}, {"role": "user", "content": "Hello? Can you call me"}, {"role": "user", "content": "a meeting option?"}, {"role": "assistant", "content": "", "tool_calls": [{"id": "call_vYUGnPvKR00EIZvqfQkKQ6ny", "function": {"name": "get_meeting_dates", "arguments": "{}"}, "type": "function"}]}, {"role": "tool", "content": "\"\\n \\\"1- 8AM Eastern on November 16 2024\\n\\n2- 9AM Eastern on November 16 2024\\n\\n3- 10AM Eastern on November 16 2024\\n\\n4- 11AM Eastern on November 16 2024\\n\\n5- 12PM Eastern on November 16 2024\\n\\n6- 1PM Eastern on November 16 2024\\n\\n7- 2PM Eastern on November 16 2024\\n\\n8- 3PM Eastern on November 16 2024\\n\\n9- 4PM Eastern on November 16 2024\\n\\n10- 5PM Eastern on November 16 2024\\n\\n11- 6PM Eastern on November 16 2024\\n\\n12- 7PM Eastern on November 16 2024\\n\\n\\\"\\n \"", "tool_call_id": "call_vYUGnPvKR00EIZvqfQkKQ6ny"}, {"role": "assistant", "content": "Here are the available meeting slots on November 16, 2024: 1. 8"}, {"role": "user", "content": "Can you tell me about a"}, {"role": "assistant", "content": "Could"}, {"role": "user", "content": "solar panel? Okay."}, {"role": "assistant", "content": "", "tool_calls": [{"id": "call_MNTgAllUH5r8qbrj7JfxxYDs", "function": {"name": "get_knowledge_base", "arguments": "{\"question\": \"solar panel\", \"reason\": \"GENERAL_QUESTION\"}"}, "type": "function"}]}, {"role": "tool", "content": "\"Sure! Here are some random facts that could be associated with a solar panel company: 1. **History**: The company was founded in 2008 by a group of renewable energy enthusiasts who wanted to make solar power more accessible to homeowners and businesses. 2. **Headquarters**: Their headquarters is a net-zero energy building powered entirely by their own solar panels, showcasing their commitment to sustainability. 3. **Products**: They produce three main types of solar panels: monocrystalline, polycrystalline, and thin-film, catering to different customer needs and budgets. 4. **Innovation**: The company holds patents for advanced solar cell technology that increases efficiency by 20% compared to industry standards. 5. **Global Reach**: They have installed solar systems in over 40 countries and have manufacturing plants on three continents.6. **Community Impact**: For every 100 solar panels sold, they donate a panel to a school or community center in underprivileged areas. 7. **Workforce**: The company employs over 5,000 people, 40% of whom are in research and development roles. 8. **Recognition**: They won the \\u201cGreen Energy Innovator of the Year\\u201d award in 2022 for their work on solar panels made from recycled materials. 9. **Sustainability**: Their panels are designed to last 25+ years and are 95% recyclable at the end of their life cycle. 10. **Customer Perks**: They offer a 25-year warranty and real-time monitoring systems that allow users to track energy production via an app. 11. **Mission Statement**: \\\"Empowering the world with clean energy, one panel at a time.\\\" 12. **Energy Production**: The combined output of all their installations generates enough electricity to power over 2 million homes annually. 13. **R&D Efforts**: They are actively working on integrating solar panels into everyday items like backpacks and electric vehicles. 14. **Solar Farms**: The company has partnered with governments to develop large-scale solar farms, including one that spans over 10,000 acres. 15. **Future Goals**: By 2030, they aim to make solar power the most affordable energy source worldwide. Would you like these customized for a specific scenario?\"", "tool_call_id": "call_MNTgAllUH5r8qbrj7JfxxYDs"}, {"role": "assistant", "content": "Here's some information related to"}, {"role": "user", "content": "Can you tell me"}, {"role": "user", "content": "about"}, {"role": "assistant", "content": "Could"}, {"role": "user", "content": "a solar panel."}, {"role": "assistant", "content": "", "tool_calls": [{"id": "call_41inbmYQzvhWSTU0cXd3EqRF", "function": {"name": "get_knowledge_base", "arguments": "{\"question\": \"about a solar panel\", \"reason\": \"GENERAL_QUESTION\"}"}, "type": "function"}]}, {"role": "tool", "content": "\"Sure! Here are some random facts that could be associated with a solar panel company: 1. **History**: The company was founded in 2008 by a group of renewable energy enthusiasts who wanted to make solar power more accessible to homeowners and businesses. 2. **Headquarters**: Their headquarters is a net-zero energy building powered entirely by their own solar panels, showcasing their commitment to sustainability. 3. **Products**: They produce three main types of solar panels: monocrystalline, polycrystalline, and thin-film, catering to different customer needs and budgets. 4. **Innovation**: The company holds patents for advanced solar cell technology that increases efficiency by 20% compared to industry standards. 5. **Global Reach**: They have installed solar systems in over 40 countries and have manufacturing plants on three continents.6. **Community Impact**: For every 100 solar panels sold, they donate a panel to a school or community center in underprivileged areas. 7. **Workforce**: The company employs over 5,000 people, 40% of whom are in research and development roles. 8. **Recognition**: They won the \\u201cGreen Energy Innovator of the Year\\u201d award in 2022 for their work on solar panels made from recycled materials. 9. **Sustainability**: Their panels are designed to last 25+ years and are 95% recyclable at the end of their life cycle. 10. **Customer Perks**: They offer a 25-year warranty and real-time monitoring systems that allow users to track energy production via an app. 11. **Mission Statement**: \\\"Empowering the world with clean energy, one panel at a time.\\\" 12. **Energy Production**: The combined output of all their installations generates enough electricity to power over 2 million homes annually. 13. **R&D Efforts**: They are actively working on integrating solar panels into everyday items like backpacks and electric vehicles. 14. **Solar Farms**: The company has partnered with governments to develop large-scale solar farms, including one that spans over 10,000 acres. 15. **Future Goals**: By 2030, they aim to make solar power the most affordable energy source worldwide. Would you like these customized for a specific scenario?\"", "tool_call_id": "call_41inbmYQzvhWSTU0cXd3EqRF"}, {"role": "assistant", "content": "Here's some information about solar panels and a related company: 1. **History**: The company began in 2008,"}, {"role": "user", "content": "Okay. Hey. Can you tell me what are my meeting time options?"}, {"role": "assistant", "content": "Here are your available meeting time options on November 16, 2024: 1. 8 AM Eastern"}, {"role": "user", "content": "What, are some times that I can meet?"}, {"role": "user", "content": "With people November."}, {"role": "assistant", "content": "Here are the available meeting slots on November 16, 2024: 1. 8 AM Eastern 2. 9 AM Eastern 3. 10 AM Eastern"}, {"role": "user", "content": "What is 9"}, {"role": "user", "content": "that I can meet people?"}, {"role": "assistant", "content": "On November 16, 2024, you can meet people at the following times"}, {"role": "user", "content": "And you tell me"}, {"role": "user", "content": "about"}, {"role": "user", "content": "the solar panel company?"}] -_____openai.py get_chat_completions * chunks: -___________________________openai.py * tool_call_id: -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -___________________________openai.py * tool_call_id: call_jSwnaZ6kGhloYewfltQWjitZ -2024-11-18 20:36:55.720 | INFO | pipecat.processors.aggregators.openai_llm_context:call_function:195 - Calling function get_knowledge_base with arguments {'question': 'the solar panel company', 'reason': 'GENERAL_QUESTION'} -_---_ai_services.py process_frame * frame: FunctionCallInProgressFrame#3 -___<1>__openai.py * OpenAIAssistantContextAggregator process_frame frame : FunctionCallInProgressFrame#3 -2024-11-18 20:36:55.721 | DEBUG | pipecat.services.openai:process_frame:515 - FunctionCallInProgressFrame: FunctionCallInProgressFrame#3 -2024-11-18 20:36:55.721 | INFO | __main__:get_knowledge_base:240 - Invoking `get_knowledge_base` tool with argument {'question': 'the solar panel company', 'reason': 'GENERAL_QUESTION'}