Your AI summarizer is leaking its own chain-of-thought. Here's the 30-line fix.
개요
AI 요약 API가 내부 사고 과정을 그대로 노출하는 문제를 발견했으며, 이는 사용자가 의도하지 않은 결과를 초래하여 API 사용률을 저하시킬 수 있다.
주요 내용
* 문제점 발견: AI 요약 API가 응답으로 요약 대신 모델의 내부 사고 과정을 출력하는 현상을 확인했다. 이 현상은 간헐적으로 발생하며, <think> 태그로 둘러싸인 텍스트나 gpt-oss의 harmony 포맷과 같은 특정 형식에서 나타난다.
* 원인 분석: 멀티 모델 캐스케이드를 사용하여 여러 LLM 제공업체를 라우팅할 때, 일부 제공업체(특히 셀프 호스팅, OpenRouter, 특정 저가 제공업체)는 모델의 추론(reasoning trace)을 제거하지 않고 그대로 반환한다. 기존의 후처리 로직은 이러한 추론 형식을 인지하지 못해 그대로 사용자에게 전달한다.
* 문제의 영향: 이러한 문제는 API의 데모 전환율을 심각하게 저하시킬 수 있다. 사용자는 내부 독백을 보고 API를 사용하려던 시도를 포기할 수 있으며, 문제의 원인을 알기 어렵다.
* 해결 방안: 정규 표현식을 사용하여 응답 텍스트에서 <think> 태그로 둘러싸인 내용과 gpt-oss harmony 포맷의 추론 부분을 제거하는 clean_reasoning 함수를 구현했다. 이 함수는 중첩된 사고 과정이나 닫히지 않은 <think> 태그 등 다양한 상황을 처리한다.
* 적용 방법: 이 clean_reasoning 함수를 API 응답을 JSON 형태로 반환하기 전에 적용하여 모델 출력을 정제한다.
* 버그 탐지 방법: API 엔드포인트에 10번의 요청을 보내면서 <think> 또는 <|channel|>analysis와 같은 패턴이 출력되는지 확인하여 해당 버그의 존재 여부를 진단할 수 있다.
* 실제 사례: 해당 버그로 인해 수천 건의 트래픽에도 불구하고 API 전환율이 0%에 가까웠던 사례를 공유하며, 문제 해결의 필요성을 강조했다.
시사점
AI 요약 API와 같이 LLM을 활용하는 서비스에서는 모델의 내부 추론 과정이 의도치 않게 노출되는 문제를 방지하기 위한 후처리 로직 강화가 필수적이며, 이를 통해 사용자 경험을 개선하고 서비스의 신뢰도를 높일 수 있다.
댓글
GitHub Discussions