6 Bugs Only a Live Model Could Teach Us

오프라인 테스트는 필요합니다. 하지만 그것만으로는 충분하지 않습니다.

저는 페루의 환경 규제 준수 여부를 추적하기 위해 AgentOps Debugger를 구축했습니다. 이 시스템은 Qwen Cloud의 Qwen-plus를 사용하여 기록을 찾고 보고서를 작성합니다.

저는 시스템을 오프라인 우선(offline-first) 방식으로 설계했습니다. 315개의 테스트를 네트워크 호출 없이 실행했고, 모든 테스트를 통과했습니다. 하지만 Alibaba Cloud의 라이브 모델로 전환하자 시스템이 망가졌습니다.

코드는 문제가 없었습니다. 문제는 모델의 출력값이었습니다.

실제 모델 실패 사례에서 얻은 6가지 교훈은 다음과 같습니다:

• Label Mismatch (레이블 불일치) 스키마는 "completed" 또는 "failed"를 기대했습니다. 하지만 모델은 "success"나 "done"을 보냈습니다. 파서는 단어 하나 때문에 유용한 답변을 거부했습니다. 해결책: 유의어를 정규화하기 위해 관대한 전처리기(tolerant preprocessors)를 사용하세요.

• Degenerate Plans (퇴화된 계획) 플래너가 때때로 아무것도 반환하지 않았습니다. 앱은 이 침묵을 일반적인 응답으로 변환하려 시도했고, 이로 인해 가짜 답변이 생성되었습니다. 해결책: 계획 해석기(plan interpreter)를 추가하세요. 계획이 비어 있다면 거짓말을 하는 대신 시스템이 계획 수립에 실패했다고 사용자에게 알리세요.

• Schema Drift (스키마 드리프트) 모델이 "documentTitle"과 같은 필드 이름을 "title"로 변경했습니다. 또한 영어와 스페인어 레이블을 혼용했습니다. 해결책: 별칭 매핑(alias mapping)을 사용하고 유효한 부분을 살리세요. 인용구 하나가 잘못되었다면 나머지 4개는 유지하세요.

• Unpaired Tasks (짝이 맞지 않는 작업) 모델이 보고서를 초안 작성하기도 전에 저장해 달라고 요청했습니다. 로직 자체는 안전했지만, 사용자 경험(UX)은 망가졌습니다. 해결책: 코드가 누락된 단계를 감지하고 자동으로 삽입해야 합니다.

• Loop Errors (루프 오류) 사용자가 답변한 후에도 모델이 계속해서 동일한 확인 질문을 던졌습니다. 해결책: 엔티티 해소(entity resolution)를 모델에서 코드로 옮기세요. 사용자가 데이터를 제공하면 시스템이 나머지를 결정론적(deterministically)으로 처리하도록 합니다.

• False Ambiguity (허위 모호성) 모델이 모호하지 않은 회사 이름을 모호하다고 주장했습니다. 이로 인해 워크플로우가 중단되었습니다. 해결책: 모델이 모호성을 제안하게 하되, 그것이 실제인지 여부는 데이터가 결정하게 하세요.

핵심 원칙: LLM이 이야기를 들려주게 하되, 구조화된 결과물까지 맡기지는 마세요.

모델은 의도, 계획, 언어를 처리해야 합니다. 코드는 엔티티 해소, 차트 데이터, 보고서 조립을 처리해야 합니다.

모든 결론을 기록으로 추적할 수 있을 때 시스템은 신뢰할 수 있게 됩니다. 이야기는 모델에게 맡기되, 진실은 코드로 처리하세요.

Source: https://dev.to/ginollerena/six-bugs-only-a-live-model-could-teach-us-57k5

Optional learning community: https://t.me/GyaanSetuAi