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: BaseModel

Base 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: BaseModel

Data 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: BaseModel

Cleansed 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: BaseModel

Data 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: BaseModel

The 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: BaseModel

Data 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: BaseModel

Data 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: BaseModel

Data 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: BaseModel

RTVI 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: BaseModel

Data 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: BaseModel

RTVI error event message.

RTVI formatted error message for relaying errors in the pipeline.

label: Literal['rtvi-ai']
type: Literal['error']
data: ErrorData
class pipecat.processors.frameworks.rtvi.models.BotReadyData(*, version: str, about: Mapping[str, Any] | None = None)[source]

Bases: BaseModel

Data 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: BaseModel

Message 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: BaseModel

Data for LLM function call notification.

Contains function call details including name, ID, and arguments.

Deprecated since version 0.0.102: Use LLMFunctionCallInProgressMessageData instead.

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: BaseModel

Message notifying of an LLM function call.

Sent when the LLM makes a function call.

Deprecated since version 0.0.102: Use LLMFunctionCallInProgressMessage with the llm-function-call-in-progress event type instead.

label: Literal['rtvi-ai']
type: Literal['llm-function-call']
data: LLMFunctionCallMessageData
class pipecat.processors.frameworks.rtvi.models.SendTextOptions(*, run_immediately: bool = True, audio_response: bool = True)[source]

Bases: BaseModel

Options 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: BaseModel

Data 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: BaseModel

Data 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: BaseModel

Message 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']
data: LLMFunctionCallStartMessageData
class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallResultData(*, function_name: str, tool_call_id: str, arguments: dict, result: dict | str)[source]

Bases: BaseModel

Data 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: BaseModel

Data 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: BaseModel

Message 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']
data: LLMFunctionCallInProgressMessageData
class pipecat.processors.frameworks.rtvi.models.LLMFunctionCallStoppedMessageData(*, tool_call_id: str, cancelled: bool, function_name: str | None = None, result: Any | None = None)[source]

Bases: BaseModel

Data 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: BaseModel

Message 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']
data: LLMFunctionCallStoppedMessageData
class pipecat.processors.frameworks.rtvi.models.BotLLMStartedMessage(*, label: Literal['rtvi-ai'] = 'rtvi-ai', type: Literal['bot-llm-started'] = 'bot-llm-started')[source]

Bases: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Data 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: TextMessageData

Data 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Data 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: BaseModel

Message 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: BaseModel

Data 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: BaseModel

Message containing user transcription.

Sent when user speech is transcribed.

label: Literal['rtvi-ai']
type: Literal['user-transcription']
data: UserTranscriptionMessageData
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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Generic 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: BaseModel

Data 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: BaseModel

Message 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: BaseModel

Message 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: BaseModel

Message including a system log.

label: Literal['rtvi-ai']
type: Literal['system-log']
data: TextMessageData