models
RTVI protocol v1 message models.
Contains all RTVI protocol v1 message definitions and data structures.
Import this module under the RTVI alias to use as a namespace:
import pipecat.processors.frameworks.rtvi.models as RTVI
msg = RTVI.BotReady(id="1", data=RTVI.BotReadyData(version=RTVI.PROTOCOL_VERSION))
- class pipecat.processors.frameworks.rtvi.models.Message(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: str, id: str, data: dict[str, Any] | None = None)[source]
Bases:
BaseModelBase RTVI message structure.
Represents the standard format for RTVI protocol messages.
- label: Literal['rtvi-ai']
- type: str
- id: str
- data: dict[str, Any] | None
- class pipecat.processors.frameworks.rtvi.models.RawClientMessageData(*, t: str, d: Any | None = None)[source]
Bases:
BaseModelData structure expected from client messages sent to the RTVI server.
- t: str
- d: Any | None
- class pipecat.processors.frameworks.rtvi.models.ClientMessage(*, msg_id: str, type: str, data: Any | None = None)[source]
Bases:
BaseModelCleansed data structure for client messages for handling.
- msg_id: str
- type: str
- data: Any | None
- class pipecat.processors.frameworks.rtvi.models.RawServerResponseData(*, t: str, d: Any | None = None)[source]
Bases:
BaseModelData structure for server responses to client messages.
- t: str
- d: Any | None
- class pipecat.processors.frameworks.rtvi.models.ServerResponse(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['server-response'] = 'server-response', id: str, data: RawServerResponseData)[source]
Bases:
BaseModelThe RTVI-formatted message response from the server to the client.
This message is used to respond to custom messages sent by the client.
- label: Literal['rtvi-ai']
- type: Literal['server-response']
- id: str
- data: RawServerResponseData
- class pipecat.processors.frameworks.rtvi.models.AboutClientData(*, library: str, library_version: str | None = None, platform: str | None = None, platform_version: str | None = None, platform_details: Any | None = None)[source]
Bases:
BaseModelData about the RTVI client.
Contains information about the client, including which RTVI library it is using, what platform it is on and any additional details, if available.
- library: str
- library_version: str | None
- platform: str | None
- platform_version: str | None
- platform_details: Any | None
- class pipecat.processors.frameworks.rtvi.models.ClientReadyData(*, version: str, about: AboutClientData)[source]
Bases:
BaseModelData format of client ready messages.
Contains the RTVI protocol version and client information.
- version: str
- about: AboutClientData
- class pipecat.processors.frameworks.rtvi.models.ErrorResponseData(*, error: str)[source]
Bases:
BaseModelData for an RTVI error response.
Contains the error message to send back to the client.
- error: str
- class pipecat.processors.frameworks.rtvi.models.ErrorResponse(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['error-response'] = 'error-response', id: str, data: ErrorResponseData)[source]
Bases:
BaseModelRTVI error response message.
RTVI formatted error response message for relaying failed client requests.
- label: Literal['rtvi-ai']
- type: Literal['error-response']
- id: str
- data: ErrorResponseData
- class pipecat.processors.frameworks.rtvi.models.ErrorData(*, error: str, fatal: bool)[source]
Bases:
BaseModelData for an RTVI error event.
Contains error information including whether it’s fatal.
- error: str
- fatal: bool
- class pipecat.processors.frameworks.rtvi.models.Error(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['error'] = 'error', data: ErrorData)[source]
Bases:
BaseModelRTVI error event message.
RTVI formatted error message for relaying errors in the pipeline.
- label: Literal['rtvi-ai']
- type: Literal['error']
- class pipecat.processors.frameworks.rtvi.models.BotReadyData(*, version: str, about: Mapping[str, Any] | None = None)[source]
Bases:
BaseModelData for bot ready notification.
Contains protocol version and initial configuration.
- version: str
- about: Mapping[str, Any] | None
- class pipecat.processors.frameworks.rtvi.models.BotReady(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-ready'] = 'bot-ready', id: str, data: BotReadyData)[source]
Bases:
BaseModelMessage indicating bot is ready for interaction.
Sent after bot initialization is complete.
- label: Literal['rtvi-ai']
- type: Literal['bot-ready']
- id: str
- data: BotReadyData
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallMessageData(*, function_name: str, tool_call_id: str, args: Mapping[str, Any])[source]
Bases:
BaseModelData for LLM function call notification.
Contains function call details including name, ID, and arguments.
Deprecated since version 0.0.102: Use
LLMFunctionCallInProgressMessageDatainstead.- function_name: str
- tool_call_id: str
- args: Mapping[str, Any]
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['llm-function-call'] = 'llm-function-call', data: LLMFunctionCallMessageData)[source]
Bases:
BaseModelMessage notifying of an LLM function call.
Sent when the LLM makes a function call.
Deprecated since version 0.0.102: Use
LLMFunctionCallInProgressMessagewith thellm-function-call-in-progressevent type instead.- label: Literal['rtvi-ai']
- type: Literal['llm-function-call']
- class pipecat.processors.frameworks.rtvi.models.SendTextOptions(*, run_immediately: bool = True, audio_response: bool = True)[source]
Bases:
BaseModelOptions for sending text input to the LLM.
Contains options for how the pipeline should process the text input.
- run_immediately: bool
- audio_response: bool
- class pipecat.processors.frameworks.rtvi.models.SendTextData(*, content: str, options: SendTextOptions | None = None)[source]
Bases:
BaseModelData format for sending text input to the LLM.
Contains the text content to send and any options for how the pipeline should process it.
- content: str
- options: SendTextOptions | None
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallStartMessageData(*, function_name: str | None = None)[source]
Bases:
BaseModelData for LLM function call start notification.
Contains the function name being called. Fields may be omitted based on the configured function_call_report_level for security.
- function_name: str | None
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallStartMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['llm-function-call-started'] = 'llm-function-call-started', data: LLMFunctionCallStartMessageData)[source]
Bases:
BaseModelMessage notifying that an LLM function call has started.
Sent when the LLM begins a function call.
- label: Literal['rtvi-ai']
- type: Literal['llm-function-call-started']
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallResultData(*, function_name: str, tool_call_id: str, arguments: dict, result: dict | str)[source]
Bases:
BaseModelData for LLM function call result.
Contains function call details and result.
- function_name: str
- tool_call_id: str
- arguments: dict
- result: dict | str
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallInProgressMessageData(*, tool_call_id: str, function_name: str | None = None, arguments: Mapping[str, Any] | None = None)[source]
Bases:
BaseModelData for LLM function call in-progress notification.
Contains function call details including name, ID, and arguments. Fields may be omitted based on the configured function_call_report_level for security.
- tool_call_id: str
- function_name: str | None
- arguments: Mapping[str, Any] | None
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallInProgressMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['llm-function-call-in-progress'] = 'llm-function-call-in-progress', data: LLMFunctionCallInProgressMessageData)[source]
Bases:
BaseModelMessage notifying that an LLM function call is in progress.
Sent when the LLM function call execution begins.
- label: Literal['rtvi-ai']
- type: Literal['llm-function-call-in-progress']
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallStoppedMessageData(*, tool_call_id: str, cancelled: bool, function_name: str | None = None, result: Any | None = None)[source]
Bases:
BaseModelData for LLM function call stopped notification.
Contains details about the function call that stopped, including whether it was cancelled or completed with a result. Fields may be omitted based on the configured function_call_report_level for security.
- tool_call_id: str
- cancelled: bool
- function_name: str | None
- result: Any | None
- class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallStoppedMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['llm-function-call-stopped'] = 'llm-function-call-stopped', data: LLMFunctionCallStoppedMessageData)[source]
Bases:
BaseModelMessage notifying that an LLM function call has stopped.
Sent when a function call completes (with result) or is cancelled.
- label: Literal['rtvi-ai']
- type: Literal['llm-function-call-stopped']
- class pipecat.processors.frameworks.rtvi.models.BotLLMStartedMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-llm-started'] = 'bot-llm-started')[source]
Bases:
BaseModelMessage indicating bot LLM processing has started.
- label: Literal['rtvi-ai']
- type: Literal['bot-llm-started']
- class pipecat.processors.frameworks.rtvi.models.BotLLMStoppedMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-llm-stopped'] = 'bot-llm-stopped')[source]
Bases:
BaseModelMessage indicating bot LLM processing has stopped.
- label: Literal['rtvi-ai']
- type: Literal['bot-llm-stopped']
- class pipecat.processors.frameworks.rtvi.models.BotTTSStartedMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-tts-started'] = 'bot-tts-started')[source]
Bases:
BaseModelMessage indicating bot TTS processing has started.
- label: Literal['rtvi-ai']
- type: Literal['bot-tts-started']
- class pipecat.processors.frameworks.rtvi.models.BotTTSStoppedMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-tts-stopped'] = 'bot-tts-stopped')[source]
Bases:
BaseModelMessage indicating bot TTS processing has stopped.
- label: Literal['rtvi-ai']
- type: Literal['bot-tts-stopped']
- class pipecat.processors.frameworks.rtvi.models.TextMessageData(*, text: str)[source]
Bases:
BaseModelData for text-based RTVI messages.
Contains text content.
- text: str
- class pipecat.processors.frameworks.rtvi.models.BotOutputMessageData(*, text: str, spoken: bool = False, aggregated_by: AggregationType | str)[source]
Bases:
TextMessageDataData for bot output RTVI messages.
Extends TextMessageData to include metadata about the output.
- spoken: bool
- aggregated_by: AggregationType | str
- class pipecat.processors.frameworks.rtvi.models.BotOutputMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-output'] = 'bot-output', data: BotOutputMessageData)[source]
Bases:
BaseModelMessage containing bot output text.
An event meant to holistically represent what the bot is outputting, along with metadata about the output and if it has been spoken.
- label: Literal['rtvi-ai']
- type: Literal['bot-output']
- data: BotOutputMessageData
- class pipecat.processors.frameworks.rtvi.models.BotTranscriptionMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-transcription'] = 'bot-transcription', data: TextMessageData)[source]
Bases:
BaseModelMessage containing bot transcription text.
Sent when the bot’s speech is transcribed.
- label: Literal['rtvi-ai']
- type: Literal['bot-transcription']
- data: TextMessageData
- class pipecat.processors.frameworks.rtvi.models.BotLLMTextMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-llm-text'] = 'bot-llm-text', data: TextMessageData)[source]
Bases:
BaseModelMessage containing bot LLM text output.
Sent when the bot’s LLM generates text.
- label: Literal['rtvi-ai']
- type: Literal['bot-llm-text']
- data: TextMessageData
- class pipecat.processors.frameworks.rtvi.models.BotTTSTextMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-tts-text'] = 'bot-tts-text', data: TextMessageData)[source]
Bases:
BaseModelMessage containing bot TTS text output.
Sent when text is being processed by TTS.
- label: Literal['rtvi-ai']
- type: Literal['bot-tts-text']
- data: TextMessageData
- class pipecat.processors.frameworks.rtvi.models.AudioMessageData(*, audio: str, sample_rate: int, num_channels: int)[source]
Bases:
BaseModelData for audio-based RTVI messages.
Contains audio data and metadata.
- audio: str
- sample_rate: int
- num_channels: int
- class pipecat.processors.frameworks.rtvi.models.BotTTSAudioMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-tts-audio'] = 'bot-tts-audio', data: AudioMessageData)[source]
Bases:
BaseModelMessage containing bot TTS audio output.
Sent when the bot’s TTS generates audio.
- label: Literal['rtvi-ai']
- type: Literal['bot-tts-audio']
- data: AudioMessageData
- class pipecat.processors.frameworks.rtvi.models.UserTranscriptionMessageData(*, text: str, user_id: str, timestamp: str, final: bool)[source]
Bases:
BaseModelData for user transcription messages.
Contains transcription text and metadata.
- text: str
- user_id: str
- timestamp: str
- final: bool
- class pipecat.processors.frameworks.rtvi.models.UserTranscriptionMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['user-transcription'] = 'user-transcription', data: UserTranscriptionMessageData)[source]
Bases:
BaseModelMessage containing user transcription.
Sent when user speech is transcribed.
- label: Literal['rtvi-ai']
- type: Literal['user-transcription']
- class pipecat.processors.frameworks.rtvi.models.UserLLMTextMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['user-llm-text'] = 'user-llm-text', data: TextMessageData)[source]
Bases:
BaseModelMessage containing user text input for LLM.
Sent when user text is processed by the LLM.
- label: Literal['rtvi-ai']
- type: Literal['user-llm-text']
- data: TextMessageData
- class pipecat.processors.frameworks.rtvi.models.UserStartedSpeakingMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['user-started-speaking'] = 'user-started-speaking')[source]
Bases:
BaseModelMessage indicating user has started speaking.
- label: Literal['rtvi-ai']
- type: Literal['user-started-speaking']
- class pipecat.processors.frameworks.rtvi.models.UserStoppedSpeakingMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['user-stopped-speaking'] = 'user-stopped-speaking')[source]
Bases:
BaseModelMessage indicating user has stopped speaking.
- label: Literal['rtvi-ai']
- type: Literal['user-stopped-speaking']
- class pipecat.processors.frameworks.rtvi.models.UserMuteStartedMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['user-mute-started'] = 'user-mute-started')[source]
Bases:
BaseModelMessage indicating user has been muted.
- label: Literal['rtvi-ai']
- type: Literal['user-mute-started']
- class pipecat.processors.frameworks.rtvi.models.UserMuteStoppedMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['user-mute-stopped'] = 'user-mute-stopped')[source]
Bases:
BaseModelMessage indicating user has been unmuted.
- label: Literal['rtvi-ai']
- type: Literal['user-mute-stopped']
- class pipecat.processors.frameworks.rtvi.models.BotStartedSpeakingMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-started-speaking'] = 'bot-started-speaking')[source]
Bases:
BaseModelMessage indicating bot has started speaking.
- label: Literal['rtvi-ai']
- type: Literal['bot-started-speaking']
- class pipecat.processors.frameworks.rtvi.models.BotStoppedSpeakingMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-stopped-speaking'] = 'bot-stopped-speaking')[source]
Bases:
BaseModelMessage indicating bot has stopped speaking.
- label: Literal['rtvi-ai']
- type: Literal['bot-stopped-speaking']
- class pipecat.processors.frameworks.rtvi.models.MetricsMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['metrics'] = 'metrics', data: Mapping[str, Any])[source]
Bases:
BaseModelMessage containing performance metrics.
Sent to provide performance and usage metrics.
- label: Literal['rtvi-ai']
- type: Literal['metrics']
- data: Mapping[str, Any]
- class pipecat.processors.frameworks.rtvi.models.ServerMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['server-message'] = 'server-message', data: Any)[source]
Bases:
BaseModelGeneric server message.
Used for custom server-to-client messages.
- label: Literal['rtvi-ai']
- type: Literal['server-message']
- data: Any
- class pipecat.processors.frameworks.rtvi.models.AudioLevelMessageData(*, value: float)[source]
Bases:
BaseModelData format for sending audio levels.
- value: float
- class pipecat.processors.frameworks.rtvi.models.UserAudioLevelMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['user-audio-level'] = 'user-audio-level', data: AudioLevelMessageData)[source]
Bases:
BaseModelMessage indicating user audio level.
- label: Literal['rtvi-ai']
- type: Literal['user-audio-level']
- data: AudioLevelMessageData
- class pipecat.processors.frameworks.rtvi.models.BotAudioLevelMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-audio-level'] = 'bot-audio-level', data: AudioLevelMessageData)[source]
Bases:
BaseModelMessage indicating bot audio level.
- label: Literal['rtvi-ai']
- type: Literal['bot-audio-level']
- data: AudioLevelMessageData
- class pipecat.processors.frameworks.rtvi.models.SystemLogMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['system-log'] = 'system-log', data: TextMessageData)[source]
Bases:
BaseModelMessage including a system log.
- label: Literal['rtvi-ai']
- type: Literal['system-log']
- data: TextMessageData