diff --git a/src/main/java/com/simter/domain/chatbot/service/ClaudeAPIService.java b/src/main/java/com/simter/domain/chatbot/service/ClaudeAPIService.java index e01541e..de9882c 100644 --- a/src/main/java/com/simter/domain/chatbot/service/ClaudeAPIService.java +++ b/src/main/java/com/simter/domain/chatbot/service/ClaudeAPIService.java @@ -172,7 +172,6 @@ public Mono chatWithClaude(ClaudeRequestDto request, Long cou + "" + ""; - // 전체 XML 구조 통합 String xmlPrompt = "\n" + systemPrompt + "\n"; @@ -184,10 +183,11 @@ public Mono chatWithClaude(ClaudeRequestDto request, Long cou private Mono parseXMLChatResponse(String xmlResponse, CounselingLog counselingLog, ClaudeRequestDto request) { try { + String cleanedResponse = cleanXmlString(xmlResponse); // XML 파서 초기화 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); - String assistantResponseText = new JSONObject(xmlResponse) + String assistantResponseText = new JSONObject(cleanedResponse) .getJSONArray("content") .getJSONObject(0) .getString("text"); @@ -488,6 +488,10 @@ private LocalDateTime generateRandomTime() { long randomSeconds = ThreadLocalRandom.current().nextLong(minSeconds, maxSeconds); return LocalDateTime.now().plusSeconds(randomSeconds); } + + private String cleanXmlString(String xml) { + return xml.trim().replaceFirst("^([\\W&&[^<]]+)<", "<"); + } }