feat(v3): PR 3 — prompt_layer package (base, video_prompt, search_query, visual_vocabulary)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
"""
|
||||
bots/prompt_layer/base.py
|
||||
Base types for the prompt layer.
|
||||
"""
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Optional
|
||||
|
||||
@dataclass
|
||||
class ComposedPrompt:
|
||||
"""
|
||||
Unified prompt container returned by all composers.
|
||||
|
||||
Fields used varies by engine:
|
||||
- Kling: positive + negative
|
||||
- Veo: positive (structured)
|
||||
- Search: queries list
|
||||
- TTS: processed_text
|
||||
"""
|
||||
positive: str = ''
|
||||
negative: str = ''
|
||||
queries: list[str] = field(default_factory=list)
|
||||
processed_text: str = ''
|
||||
metadata: dict = field(default_factory=dict)
|
||||
|
||||
def __bool__(self) -> bool:
|
||||
return bool(self.positive or self.queries or self.processed_text)
|
||||
|
||||
|
||||
class BaseComposer:
|
||||
"""Abstract base for all composers."""
|
||||
def compose(self, input_data: dict, engine: str) -> ComposedPrompt:
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class PassthroughComposer(BaseComposer):
|
||||
"""Returns input as-is for unsupported categories."""
|
||||
def compose(self, input_data: dict, engine: str) -> ComposedPrompt:
|
||||
return ComposedPrompt(
|
||||
positive=input_data.get('text', ''),
|
||||
metadata={'passthrough': True, 'engine': engine}
|
||||
)
|
||||
Reference in New Issue
Block a user