Files
pipecat/src/dailyai/pipeline/frames.py
2024-03-11 16:52:41 -04:00

90 lines
1.4 KiB
Python

from dataclasses import dataclass
from typing import Any, List
from dailyai.services.openai_llm_context import OpenAILLMContext
class Frame:
pass
class ControlFrame(Frame):
# Control frames should contain no instance data, so
# equality is based solely on the class.
def __eq__(self, other):
return type(other) == self.__class__
class StartFrame(ControlFrame):
pass
class EndFrame(ControlFrame):
pass
class EndPipeFrame(ControlFrame):
pass
class LLMResponseStartFrame(ControlFrame):
pass
class LLMResponseEndFrame(ControlFrame):
pass
@dataclass()
class AudioFrame(Frame):
data: bytes
@dataclass()
class ImageFrame(Frame):
url: str | None
image: bytes
@dataclass()
class SpriteFrame(Frame):
images: list[bytes]
@dataclass()
class TextFrame(Frame):
text: str
@dataclass()
class TranscriptionQueueFrame(TextFrame):
participantId: str
timestamp: str
@dataclass()
class LLMMessagesQueueFrame(Frame):
messages: List[dict]
@dataclass()
class OpenAILLMContextFrame(Frame):
context: OpenAILLMContext
class AppMessageQueueFrame(Frame):
message: Any
participantId: str
class UserStartedSpeakingFrame(Frame):
pass
class UserStoppedSpeakingFrame(Frame):
pass
@dataclass()
class LLMFunctionStartFrame(Frame):
function_name: str
@dataclass()
class LLMFunctionCallFrame(Frame):
function_name: str
arguments: str