From 841523c516bd54fdfd4601ec9f977a17e365dbb9 Mon Sep 17 00:00:00 2001 From: Sujin Kim Date: Tue, 26 Nov 2024 22:08:09 +0900 Subject: [PATCH] =?UTF-8?q?fix=20:=20=EA=B3=B5=EB=B0=B1=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simter/domain/chatbot/service/ClaudeAPIService.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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&&[^<]]+)<", "<"); + } }