← Docs hub

LLM Live

LLM Live는 SK_19 일반 대화를 Gemini Live의 음성 스트리밍으로 처리하는 기능이다. 제품 명령은 기존 기기 로직이 실행하고, Live는 자연스러운 연속 대화와 답변 중 끼어들기를 담당한다.

핵심 원칙

  1. 로컬이 먼저 판단한다. 첫 입력은 온디바이스 STT/LLM이 분류하고 SK_19만 Live로 전환한다.
  2. 제품은 기기가 실행한다. Gemini는 명령을 제안하며 FunctionCallHandler -> Device API가 최종 실행한다.
  3. 마이크는 한 번만 연다. 하나의 AudioRecord 입력을 로컬 판단과 Live 준비 경로가 공유한다.
  4. Live 안에서는 대화를 이어 간다. 답변 중 Barge-in과 답변 후 5초 이내 후속 질문을 지원한다.
  5. 종료는 한 번에 처리한다. 음성, 마이크, WebSocket과 UI가 같은 종료 결과로 수렴한다.
  6. 오프라인 기능을 보존한다. Live를 사용할 수 없으면 기존 온디바이스 기능과 로컬 TTS를 유지한다.

온디바이스와 클라우드 R&R

LLM Live 온디바이스·클라우드 책임 구분

기준은 단순히 코드가 있는 위치가 아니라 최종 판단과 운영 책임을 누가 갖는가다.

책임 영역 담당 핵심 책임
A1 AI Agent 온디바이스 팀 마이크·스피커, Barge-in, UI·자막, 세션 종료, 제품 명령 검증과 Device API 실행
SK Live Gateway 클라우드 팀 기기 WebSocket, Gemini 연결, API key·model·prompt, search_rag, timeout·취소·관측
Gemini Live Google 관리형 모델 음성 이해, VAD, 대화 추론, tool 선택, Live PCM·전사 생성

tool도 소유권에 따라 나눈다.

tool 처리 위치 동작
search_rag SK Live Gateway Gateway가 검색하고 근거를 Gemini에 반환한다. Agent에는 tool call을 보내지 않는다.
execute_rewrite_query A1 AI Agent Gateway가 전달하고 Agent가 검증한 뒤 기존 제품 명령 경로를 실행한다.
end_conversation A1 AI Agent Agent가 Live 음성·녹음·WebSocket·UI를 함께 종료한다.

세부 업무와 출시 게이트는 향후 릴리즈 구조에서 관리한다.

현재 PoC 흐름

현재 LLM Live PoC Broker 구조

Wake-up / F2
  -> 하나의 마이크 입력
  -> 로컬 STT/LLM 분류
     -> 제품 명령: 기존 Device API 실행
     -> SK_19: Live Shadow를 Primary로 전환
  -> Gemini 음성 응답 재생
  -> Barge-in 또는 후속 질문
  -> 명시 종료 / 5초 무발화 / 오류 시 전체 세션 종료

현재 실기기 PoC는 A1 -> adb reverse -> 로컬 Broker -> Gemini Live로 연결한다. API key는 Broker 환경 변수에만 두며 APK에는 저장하지 않는다.

최신 연결 상태

아래 내용은 2026-08-19 로컬 PoC에서 코드와 실제 Gateway 연결로 확인한 결과다.

항목 상태 확인 내용
Live 모델 연결됨 models/gemini-3.1-flash-live-preview
기준 prompt 적용됨 서버 DEFAULT_PROMPT를 Live systemInstruction에 합쳐 제품 분류 기준을 유지
웹 최신정보 동작 확인 Gemini가 search_rag를 호출하고 Gateway가 검색 근거를 반환한 뒤 음성·자막 응답 생성
검색 대체 경로 동작 확인 Custom Search가 현재 테스트 키에서 403이면 Gemini Google Search Grounding으로 자동 전환
내부 문서 RAG 현재 비활성 File Search 코드는 연결돼 있으나 테스트 키에 저장소 권한이 없어 403; 운영 권한 확인 전 사용하지 않음

/healthz 기준 현재 설정은 ragEnabled=true, internalRagEnabled=false다. E2E 확인에서는 search_rag가 Gateway 안에서 처리되어 Agent로 유출되지 않았고, 검색 근거를 받은 Gemini가 최종 PCM과 전사를 반환했다. 이 상태는 웹 최신정보 연결 검증이며 운영 배포 완료를 뜻하지 않는다.

상세 문서 바로가기

중복을 피하기 위해 각 상세 문서는 아래 주제 하나를 기준으로 관리한다.

궁금한 내용 문서 이 문서에서 확인할 것
기기에서 실제로 어떻게 도는가 기기 Runtime 상태 전환, 마이크, Barge-in, 종료, 기록 범위
Broker는 왜 있고 무엇을 중계하는가 현재 Broker PoC 연결, search_rag, protocol, 환경 변수, 세션 소유권
해외 업체가 APK를 어떻게 시험하는가 해외 업체 테스트 가이드 Staging/Local Broker 선택, 설정, 보안과 검증 순서
어떤 값을 조절할 수 있는가 튜닝 파라미터 VAD, Echo, 오디오 버퍼, timeout의 기준값과 영향
사용자 경험이 어떻게 달라지는가 음성 인터랙션 기획 기존/Live 차이, 기획 결정, 권장 정책과 KPI
기존 MR8 기능과 무엇이 충돌하는가 기존 사양 호환성 TTS, 오프라인 멀티턴, fallback과 출시 차단 항목
제품 릴리즈 구조는 어떻게 가져갈 것인가 향후 릴리즈 구조 온디바이스/클라우드 R&R, 공통 계약과 출시 게이트

현재와 목표 구조

구분 현재 PoC 향후 릴리즈 기본안
연결 기기 -> 로컬 Broker -> Gemini A1 AI Agent -> SK Live Gateway -> Gemini
Cloud 역할 API key, 모델, prompt, frame 중계와 search_rag 동일한 기능 + 기기 인증, quota, 제한과 운영 관측
실시간 PCM 로컬 Broker를 통과 운영 Gateway를 통과
제품 명령 기기가 검증하고 Device API 실행 동일
세션 연결별 1:1 중계, 저장 없음 WebSocket 수명 기준, 세션 DB 없음
장애 복구 연결 실패 시 세션 정리, REST 자동 복구 없음 세션 종료 후 기존 경로로 한 번만 fallback
상태 실기기 PoC TODO, 보안·개인정보·품질 승인 필요

목표 구조는 구현 완료 사양이 아니다. 자세한 책임과 미완료 항목은 향후 릴리즈 구조에서만 관리한다.

현재 제약

항목 현재 상태 상세 문서
생각 중 끼어들기 WAITING_RESPONSE에서는 PCM을 보내지 않아 지원하지 않음 기기 Runtime
답변 후 대기 5초 뒤 전체 세션 종료. 사용자 체감 검증 필요 음성 인터랙션 기획
Echo 제거 완전한 AEC가 아니라 유사도 gate로 보완 튜닝 파라미터
제품 멀티턴 NEEDS_USER_INPUT 계약이 미완성 기존 사양 호환성
장애 복구 Broker/Gemini 첫 응답 전 실패의 자동 REST 재전송 없음 기존 사양 호환성
장시간 세션 14분 상한은 정의됐지만 회전 watchdog 연결이 필요 기기 Runtime

검증 기준

JVM 테스트는 상태 전환, PCM 전달, Echo 판정, 명령 handoff와 중복 종료를 확인한다. 제품 승인은 플랫폼 인증서로 서명한 Release APK에서 다음 항목을 별도로 검증해야 한다.

보고자료와 구조도

외부 참고

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date