mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-07-07 11:02:12 +02:00
feat: client gen default configurations (#499)
This commit is contained in:
parent
a9947cec04
commit
ceb01a16a3
14 changed files with 353 additions and 87 deletions
|
|
@ -10,6 +10,10 @@ from api.db.models import (
|
|||
UserModel,
|
||||
)
|
||||
from api.schemas.onboarding_state import OnboardingState, OnboardingStateUpdate
|
||||
from api.schemas.workflow_configurations import (
|
||||
WorkflowConfigurationDefaults,
|
||||
get_default_workflow_configurations,
|
||||
)
|
||||
from api.services.auth.depends import get_user
|
||||
from api.services.configuration.ai_model_configuration import (
|
||||
get_resolved_ai_model_configuration,
|
||||
|
|
@ -40,13 +44,14 @@ class AuthUserResponse(TypedDict):
|
|||
is_superuser: bool
|
||||
|
||||
|
||||
class DefaultConfigurationsResponse(TypedDict):
|
||||
class DefaultConfigurationsResponse(BaseModel):
|
||||
llm: dict[str, dict]
|
||||
tts: dict[str, dict]
|
||||
stt: dict[str, dict]
|
||||
embeddings: dict[str, dict]
|
||||
realtime: dict[str, dict]
|
||||
default_providers: dict[str, str]
|
||||
workflow_configurations: WorkflowConfigurationDefaults
|
||||
|
||||
|
||||
@router.get("/configurations/defaults")
|
||||
|
|
@ -73,8 +78,9 @@ async def get_default_configurations() -> DefaultConfigurationsResponse:
|
|||
for provider, model_cls in REGISTRY[ServiceType.REALTIME].items()
|
||||
},
|
||||
"default_providers": DEFAULT_SERVICE_PROVIDERS,
|
||||
"workflow_configurations": get_default_workflow_configurations(),
|
||||
}
|
||||
return configurations
|
||||
return DefaultConfigurationsResponse(**configurations)
|
||||
|
||||
|
||||
@router.get("/auth/user")
|
||||
|
|
|
|||
44
api/schemas/workflow_configurations.py
Normal file
44
api/schemas/workflow_configurations.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
DEFAULT_MAX_CALL_DURATION_SECONDS = 300
|
||||
DEFAULT_MAX_USER_IDLE_TIMEOUT_SECONDS = 10.0
|
||||
DEFAULT_SMART_TURN_STOP_SECS = 2.0
|
||||
DEFAULT_TURN_START_STRATEGY = "default"
|
||||
DEFAULT_TURN_START_MIN_WORDS = 3
|
||||
DEFAULT_PROVISIONAL_VAD_PAUSE_SECS = 1.5
|
||||
DEFAULT_TURN_STOP_STRATEGY = "transcription"
|
||||
DEFAULT_CONTEXT_COMPACTION_ENABLED = False
|
||||
|
||||
|
||||
class AmbientNoiseConfigurationDefaults(BaseModel):
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
enabled: bool = False
|
||||
volume: float = 0.3
|
||||
|
||||
|
||||
class WorkflowConfigurationDefaults(BaseModel):
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
ambient_noise_configuration: AmbientNoiseConfigurationDefaults = Field(
|
||||
default_factory=AmbientNoiseConfigurationDefaults
|
||||
)
|
||||
max_call_duration: int = DEFAULT_MAX_CALL_DURATION_SECONDS
|
||||
max_user_idle_timeout: float = DEFAULT_MAX_USER_IDLE_TIMEOUT_SECONDS
|
||||
smart_turn_stop_secs: float = DEFAULT_SMART_TURN_STOP_SECS
|
||||
turn_start_strategy: Literal["default", "min_words", "provisional_vad"] = (
|
||||
DEFAULT_TURN_START_STRATEGY
|
||||
)
|
||||
turn_start_min_words: int = DEFAULT_TURN_START_MIN_WORDS
|
||||
provisional_vad_pause_secs: float = DEFAULT_PROVISIONAL_VAD_PAUSE_SECS
|
||||
turn_stop_strategy: Literal["transcription", "turn_analyzer"] = (
|
||||
DEFAULT_TURN_STOP_STRATEGY
|
||||
)
|
||||
dictionary: str = ""
|
||||
context_compaction_enabled: bool = DEFAULT_CONTEXT_COMPACTION_ENABLED
|
||||
|
||||
|
||||
def get_default_workflow_configurations() -> WorkflowConfigurationDefaults:
|
||||
return WorkflowConfigurationDefaults()
|
||||
|
|
@ -3,6 +3,7 @@ from typing import Awaitable, Callable, Optional
|
|||
|
||||
from loguru import logger
|
||||
|
||||
from api.schemas.workflow_configurations import DEFAULT_MAX_CALL_DURATION_SECONDS
|
||||
from pipecat.frames.frames import (
|
||||
Frame,
|
||||
HeartbeatFrame,
|
||||
|
|
@ -23,7 +24,7 @@ class PipelineEngineCallbacksProcessor(FrameProcessor):
|
|||
|
||||
def __init__(
|
||||
self,
|
||||
max_call_duration_seconds: int = 300,
|
||||
max_call_duration_seconds: int = DEFAULT_MAX_CALL_DURATION_SECONDS,
|
||||
max_duration_end_task_callback: Optional[Callable[[], Awaitable[None]]] = None,
|
||||
generation_started_callback: Optional[Callable[[], Awaitable[None]]] = None,
|
||||
llm_text_frame_callback: Optional[Callable[[str], Awaitable[None]]] = None,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,14 @@ from loguru import logger
|
|||
|
||||
from api.db import db_client
|
||||
from api.enums import WorkflowRunMode
|
||||
from api.schemas.workflow_configurations import (
|
||||
DEFAULT_MAX_CALL_DURATION_SECONDS,
|
||||
DEFAULT_MAX_USER_IDLE_TIMEOUT_SECONDS,
|
||||
DEFAULT_PROVISIONAL_VAD_PAUSE_SECS,
|
||||
DEFAULT_SMART_TURN_STOP_SECS,
|
||||
DEFAULT_TURN_START_MIN_WORDS,
|
||||
DEFAULT_TURN_START_STRATEGY,
|
||||
)
|
||||
from api.services.configuration.registry import ServiceProviders
|
||||
from api.services.integrations import (
|
||||
IntegrationRuntimeContext,
|
||||
|
|
@ -100,10 +108,6 @@ ensure_tracing()
|
|||
|
||||
DEFAULT_USER_TURN_STOP_TIMEOUT = 5.0
|
||||
EXTERNAL_TURN_USER_STOP_TIMEOUT = 30.0
|
||||
DEFAULT_TURN_START_STRATEGY = "default"
|
||||
DEFAULT_TURN_START_MIN_WORDS = 3
|
||||
DEFAULT_PROVISIONAL_VAD_PAUSE_SECS = 1.5
|
||||
DEFAULT_SMART_TURN_STOP_SECS = 2.0
|
||||
|
||||
|
||||
def _resolve_user_turn_stop_timeout(
|
||||
|
|
@ -538,8 +542,8 @@ async def _run_pipeline_impl(
|
|||
run_configs = run_definition.workflow_configurations or {}
|
||||
|
||||
# Extract configurations from the version's workflow_configurations
|
||||
max_call_duration_seconds = 300 # Default 5 minutes
|
||||
max_user_idle_timeout = 10.0 # Default 10 seconds
|
||||
max_call_duration_seconds = DEFAULT_MAX_CALL_DURATION_SECONDS
|
||||
max_user_idle_timeout = DEFAULT_MAX_USER_IDLE_TIMEOUT_SECONDS
|
||||
keyterms = None # Dictionary words for STT boosting
|
||||
|
||||
if run_configs:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue