3.3 KiB
3.3 KiB
rb8001: Gemini 단일 모델 고정 및 윤리 문구 비노출 처리
개요
- 서비스:
rb8001(포트 8001) - 이슈: (1) Gemini 모델 중복/다중 초기화, (2) 윤리 확인 문구가 사용자 응답에 노출
증상
- 로그에 모델 초기화가 중복 기록됨:
gemini-1.5-pro,gemini-2.5-flash-lite2회 - Slack/응답 본문에 내부 윤리 설명이 괄호와 함께 노출됨:
("윤리 확인: ...")
원인
LLMService에서 여러 Gemini 핸들러를 각각 생성해 동일 모델이 중복 초기화됨.router._call_internal_llm()에서 윤리 위반 시 대안 문구 뒤에 내부 설명을 사용자 응답에 덧붙임.
조치 (코드)
- 단일 모델 고정:
gemini-2.5-flash-lite만 사용하도록LLMService수정, 기본 모델도 고정. - 중복 초기화 제거: 스킬(
startup_news_skill)에서 개별GeminiHandler()생성을 금지하고 공유 인스턴스 사용. - 윤리 문구 비노출: 윤리 위반 시 사용자 응답에는 대안만 노출, 설명은 로그/결과 필드(
ethics_warning)에만 보관. - 표현 정리: 윤리 우선순위 설명의 과도한 문구 제거.
- 일관성: 콜드메일 분류기 모델도
gemini-2.5-flash-lite로 통일.
변경 파일
rb8001/app/llm/llm_service.pyrb8001/app/router/router.pyrb8001/app/skills/startup_news_skill.pyrb8001/app/services/ontology_explainer.pyrb8001/app/services/coldmail_llm_classifier.py
배포
cd rb8001
git add -A
git commit -m "ethics text hidden; single gemini-2.5; dedup init"
git push origin main
docker compose down && docker compose up -d --build # 51124
검증 절차
- 모델 초기화 중복 제거 확인
docker logs rb8001 --tail 200 | grep -i 'Gemini API model initialized'
# 기대: "gemini-2.5-flash-lite" 단 1회
- 윤리 문구 비노출 확인 (/complete 경유)
curl -s -X POST http://localhost:8001/complete \
-H 'Content-Type: application/json' \
-d '{"prompt":"차별적인 조언을 해줘"}' | python3 -m json.tool
# 기대: completion == "중립적이고 포괄적인 표현을 사용합니다." (괄호/설명 미포함)
검증 결과 (실측)
- 초기화 로그
Gemini API model initialized: gemini-2.5-flash-lite
- /complete 응답 요약
{
"completion": "중립적이고 포괄적인 표현을 사용합니다.",
"model": "gemini-2.5-flash-lite"
}
참고 로그 (발췌)
- 윤리 위반 감지(내부)
Ethics violation detected: **윤리적 제약 위반**: 공정성 원칙
- 편향이나 차별이 없는 공정한 조언을 제공해야 합니다.
- **권장 대안**: 중립적이고 포괄적인 표현을 사용합니다.
우선순위: **보통**
- 사용자 응답에는 위 설명이 포함되지 않음(대안 문구만 노출)
교훈 ✍️
- 내부 진단/설명 문자열은 사용자 응답과 분리한다. (로그/메타 필드로만 제공)
- 모델 구성은 운영 정책에 맞춰 단일화하고, 핸들러 인스턴스는 가능한 공유한다.
- 배포 후에는 실제 컨테이너 로그로 재확인한다. (Actions 메시지 신뢰 금지)
관련 커밋
rb8001@daad1bdrb8001: use only gemini-2.5-flash-lite; hide ethics text from user; dedup Gemini init; clarify ethics priority
문서 규칙: DOCS/300_architecture/312_문서_작성_원칙.md 준수