실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
practice-cs-classification-using-structured-output-converter
✅ 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
}
}
💁♀️
Ollama 모델로 테스트가 잘되지 않는 경우, OPENAI로 변경하여 테스트 해보세요!