feat: 운영 안정성과 세션 음성 경험 개선
This commit is contained in:
parent
facc4ad2d9
commit
c788343467
95 changed files with 8431 additions and 1785 deletions
|
|
@ -13,12 +13,16 @@ from urllib.parse import urlsplit
|
|||
from pydantic import Field, model_validator
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
from .contracts.engine_gateway import EngineProvider
|
||||
|
||||
# 엔진 어댑터 provider 플래그 (마스터플랜 §0, R1: claude -p 과금누수 회피)
|
||||
# claude_api = Anthropic Messages API 직결 (기본)
|
||||
# claude_cli = 로컬 claude -p 상주풀 (stream-json, 옵션/시연용)
|
||||
# codex_cli = 로컬 Codex CLI (app-server 모델 탐색 + exec 생성)
|
||||
# agy_cli = 로컬 Agy/Google Antigravity CLI
|
||||
# openai = OpenAI 호환 (폴백/평가 보조)
|
||||
# solar = 국내 모델 라우팅 (PII 민감구간 inference_geo:kr)
|
||||
EngineMode = Literal["claude_api", "claude_cli", "openai", "solar"]
|
||||
EngineMode = EngineProvider
|
||||
|
||||
|
||||
def _is_local_url(value: str) -> bool:
|
||||
|
|
@ -78,6 +82,12 @@ class Settings(BaseSettings):
|
|||
default="claude_api",
|
||||
validation_alias="ENGINE_MODE",
|
||||
)
|
||||
# 실시간 내담자 응답은 평가/저작 provider와 분리할 수 있다. Agy/Codex 같은
|
||||
# 범용 agent CLI의 도구 prompt와 프로세스 기동 지연을 상담 왕복에 강제하지 않는다.
|
||||
live_client_provider: EngineMode | None = Field(
|
||||
default=None,
|
||||
validation_alias="VIGNETTE_LIVE_CLIENT_PROVIDER",
|
||||
)
|
||||
engine_timeout: float = 120.0 # SSE 롱리브드 (50분 상담 대비, 스트림은 무제한 별도)
|
||||
engine_connect_timeout: float = 10.0
|
||||
admin_usage_budget_usd: float = Field(
|
||||
|
|
@ -136,6 +146,18 @@ class Settings(BaseSettings):
|
|||
default="",
|
||||
validation_alias="VIGNETTE_VOICE_POC_SAMPLE_TTS_DIR",
|
||||
)
|
||||
voice_tts_provider: Literal["openai", "higgs"] = Field(
|
||||
default="openai",
|
||||
validation_alias="VIGNETTE_VOICE_TTS_PROVIDER",
|
||||
)
|
||||
higgs_tts_url: str = Field(
|
||||
default="http://127.0.0.1:9881",
|
||||
validation_alias="VIGNETTE_HIGGS_TTS_URL",
|
||||
)
|
||||
higgs_tts_timeout_seconds: float = Field(
|
||||
default=300.0,
|
||||
validation_alias="VIGNETTE_HIGGS_TTS_TIMEOUT_SECONDS",
|
||||
)
|
||||
|
||||
# ── 세션/인증 (BFF OAuth 2.1, 토큰 서버 보관) ────────
|
||||
session_secret: str = Field(
|
||||
|
|
@ -310,6 +332,9 @@ class Settings(BaseSettings):
|
|||
forbidden.append("ALLOW_SEED_PERSONA_FALLBACK")
|
||||
if self.voice_poc_sample_tts_enabled:
|
||||
forbidden.append("VIGNETTE_VOICE_POC_SAMPLE_TTS")
|
||||
if self.voice_tts_provider == "higgs":
|
||||
# Higgs Audio v3 TTS 4B는 연구/비상업 라이선스이므로 로컬 dev에서만 쓴다.
|
||||
forbidden.append("VIGNETTE_VOICE_TTS_PROVIDER=higgs")
|
||||
if not self.oauth_google_client_id.strip():
|
||||
forbidden.append("OAUTH_GOOGLE_CLIENT_ID")
|
||||
if not self.oauth_google_client_secret.strip():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue