---
tags: [robeing, rb8001, prompt, intent, context, rag, troubleshooting]
---

# rb8001 프롬프트·의도분석·문맥응답 품질 문제 오픈

**상태**: 종결 (2026-03-19)
**종결 근거**: 시스템 프롬프트 v3 교체(과잉 서비스 제거), OpenAI 대화 이력 전달(문맥 유실 해소), neutral 감정 constraints 생략. 재현 질문셋 4건 전수 통과. 상세는 [수정 워크로그](../worklog/260319_rb8001_응답품질_톤과장_문맥유실_수정_및_검증완료.md) 참조.
**관측일**: 2026-03-17
**범위**: Slack 실사용 경로의 일반 대화, Company X RAG 질문, 후속질문 응답 품질

## 관련 문서
- [rb8001 응답 품질 톤 과장·문맥 유실 전수 조사 리서치](../research/260319_rb8001_응답품질_톤과장_문맥유실_전수조사_리서치.md)
- [rb8001 응답 품질 수정 계획](../plans/260319_rb8001_응답품질_톤과장_문맥유실_수정계획.md)
- [rb8001 응답 품질 수정 워크로그](../worklog/260319_rb8001_응답품질_톤과장_문맥유실_수정_및_검증완료.md)
- [Company X RAG 답변 합성 회귀](./260312_companyx_rag_answer_composition_regression.md)
- [rb8001 Slack Signing Secret 오값 복구 및 실유입 검증](../worklog/260317_rb8001_slack_signing_secret_오값복구_및_실유입검증.md)
- [의도 파싱 greeting/context followup fix](./251122_intent_parsing_greeting_context_followup_fix.md)

## 문제

- Slack 연동 자체는 복구되어 `로빙?` 멘션에 응답은 다시 시작했지만, 응답 품질은 여전히 실사용 기준에 못 미칩니다.
- `컴퍼니엑스 인원수를 알려줘. rag 이용해서` 질문에 대해 내부 문서 근거 부족 실패 응답으로 끝납니다.
- `지금 컴액의 mou는 올해 어디랑 했어` 질문도 같은 실패 응답으로 끝납니다.
- `오늘 날씨는 어때?` 질문에는 실시간 조회 불가 안내까진 가능했지만, 사용자가 `난 지금 서울이야`라고 말한 뒤에도 날씨를 이어서 설명하지 못하고 일반 도움말로 빠집니다.
- 이어서 `내가 지금 어디라고?`라는 후속 질문에는 직전 발화 `서울`을 유지하지 못하고 위치 공유 안내로 되돌아갑니다.

## 왜 문제인가

- 사용자는 이미 필요한 맥락을 제공했는데, 로빙이 이를 유지하지 못하면 기본 대화 어시스턴트 기대를 충족하지 못합니다.
- Company X 질의는 검색 실패 자체보다, 실패 응답이 과도하게 고정되어 있어 사용자가 "찾고 있는지", "정말 없는지", "질문이 잘못 분류됐는지"를 구분할 수 없습니다.
- 말투도 실제 사용자 기대보다 과하게 장황하고 의전형으로 흐르며, 작업형 어시스턴트보다 홍보형 어시스턴트처럼 보입니다.

## 확인된 사실

1. 현재 응답 모델은 `gpt-5-mini`입니다.
2. 메인 의도분석은 `DecisionEngine`의 규칙 기반 패턴 매칭입니다.
3. 스킬 선택도 의도별 하드코딩된 시퀀스 매핑이 중심이며, LLM이 자유롭게 스킬을 선택하는 구조가 아닙니다.
4. LLM은 주로 최종 응답 생성, 짧은 질문 확장, 대명사 해소, clarify 해석, Company X grounding 같은 보조 단계에 사용됩니다.
5. OpenAI 기본 시스템 프롬프트는 `스타트업 대표 전용 AI 어시스턴트`, `전문적이면서도 친근한 톤`, `한국어`, `이모지 금지` 수준으로 정의돼 있습니다.
6. 실제 응답 톤은 기본 시스템 프롬프트보다 감정 분석, 호칭(`이사님`), task별 `system_instruction` 누적의 영향을 크게 받습니다.
7. Company X 질문은 `try_companyx_grounding()`이 먼저 가로채며, 근거 부족 시 실패 응답으로 조기 종료될 수 있습니다.

## 원인 (2026-03-19 리서치에서 확정)

상세는 [리서치 §2](../research/260319_rb8001_응답품질_톤과장_문맥유실_전수조사_리서치.md) 참조.

1. **톤 과장**: 시스템 프롬프트의 "항상 도움이 되는 방향으로 조언", "액션 아이템 제시" 문구가 매 응답마다 과잉 서비스를 유도. (`openai_handler.py:206~226`)
2. **문맥 유실**: OpenAI handler가 `previous_messages` 키를 읽는데, 이 키를 아무도 채우지 않음. `recent_conversations`는 로드되지만 OpenAI 형식으로 변환 안 됨. (`llm_service.py`, `openai_handler.py:64`)
3. **과잉 제안**: "묻지 않은 것은 제안하지 마라" 지시 부재 + 응답 길이 제한 없음.
4. **감정 constraints 무조건 주입**: neutral 감정에서도 "자연스럽게 중간 응답하세요"가 붙어 응답을 늘림. (`llm_service.py:262~268`)
5. `companyx_rag` 경로의 실패 응답 전략은 23에서 별도 작업 중 (이번 범위 제외).

## 코드 기준 구조 요약

- 기본 시스템 프롬프트: `app/services/llm/openai_handler.py`
- 메인 의도분석: `app/services/brain/decision_engine.py`
- 메시지 라우팅/질문 확장/grounding 선처리: `app/services/message_service.py`
- 감정 분석 및 호칭 주입: `app/services/llm/internal_llm_service.py`, `app/services/addressing_service.py`
- Company X grounding: `app/services/companyx_grounding_service.py`

## 필요한 조치

1. 일반 대화 프롬프트에서 홍보형 소개 문장과 과한 의전형 톤을 줄입니다.
2. `weather`, `location`, `context_followup` 질문을 실사용 예시 기준으로 다시 분류합니다.
3. `서울`처럼 직전 사용자 제공 사실을 짧은 후속 질문에서 우선 회수하도록 문맥 유지 규칙을 보강합니다.
4. Company X RAG 실패 응답을 단일 고정 문구에서 벗어나, 질문 유형별 실패 이유를 분리합니다.
5. `gpt-5-mini` 유지 여부는 위 구조를 정리한 뒤 다시 평가합니다. 현재 문제는 모델 자체보다 라우팅/프롬프트 구조 영향이 큽니다.

## 재현 질문셋

1. `로빙?`
2. `컴퍼니엑스 인원수를 알려줘. rag 이용해서`
3. `지금 컴액의 mou는 올해 어디랑 했어`
4. `오늘 날씨는 어때?`
5. `난 지금 서울이야`
6. `내가 지금 어디라고?`

## 닫힘 조건

- 위 질문셋에서 Company X 질문은 실패하더라도 질문 유형에 맞는 실패 이유를 반환해야 합니다.
- `서울` 제공 후 후속 질문에서 직전 위치 맥락을 유지해야 합니다.
- 불필요한 자기소개/과장된 안내문 없이 짧고 작업형 응답으로 정리돼야 합니다.
