Add VisionService docstrings
This commit is contained in:
@@ -4,6 +4,13 @@
|
|||||||
# SPDX-License-Identifier: BSD 2-Clause License
|
# SPDX-License-Identifier: BSD 2-Clause License
|
||||||
#
|
#
|
||||||
|
|
||||||
|
"""Vision service implementation.
|
||||||
|
|
||||||
|
Provides base classes and implementations for computer vision services that can
|
||||||
|
analyze images and generate textual descriptions or answers to questions about
|
||||||
|
visual content.
|
||||||
|
"""
|
||||||
|
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
from typing import AsyncGenerator
|
from typing import AsyncGenerator
|
||||||
|
|
||||||
@@ -13,7 +20,15 @@ from pipecat.services.ai_service import AIService
|
|||||||
|
|
||||||
|
|
||||||
class VisionService(AIService):
|
class VisionService(AIService):
|
||||||
"""VisionService is a base class for vision services."""
|
"""Base class for vision services.
|
||||||
|
|
||||||
|
Provides common functionality for vision services that process images and
|
||||||
|
generate textual responses. Handles image frame processing and integrates
|
||||||
|
with the AI service infrastructure for metrics and lifecycle management.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
**kwargs: Additional arguments passed to the parent AIService.
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
@@ -21,9 +36,31 @@ class VisionService(AIService):
|
|||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def run_vision(self, frame: VisionImageRawFrame) -> AsyncGenerator[Frame, None]:
|
async def run_vision(self, frame: VisionImageRawFrame) -> AsyncGenerator[Frame, None]:
|
||||||
|
"""Process a vision image frame and generate results.
|
||||||
|
|
||||||
|
This method must be implemented by subclasses to provide actual computer
|
||||||
|
vision functionality such as image description, object detection, or
|
||||||
|
visual question answering.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
frame: The vision image frame to process, containing image data.
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
Frame: Frames containing the vision analysis results, typically TextFrame
|
||||||
|
objects with descriptions or answers.
|
||||||
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
async def process_frame(self, frame: Frame, direction: FrameDirection):
|
async def process_frame(self, frame: Frame, direction: FrameDirection):
|
||||||
|
"""Process frames, handling vision image frames for analysis.
|
||||||
|
|
||||||
|
Automatically processes VisionImageRawFrame objects by calling run_vision
|
||||||
|
and handles metrics tracking. Other frames are passed through unchanged.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
frame: The frame to process.
|
||||||
|
direction: The direction of frame processing.
|
||||||
|
"""
|
||||||
await super().process_frame(frame, direction)
|
await super().process_frame(frame, direction)
|
||||||
|
|
||||||
if isinstance(frame, VisionImageRawFrame):
|
if isinstance(frame, VisionImageRawFrame):
|
||||||
|
|||||||
Reference in New Issue
Block a user