feat: beaver first commit

This commit is contained in:
0Xiao0
2026-06-02 14:07:56 +08:00
parent 34cf1b9736
commit 0a50f25dfa
4 changed files with 41 additions and 22 deletions

View File

@ -686,18 +686,16 @@ async def entrypoint(ctx: JobContext) -> None:
stt_stream = stt.StreamAdapter(stt=blackbox_stt, vad=ctx.proc.userdata["vad"])
if LLM_PROVIDER == "beaver":
beaver_url = os.getenv("CUSTOM_BEAVER_WS_URL") or os.getenv("BEAVER_WS_URL", "").strip()
beaver_url = _first_env("CUSTOM_BEAVER_WS_URL", "BEAVER_WS_URL")
if not beaver_url:
raise RuntimeError(f"CUSTOM_BEAVER_WS_URL or BEAVER_WS_URL is not set in {CUSTOM_ENV_PATH}")
beaver_peer_id = (
os.getenv("CUSTOM_BEAVER_PEER_ID")
or os.getenv("BEAVER_PEER_ID")
_first_env("CUSTOM_BEAVER_PEER_ID", "BEAVER_PEER_ID", "TERMINAL_PEER_ID")
or f"livekit-{ctx.room.name}"
)
beaver_device_name = (
os.getenv("CUSTOM_BEAVER_DEVICE_NAME")
or os.getenv("BEAVER_DEVICE_NAME")
_first_env("CUSTOM_BEAVER_DEVICE_NAME", "BEAVER_DEVICE_NAME", "TERMINAL_DEVICE_NAME")
or "livekit-custom-agent"
)
base_llm = BeaverLLM(
@ -709,10 +707,11 @@ async def entrypoint(ctx: JobContext) -> None:
text_llm = base_llm
vision_llm = base_llm
logger.info(
"Using Beaver gateway url=%s peer_id=%s device_name=%s",
"Using Beaver gateway url=%s peer_id=%s device_name=%s room=%s",
beaver_url,
beaver_peer_id,
beaver_device_name,
ctx.room.name,
)
elif LLM_PROVIDER in {"hermes", "hermes_gateway", "openclaw"}:
gateway_url = os.getenv("CUSTOM_HERMES_GATEWAY_URL", "").strip()
@ -1000,6 +999,14 @@ def _env_bool(name: str, default: bool) -> bool:
return default
def _first_env(*names: str) -> str | None:
for name in names:
value = os.getenv(name)
if value and value.strip():
return value.strip()
return None
def _recording_options_from_env() -> RecordingOptions:
return RecordingOptions(
audio=_env_bool("CUSTOM_RECORD_AUDIO", False),