JSCODE Logo
블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] Structured Output Converter를 통한 쇼핑몰 CS 문의 긴급도 분류하기

JSCODE 시니
JSCODE 시니
2026. 06. 13.
author
JSCODE 시니
category
Spring AI
createdAt
Jun 13, 2026 09:52 AM
isPublic
isPublic
series
실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
slug
practice-cs-classification-using-structured-output-converter
type
post
updatedAt
notion image

✅ 1. Structured Output Converter란?

  • AI가 뱉어내는 일반 텍스트(String) 답변을, 우리 백엔드 서버에서 원하는 자바 객체로 자동 변환해주는 번역기
 
 
 

✅ 2. enum, record 정의

ChatService.java
// 1. 긴급도, 문의 카테고리 Enum 정의 public enum Urgency { LOW, NORMAL, HIGH, URGENT } public enum Category { REFUND, SHIPPING, DEFECT, INQUIRY } // 2. 응답 레코드 정의 public record CsEvaluation( Category category, Urgency urgency, List<String> keywords // 예: ["배송지연", "환불요청", "파손"] ) {}
 
 
 

✅ 3. Service 메서드 생성

public CsEvaluation csEvaluation(Prompt prompt, String conversationId){ return prepareRequest(prompt, conversationId).call().entity(CsEvaluation.class); }
 
 
 

✅ 4. Controller 메서드 생성

@PostMapping(value = "/cs", produces = MediaType.APPLICATION_JSON_VALUE) public ChatService.CsEvaluation cs(@RequestBody @Valid PromptBody promptBody) { return chatService.csEvaluation(createPrompt(promptBody), promptBody.conversationId()); }
 
 
 

✅ 5. 테스트 및 결과확인

{ "conversationId": "string1", "userPrompt": "물건이 일주일째 안 옵니다. 지금 당장 환불해주세요", "systemPrompt": "너는 쇼핑몰 CS 문의를 분류하는 냉철하고 객관적인 담당자야. 고객의 감정적인 표현에 휘둘리지 말고 오직 '사실'에만 기반해서 긴급도를 평가해", "chatOptions": { "temperature": 0.0 } }
notion image
💁‍♀️
Ollama 모델로 테스트가 잘되지 않는 경우, OPENAI로 변경하여 테스트 해보세요!