Flowise와 LLM을 활용한 에러 분석 자동화 요약
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 소프트웨어 개발자/엔지니어 (특히 백엔드 개발자, 프론트엔드 개발자, 프로젝트 매니저)
- 난이도: 중간~고급 (LLM 활용, 워크플로우 구성, API 문서화 기술 필요)
핵심 요약
- LLM을 활용한 자동화 에러 분석 시스템 구축:
Flowise
+ChatOpenAI
+Structured Output Parser
조합으로 에러 원인 추론 및 해결 가이드 자동 생성 가능 - Swagger 기반 API 문서화 강화:
org.springdoc:springdoc-openapi-starter-webmvc-ui
와springdoc-openapi-starter-webmvc-api
를 통해 LLM 메타데이터 제공으로 정확도 향상 - 구조화된 출력 포맷 정의:
action
,reason
,guide
,inference
4가지 키-값 쌍을 포함하는 JSON 형식의 Structured Output Parser 사용
섹션별 세부 요약
1. 문제 상황
- 클라이언트에 제공되는 에러 메시지가 불충분하거나 보안적 이슈로 추상화되어 원인 파악이 어려움
- 시간 낭비 및 팀 생산성 저하 발생
2. 해결 방안
- LLM 활용: 요청 정보, API 스펙, 에러 스택 트레이스를 LLM에 제공하여 에러 원인 분석 및 해결 제안 자동화
- Flowise 워크플로 구성:
ChatOpenAI
,API Loader
,Structured Output Parser
,Chat Prompt Template
활용
3. 구현 요소
- LLM 모델:
toss-standard
(토스 자체 생성 모델) 활용 - API 문서화 도구:
SpringDoc
기반 Swagger UI 및 OpenAPI JSON/YAML 문서 제공 - Structured Output Parser: LLM 응답을 JSON 형식으로 강제화 (4개 키-값 쌍 정의)
4. 프롬프트 설계 원칙
- 역할 분리: 고급 BE 개발자, 주니어 FE, PM 기획자에 맞춘 간결한 설명 제공
- 메타데이터 활용: API 스펙을 도메인 언어로 통합하여 상황 설명
- 예시 제공: 추론 이유 명시로 정확도 향상 도모
5. 구현 예시
- 1번 예시:
ImageCardNotFound
에러 시존재하지 않는 이미지 카드 ID
전달 요구 - 2번 예시:
IndexOutOfBoundsException
시shareCode
파라미터 누락 시 지적 - 3번 예시:
Decrypt
에러 시 올바른 값 전달 요구
6. 코드 구현
- AnalyzeErrorRequest/AnalyzeErrorResult 클래스 정의
- LLMErrorAnalyzer 컴포넌트:
```kotlin
@Component
class LlmErrorAnalyzer(
@Qualifier("llmWebClient") private val llmWebClient: WebClient,
private val llmProperties: LlmProperties
) : ErrorAnalyzer
```
- StackTrace 필터링 및 Method Signature 추출 로직 포함
7. 알림 정책
- 알림 조건: 알림 요청 헤더 존재 시 발송
- 중복 방지: 동일 에러는 10분 간격으로 발송
- 로그 링크 첨부: 모호한 에러 시 로그 링크 포함
결론
- LLM + Flowise 자동화 시스템으로 에러 분석 시간 최대 50% 절감 가능
- Swagger API 문서화 강화와 구조화된 출력 포맷 정의가 핵심
toss-standard
모델 활용 시 정확도 90% 이상 달성 가능 (내부 테스트 기준)