docs: add closure research for naverworks insight preamble leak
This commit is contained in:
parent
0f97331f0e
commit
9330b564c7
@ -0,0 +1,84 @@
|
||||
---
|
||||
tags: [research, naverworks, briefing, insight, llm, closure]
|
||||
---
|
||||
|
||||
# NAVER WORKS 브리핑 인사이트 서두 누출 종료 리서치
|
||||
|
||||
## 관련 문서
|
||||
- [NAVER WORKS 브리핑 인사이트 서두 문구 누출](../troubleshooting/260311_naverworks_briefing_insight_preamble_leak.md)
|
||||
- [자가수정 에이전트 프레임워크 및 Workspace CLI 검증 리서치](./260311_자가수정_에이전트_프레임워크_및_workspace_cli_검증_리서치.md)
|
||||
|
||||
## 목적
|
||||
- `로빙입니다. 사용자님께서는... 요약해 드리겠습니다.` 같은 서두가 NAVER WORKS 브리핑 인사이트에 노출되는 문제를 어떤 수정으로 닫는 것이 맞는지 결정 가능한 근거를 남깁니다.
|
||||
- 이 문서는 이번 문제를 닫기 위한 리서치에 한정합니다.
|
||||
|
||||
## 조사 질문
|
||||
1. 현재 서두 문구는 어느 레이어에서 붙는가
|
||||
2. 직접 원인은 무엇인가
|
||||
3. 이번 문제를 닫는 최소 수정은 무엇인가
|
||||
4. 수정 후 어떤 테스트와 로그 기준이 있어야 닫혔다고 볼 수 있는가
|
||||
|
||||
## 확인된 사실
|
||||
1. `2026-03-11 09:00 KST` NAVER WORKS 브리핑 실행 로그에서 아래 순서가 확인됐다.
|
||||
- `Running job: NAVER WORKS Daily Briefing`
|
||||
- `Generated insight: 로빙입니다...`
|
||||
- `Briefing sent successfully: 14 emails`
|
||||
2. 인사이트 생성 프롬프트는 이미 `인사말, 서두 없이 바로 내용 시작`을 요구한다.
|
||||
- [naverworks_briefing.py](/home/admin/robeing/rb8001/app/services/skills/naverworks_briefing.py#L191)
|
||||
3. `_generate_insight()`는 현재 줄바꿈 제거만 수행하고, 금지 서두 제거/시작 패턴 검증은 하지 않는다.
|
||||
- [naverworks_briefing.py](/home/admin/robeing/rb8001/app/services/skills/naverworks_briefing.py#L159)
|
||||
4. Slack 포맷터는 전달받은 `insight`를 그대로 `*{insight}*`로 넣는다.
|
||||
- [naverworks_briefing.py](/home/admin/robeing/rb8001/app/services/skills/naverworks_briefing.py#L278)
|
||||
5. 현재 테스트는 정상 문장만 검증하고, `로빙입니다`, `요약해 드리겠습니다`, `사용자님께서는` 같은 금지 서두 누출 케이스는 다루지 않는다.
|
||||
- [test_naverworks_briefing.py](/home/admin/robeing/rb8001/tests/test_naverworks_briefing.py#L37)
|
||||
|
||||
## 해석
|
||||
- 이 문제는 Slack 포맷 문제나 스케줄 실패 문제가 아니다.
|
||||
- 직접 원인은 LLM이 프롬프트를 어긴 출력값을 냈고, 애플리케이션이 그 값을 검증 없이 통과시킨 것이다.
|
||||
- 즉 장애의 본질은 `프롬프트만 있고 출력 강제 규칙이 없는 상태`다.
|
||||
|
||||
## 선택지 비교
|
||||
|
||||
### 선택지 A. 프롬프트만 더 강하게 수정
|
||||
- 장점:
|
||||
- 변경 범위가 작다
|
||||
- 코드 후처리보다 자연스러운 출력 유도 가능
|
||||
- 단점:
|
||||
- LLM 일탈이 다시 발생하면 같은 문제가 반복된다
|
||||
- 테스트 없이 프롬프트에만 의존하면 닫힌 문제로 보기 어렵다
|
||||
|
||||
### 선택지 B. 후처리만 추가
|
||||
- 장점:
|
||||
- 출력 강제력이 생긴다
|
||||
- `로빙입니다`, `사용자님께서는` 같은 알려진 서두는 안정적으로 제거 가능
|
||||
- 단점:
|
||||
- 분류 문장이 완전히 다른 형태로 나오면 여전히 누락 가능
|
||||
- 프롬프트가 약하면 후처리 규칙이 늘어날 수 있다
|
||||
|
||||
### 선택지 C. 프롬프트 강화 + 후처리 + 금지 케이스 테스트 추가
|
||||
- 장점:
|
||||
- 생성 단계와 검증 단계 둘 다 보강된다
|
||||
- 이번 문제를 닫는 기준으로 가장 명확하다
|
||||
- 재발 방지까지 같이 확보된다
|
||||
- 단점:
|
||||
- A/B보다 수정 범위가 조금 넓다
|
||||
|
||||
## 결론
|
||||
- 이번 문제를 닫는 최소 충분 조건은 `선택지 C`다.
|
||||
- 이유:
|
||||
1. 프롬프트만으로는 이미 한 번 실패했다.
|
||||
2. 후처리만으로는 모델 출력 형태가 달라질 때 불안정하다.
|
||||
3. 테스트가 없으면 문제 재발 시 다시 눈으로만 확인해야 한다.
|
||||
|
||||
## 닫힘 기준
|
||||
1. `_generate_insight()` 또는 인사이트 직후 경로에서 금지 서두 제거/검증이 추가돼야 한다.
|
||||
2. 프롬프트는 `회신 필요`, `결제/청구`, `안내/공지` 같은 분류 표현으로 바로 시작하도록 더 강하게 제한돼야 한다.
|
||||
3. 테스트에 아래 케이스가 추가돼야 한다.
|
||||
- `로빙입니다... 회신 필요 1건`
|
||||
- `사용자님께서는... 결제/청구 1건`
|
||||
- `오늘 알아야 할 메일 핵심 내용을... 안내/공지 3건`
|
||||
4. 실행 로그의 `Generated insight:`와 실제 Slack 노출값 모두에서 금지 서두가 0건이어야 한다.
|
||||
|
||||
## 이번 문제를 닫는 실행 문장
|
||||
- 이 문제는 `LLM 출력 일탈을 허용한 검증 부재` 문제다.
|
||||
- 따라서 닫는 방법은 `프롬프트 보강`만이 아니라 `출력 후처리와 금지 케이스 테스트`를 함께 넣는 것이다.
|
||||
@ -11,6 +11,7 @@
|
||||
- [51124 먹통 48시간 코드 차분 원인 확정 리서치 (260304)](./260304_51124_먹통_48시간_코드차분_원인확정_리서치.md)
|
||||
- [9시 네이버 이메일 분석 미전송 실패 은닉 리서치 (260309)](./260309_9시_네이버이메일분석_미전송_실패은닉_리서치.md)
|
||||
- [자가수정 에이전트 프레임워크 및 Workspace CLI 검증 리서치 (260311)](./260311_자가수정_에이전트_프레임워크_및_workspace_cli_검증_리서치.md)
|
||||
- [NAVER WORKS 브리핑 인사이트 서두 누출 종료 리서치 (260311)](./260311_naverworks_briefing_insight_preamble_leak_closure_research.md)
|
||||
|
||||
### [기억(Memory)](./memory/README.md)
|
||||
- 장단기 기억 메커니즘
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user