2026-06-19 17:09:30.215 | INFO | pipecat::28 - ᓚᘏᗢ Pipecat 1.4.0 (Python 3.13.5 (main, May 5 2026, 21:05:52) [GCC 14.2.0]) ᓚᘏᗢ === LLMContextFrame === @dataclass class LLMContextFrame(Frame): """Frame containing a universal LLM context. Used as a signal to LLM services to ingest the provided context and generate a response based on it. Parameters: context: The LLM context containing messages, tools, and configuration. """ context: LLMContext === LLMMessagesAppendFrame === @dataclass class LLMMessagesAppendFrame(DataFrame): """Frame containing LLM messages to append to current context. A frame containing a list of LLM messages that need to be added to the current context. Parameters: messages: List of context messages to append. run_llm: Whether the context update should be sent to the LLM. """ messages: list[LLMContextMessage] run_llm: bool | None = None === LLMMessagesUpdateFrame === @dataclass class LLMMessagesUpdateFrame(DataFrame): """Frame containing LLM messages to replace current context. A frame containing a list of new LLM messages to replace the current context LLM messages. Parameters: messages: List of context messages to replace current context. run_llm: Whether the context update should be sent to the LLM. """ messages: list[LLMContextMessage] run_llm: bool | None = None === LLMContext.__init__ === def __init__( self, messages: list[LLMContextMessage] | None = None, tools: ToolsSchema | list[FunctionSchema | DirectFunction] | NotGiven = NOT_GIVEN, tool_choice: LLMContextToolChoice | NotGiven = NOT_GIVEN, ): """Initialize the LLM context. Args: messages: Initial list of conversation messages. tools: Available tools for the LLM to use. May be a ``ToolsSchema`` or a plain list of direct functions and/or ``FunctionSchema`` objects (normalized to a ``ToolsSchema`` internally). Any tool that carries a handler — a direct function, or a ``FunctionSchema`` with its ``handler`` set — is registered with the LLM service automatically, so no separate ``register_function`` call is needed. tool_choice: Tool selection strategy for the LLM. """ self._messages: list[LLMContextMessage] = messages if messages else [] self._tools: ToolsSchema | NotGiven = LLMContext._normalize_and_validate_tools(tools) self._tool_choice: LLMContextToolChoice | NotGiven = tool_choice