LLM 운영 Wiki
이 Wiki는 LLM 운영 담당자가 실제 SQE/필드 테스트와 현지 운영 중 발생하는 STT/LLM/기능 사양/Cloud 연동 이슈를 스스로 1차 분석할 수 있도록 만든 운영 자료입니다.
대상 저장소:
- On-device Agent:
~/work/2.A1_LLM_Aent/skmagic_ondeviceai_agent - Cloud LLM Lambda:
~/work/8.cloudLLM/backend-cloud-llm-lambda
전체 목표
이 문서를 학습한 후에는 다음 작업을 수행할 수 있어야 합니다.
- 기능 발화가 제품에서 어떤 경로로 처리되는지 설명할 수 있다.
- 발화 실패를 STT, 딕셔너리, On-device LLM, Cloud LLM, Device API, TTS, 상태관리 이슈로 분리할 수 있다.
logcat과 Cloud 테스트 결과를 근거로 이슈 재현 리포트를 작성할 수 있다.- 기능 개선 요청서를 “발화 원문, STT 결과, 기대 토큰, 실제 토큰, 기대 동작, 실제 동작, 로그 근거” 기준으로 작성할 수 있다.
문서 구성
| 요일 | 문서 | 핵심 목표 |
|---|---|---|
| 월 | Day 1: 제품 기능 사양 및 LLM 구조 | 전체 E2E 구조, On-device/Cloud 역할, 상태관리 이해 |
| 화 | Day 2: 온디바이스 딕셔너리 및 E2E Test | 딕셔너리 구조, STT 오인식 보정, 오매칭 분석 |
| 수 | Day 3: Cloud LLM 개선 작업 및 테스트 | Lambda/Gemini RAG, Case 구조, rewrite_query 검증 |
| 목 | Day 4: SQE/필드테스트 이슈 분석 | 이슈 분류, 로그 기반 원인 분석, 개선 판단 |
| 금 | Day 5: 종합 실습 및 현지 운영 가이드 | 실제 케이스 재현, 운영 기준, 리포트 작성 |
과정 운영 문서
| 문서 | 목적 |
|---|---|
| README | 패키지 범위와 파일 구조 |
| Wiki Index | 전체 교육 자료 색인 |
| Lecture Plan | 강의 순서와 시간 배분 |
| Instructor Script | 강사용 진행 스크립트 |
PDF 읽는 경로
PDF는 목적에 따라 읽는 경로를 다르게 잡습니다.
| 목적 | 권장 경로 | 결과물 |
|---|---|---|
| 전체 구조 이해 | index → Day 1~5 → source_traceability_matrix |
제품 음성 처리 구조와 운영 기준 이해 |
| 발화 오매칭 분석 | Day 2 → dictionary_matching_source_guide → operational_examples |
dictionary 수정/유지 판단 |
| Cloud 응답 분석 | Day 3 → cloud_llm_integration_source_guide → cloud_rewrite_query_quality_guide |
Case/rewrite/RAG 원인 분리 |
| 기능 실행 실패 분석 | Day 4 → api_call_validator_source_guide → function_flows_index |
정상 차단/API 실패/TTS 문제 분리 |
| 운영 산출물 작성 | Day 5 → templates → pdf_export_guide |
E2E 결과표, Cloud 결과표, 이슈 리포트 |
요구사항 추적표
초기 요청 항목이 어느 문서에 반영되어 있는지 확인하기 위한 추적표입니다. 말레이시아 현지 운영팀이 운영 기준을 이해할 수 있도록 Cloud/RAG와 현지 운영 항목은 별도 표기합니다.
| 요청 항목 | 반영 위치 | 확인 포인트 |
|---|---|---|
| 음성 지원 가능 범위 | Day 1 지원/미지원 케이스 |
기능 토큰으로 실행 가능한 범위와 Cloud 일반 답변 범위 구분 |
| 기능별 동작 사양 | Day 1 기능 토큰과 제품 사양, 기능별 SVG 인덱스 |
<sk_xx> 토큰, Device API, TTS 기대값을 함께 확인 |
| On-device LLM과 Cloud LLM 역할 | Day 1, Day 3 | Cloud는 기능을 직접 실행하지 않고 Case 2/rewrite로 재진입 |
| STT-LLM-TTS E2E 처리 흐름 | Day 1, Source Map | STT raw, processed, token, validator, API, TTS 순서 |
| 온디바이스 딕셔너리 구조 | Day 2, Dictionary Source Guide | mapping, contains, contains_token, 3keyword 역할 구분 |
| STT 오인식 보정 기준 | Day 2 STT 문제와 딕셔너리 문제 구분 |
raw 오류와 processed 오류를 분리 |
| 지역명/건물명/공간명 처리 | Day 2 지역명/건물명/공간명 처리 기준 |
현지 지명과 제품 공간명을 dictionary에 넣는 기준 |
| E2E Test 수행 및 로그 분석 | Day 2, Day 5, Runbook | logcat 필터, 결과표, 원인 분류 |
| E2E 성능 측정 및 결과 분석 | Day 2 E2E 성능 측정 기준, Day 5 |
성공률/오매칭률/Cloud fallback률로 관리 |
| Cloud LLM 구조 및 역할 | Day 3 | request 구조, Case 계약, Lambda/RAG |
| Cloud rewrite_query 강화 | Day 3, Cloud Rewrite Query Quality Guide |
Case 2가 기대 토큰으로 재매칭되는지까지 검증 |
| File RAG/Web Search | Day 3 RAG 선택 기준 |
정적 제품 문서와 최신 외부 정보 분리 |
| 국내 프롬프트 구성 구조 | Day 3 국내 프롬프트 구성 기준 |
persona, information, environment, case router 구조 |
| 말레이시아 Custom RAG | Day 3 말레이시아 Custom RAG 운영 기준 |
현지 FAQ/서비스/정책 문서와 검색 기준 |
| Cloud LLM 테스트 결과 정리 | Day 3, template | request/response/case/rewrite/RAG 근거 기록 |
| SQE/필드 이슈 분류 | Day 4 | STT/딕셔너리/Cloud/기능/API/TTS/상태관리 분리 |
| 로그 기반 원인 분석 | Day 4, Runbook | 어느 단계에서 기대와 실제가 달라졌는지 기록 |
| 재현 테스트 및 개선 필요 판단 | Day 4 | 사양 정상/테스트 기대값 오류/개선 필요 구분 |
| 개선 요청서 및 협업 프로세스 | Day 4, Day 5 | 담당 영역, 첨부 로그, 재현 조건 필수 |
| 실제 SQE 주요 이슈 리뷰 | Day 5, Operational Examples | 대표 케이스를 원인별로 재분류 |
| 말레이시아 현지 LLM 운영 기준 | Day 5 말레이시아 현지 운영 기준 |
언어, Cloud, RAG, 리포트, 회귀 테스트 기준 |
| 질의응답 | Day 5 운영 FAQ |
반복 질문을 운영 지식으로 축적 |
핵심 SVG
- 주간 운영 맵 - PDF-safe
- 제품 음성 E2E 전체 구성도
- On-device와 Cloud LLM 책임 경계
- STT/전처리/딕셔너리/LLM 처리 파이프라인
- Cloud LLM Case 및 온디바이스 재진입 구조
- 필드 이슈 원인 분류 매트릭스
- 현지 운영 검증 루프
- STT On-device/Cloud 입력 분기 - PDF-safe
- 전체 상태/멀티턴 공통 흐름
- 온디바이스 딕셔너리 처리 흐름 - PDF-safe
- Cloud LLM Lambda/RAG 구조 - PDF-safe
- Cloud rewrite prompt 강화 기준 - PDF-safe
- 딕셔너리 충돌 분석 절차 - PDF-safe
- 기능별 SK 토큰 구현 설계도 읽는 법 - PDF-safe
- 운영 산출물 생명주기 - PDF-safe
- PDF 표 분할 기준 - PDF-safe
- 로그 근거 확인 사다리 - PDF-safe
- PDF 읽는 경로 - PDF-safe
- 말레이시아 현지 운영 의사결정 라우터 - PDF-safe
- ApiCallValidator MR8 요약
- 기능별 SK 토큰 구현 인덱스
챕터별 판단 흐름 SVG
아래 SVG는 각 Day 문서 본문에도 삽입되어 있습니다. 단순 요약이 아니라 입력 → 처리 단계 → 분기 기준 → 확인 로그 → 산출물을 한 장에서 확인하도록 구성했습니다. 먼저 Day별 대표 SVG로 판단 흐름을 잡고, 더 깊은 기능 단위 분석은 기능별 SK 토큰 구현 인덱스와 Source-level 문서로 내려갑니다.
Day 1: F 이벤트, STT raw/processed, 로컬 토큰화, Cloud 재진입, TTS 이후 resume 판단을 한 흐름으로 확인합니다.
Day 2: 어떤 JSON이 먼저 잡았는지, 왜 다른 토큰으로 빠졌는지, positive/negative/regression을 어떻게 묶는지 확인합니다.
Day 3: Cloud에 전달되는 원문/시스템 정보, Case 2 rewrite 재진입, 말레이시아 RAG 판단 기준을 확인합니다.
Day 4: STT/딕셔너리/Cloud/Validator/API/TTS 중 어느 단계 문제인지 로그 근거로 분리합니다.
Day 5: 릴리즈 전 최소 검증 세트와 실패 시 개선 요청서에 반드시 들어가야 할 근거를 확인합니다.
Day별 챕터 SVG
각 Day 문서의 모든 ## 챕터에는 섹션 요약 SVG가 1개 이상 연결되어 있습니다. svg/day-sections/ 아래 SVG는 챕터별 이해 보조 자료이며, 본문 흐름을 읽을 때 해당 챕터의 목적, 입력, 판정 기준, 산출물을 빠르게 확인하는 용도입니다.
| Day | 챕터 SVG 범위 |
|---|---|
| Day 1 | svg/day-sections/day01_section_*.svg |
| Day 2 | svg/day-sections/day02_section_*.svg |
| Day 3 | svg/day-sections/day03_section_*.svg |
| Day 4 | svg/day-sections/day04_section_*.svg |
| Day 5 | svg/day-sections/day05_section_*.svg |
Source/Templates 섹션 SVG
소스레벨 문서와 템플릿 문서도 모든 ## 챕터에 PDF-safe 섹션 요약 SVG를 연결했습니다. svg/source-sections/ 아래 SVG는 “이 항목에서 무엇을 확인하고, 어떤 근거로 판단하고, 다음 액션이 무엇인지”를 먼저 보여주는 용도입니다.
| 범위 | SVG |
|---|---|
| Source-level guides | svg/source-sections/src_*.svg |
| Report/Test templates | svg/source-sections/tpl_*.svg |
소스레벨 상세 문서
아래 문서는 본문에서 “어느 파일의 어느 역할을 봐야 하는가”를 설명하기 위한 소스레벨 자료입니다.
| 문서 | 용도 |
|---|---|
| On-device E2E Source Map | ForegroundService, STT, 딕셔너리, 로컬 LLM, TTS, 상태관리 전체 연결 |
| Source Traceability Matrix | 운영 설명과 실제 소스 파일/함수/로그 근거 연결 |
| Dictionary Matching Source Guide | mapping/contains/contains_token/3keyword 처리 순서와 충돌 분석 |
| Cloud LLM Integration Source Guide | 온디바이스 Cloud 요청, Case 응답, rewrite_query 재진입 |
| Cloud Rewrite Query Quality Guide | Cloud Case 2/rewrite_query 품질 기준과 온디바이스 재매칭 검증 |
| ApiCallValidator And Error Handling | 기능 실행 전 검증, 에러 그룹, 토큰별 validation rule |
| E2E Test And Log Analysis Runbook | logcat 수집, 판정 기준, 개선 요청서 작성 |
| Operational Examples | 실제 운영 예제: 오매칭, Cloud 재진입, Error Handler, API/TTS 분리 |
PDF 출력용 구조
LLM 운영 PDF는 큰 원본 구조도보다 svg/pdf-safe/ 그림을 우선 사용합니다.
- PDF Export Guide
- PDF-safe Weekly Operation Map
- PDF-safe E2E Source Trace
- PDF-safe STT On-device/Cloud Boundary
- PDF-safe Cloud LLM Contract
- PDF-safe Cloud Lambda/RAG Map
- PDF-safe Cloud Rewrite Quality Gate
- PDF-safe Cloud Rewrite Prompt Hardening
- PDF-safe Dictionary Pipeline Map
- PDF-safe Dictionary Quality Gate
- PDF-safe Dictionary Collision Triage
- PDF-safe Function Flow Index Reader
- PDF-safe Operational Artifact Lifecycle
- PDF-safe Table Split Rule
- PDF-safe Log Evidence Ladder
- PDF-safe Reading Path Map
- PDF-safe Malaysia Decision Router
- PDF-safe Malaysia Operation Loop
- PDF-safe Operational Examples Triage
- PDF-safe Issue Report Packet
- PDF-safe Error Handler Decision
- PDF-safe ApiCallValidator Current/Target
- PDF Export Boundary Rules
- PDF Quality Gate Checklist
활용 방식
각 요일 문서는 다음 형식으로 읽습니다.
1. 핵심 구조 확인
2. SVG 기반 흐름 확인
3. 코드/로그 기준 상세 확인
4. 운영 예제 적용
5. 결과 분석
6. 산출물 작성
7. 점검 질문 확인
누락 방지 체크리스트
문제를 분석할 때 아래 항목 중 하나라도 비어 있으면 원인 분류가 흔들릴 수 있습니다.
| 항목 | 누락 시 리스크 |
|---|---|
| 앱/DB/브랜치/커밋 | 같은 발화라도 dictionary와 resource가 달라질 수 있음 |
| 언어 설정 | 한국어/영어 dictionary와 TTS subtitle 경로가 달라질 수 있음 |
| STT raw/originalSttResult | Cloud로 넘어간 실제 user content를 판단할 수 없음 |
| STT processed/filteredSttResult | 온디바이스 딕셔너리 입력이 무엇인지 판단할 수 없음 |
[DICTIONARY_MATCH] 로그 |
어떤 JSON이 토큰을 만들었는지 확인할 수 없음 |
| parsed token | FunctionCallHandler와 Validator 진입점을 확인할 수 없음 |
| Cloud case/rewrite_query | Cloud 문제인지 로컬 재진입 문제인지 분리할 수 없음 |
| ApiCallValidator/errorcode | 정상 차단과 기능 실패를 구분할 수 없음 |
| Device API input/output | On-device 구현 문제와 SoC/API 문제를 분리할 수 없음 |
| TTS/subtitle/screen | 기능 실행 성공 후 표현 문제를 별도 분리할 수 없음 |
공통 로그 관찰 포인트
On-device Agent에서 주로 확인할 로그는 아래입니다.
STT raw text
STT processed text
[DICTIONARY_MATCH]
parsedLlamaResponse
Cutted parsedLlamaResponse
HI_NAMUH_LLMResponseParser
ApiCallValidator(preLlmCallValidate)
ApiCallValidator(preApiCallValidate)
FunctionCallHandler
mappingTtsTextAndDeviceApi
DeviceCommunicator Device API Input Parameter
DeviceCommunicator Device API Output Result
ttsText
resetState
determineMultiTurn
skipResume
Cloud LLM에서 주로 확인할 항목은 아래입니다.
request body: device_id, messages
system prompt
user content
case
response
rewrite_query
prepared_question_list_number
RAG judge result
File RAG result
Web Search result
final OpenAI-style response
Cloud rewrite_query를 검증할 때는 case=2 여부만 보지 않습니다.
1. Cloud user content가 실제 originalSttResult와 같은지 확인
2. Case Router가 제품 기능을 Case 2로 분류했는지 확인
3. rewrite_query가 사용자 명령형이며 기능명/action/slot을 보존했는지 확인
4. rewrite_query를 온디바이스 로컬 파이프라인에 다시 넣었을 때 기대 <sk_xx>가 나오는지 확인
5. 실패 시 Cloud prompt/router 문제인지, 온디바이스 dictionary 공백인지 분리
이슈 분류 빠른 판단표
| 관찰 결과 | 1차 원인 후보 | 다음 확인 |
|---|---|---|
| STT raw부터 틀림 | STT/음성 전처리/발음/환경 소음 | raw 음성, STT 모델, 전처리 조건 |
| STT는 맞고 토큰이 틀림 | 딕셔너리/로컬 LLM 오매칭 | [DICTIONARY_MATCH], parsedLlamaResponse |
| 토큰은 맞고 실행이 안 됨 | ApiCallValidator/기기 상태/API | error code, DeviceStatus, Device API 호출 |
| 로컬 실패 후 Cloud가 이상한 답변 | Cloud prompt/Case 분류 | Cloud response JSON |
| Cloud Case 2는 맞지만 로컬 재매칭 실패 | rewrite_query 품질/딕셔너리 부족 | rewrite_query를 로컬 딕셔너리 테스트 |
| TTS가 사양과 다름 | string resource/FunctionCallHandler 분기 | ttsText, R.string.* |
| 화면이 안 뜸 | setLauncherScreen 분기/API |
launcher screen command |
| 멀티턴이 꼬임 | multiTurnBusy, skipResume, isCloudContinue |
상태 전환 로그 |