From fe1bd4d44e573d7122fc92982581c00db8ab8583 Mon Sep 17 00:00:00 2001 From: Mouon Date: Sat, 6 Jan 2024 20:57:47 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit chat.html추가 UserController 리다이렉션 수정 gradle파일에 의존성 추가 --- .gradle/8.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes build.gradle | 1 + .../chatdiary/controller/UserController.class | Bin 609 -> 737 bytes .../compileJava/previous-compilation-data.bin | Bin 30048 -> 30499 bytes .../chatdiary/controller/ChatController.java | 50 ++++++ .../chatdiary/controller/UserController.java | 9 +- src/main/resources/static/chat.html | 147 ++++++++++++++++++ 8 files changed, 205 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/kuit/chatdiary/controller/ChatController.java create mode 100644 src/main/resources/static/chat.html diff --git a/.gradle/8.5/fileHashes/fileHashes.lock b/.gradle/8.5/fileHashes/fileHashes.lock index ce1ce011948295f7c00d6695c2daa83c4a20e630..a93437896c3994b9beb6a686d4ea7fd3349809e8 100644 GIT binary patch literal 17 VcmZQRCbIL9bM>Yy1~6b;0suED1o!{| literal 17 VcmZQRCbIL9bM>Yy1~6c30RT4%1lRxo diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index dd3234cbd46e53095f1ceb3a9371abf94db7bbf1..734126211491083c0af14afb3e03137671a81648 100644 GIT binary patch literal 17 VcmZR+KXa32Uj0H-1~6b`0RT0|1RnqZ literal 17 UcmZR+KXa32Uj0H-1_<~I05-h^7XSbN diff --git a/build.gradle b/build.gradle index b02048c5..27eb0012 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,7 @@ repositories { } dependencies { + implementation 'org.json:json:20220320' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' diff --git a/build/classes/java/main/com/kuit/chatdiary/controller/UserController.class b/build/classes/java/main/com/kuit/chatdiary/controller/UserController.class index 0f15d2cdc681f8d8fa39206eb2634f0cd3a696cb..fc8ce2e87296d2b4d08628cf110d661c45022206 100644 GIT binary patch delta 385 zcma)1J5Iw;5S;Y~6FcN@{uH$2jNCu?JlnI^ut&>k<*AacbehCB#j;Q8i>QZ}Nr*M`TrB!NPpH(zUpNvkEMCk!85y0a0 zfDM9+J+24LB1U3#ua=+%Hx?>fWej+zaxMP|P(z&=p@Al=#N1^jI=kV$Gl+Foc!M3U r{p)S9sKSnr-{CDN!x4AKf8>>lydtjpuecM07EZUPoI$q9KhA+~+WIrX delta 235 zcmaFJ`jCa|)W2Q(7#J9A86+lhnQ*X_7N-`mGjL7Jn?9L`v1D>Tqb8%pWCupg`k>U} z66gH9lA`>aoYW#~21N!=1}30J1|Z4Ez{JS2A Z;b;cNVg?bQCQ-0fF$Rz<$X;;<1^~-d8Djtd diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 2d83a78c5e211b3eca34c9345960de87e62d5936..4cd66a1735759c7c4106a5503dd4fa7f99e8d1a2 100644 GIT binary patch literal 30499 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 Ob^g=iN;+br$bSR5)juTw literal 30048 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 ask(@RequestBody Map prompt) { + RestTemplate restTemplate = new RestTemplate(); + String apiUrl = "https://api.openai.com/v1/chat/completions"; + + // OpenAI 요청 본문 구성 + JSONObject body = new JSONObject(); + body.put("model", "gpt-3.5-turbo"); + body.put("messages", new JSONObject[] { + new JSONObject().put("role", "system").put("content", "You are a playful and curious teenager. No matter the topic, you find everything fascinating and are always eager to ask lots of questions. korean"), + new JSONObject().put("role", "user").put("content", prompt.get("prompt")) + }); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setBearerAuth(OPEN_AI_KEY); + + + HttpEntity entity = new HttpEntity<>(body.toString(), headers); + + try { + ResponseEntity response = restTemplate.postForEntity(apiUrl, entity, String.class); + System.out.println("API Response: " + response.getBody()); + return response; + } catch (Exception e) { + return ResponseEntity.status(500).body("Internal Server Error"); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/kuit/chatdiary/controller/UserController.java b/src/main/java/com/kuit/chatdiary/controller/UserController.java index e23ad3bc..541a3a1a 100644 --- a/src/main/java/com/kuit/chatdiary/controller/UserController.java +++ b/src/main/java/com/kuit/chatdiary/controller/UserController.java @@ -1,12 +1,17 @@ package com.kuit.chatdiary.controller; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; -@RestController +@Controller public class UserController { + @GetMapping("/chat") + public String chat() { + return "redirect:/chat.html"; + } @GetMapping("/user") public String user() { - return "user"; + return "redirect:/user.html"; } } diff --git a/src/main/resources/static/chat.html b/src/main/resources/static/chat.html new file mode 100644 index 00000000..1e753808 --- /dev/null +++ b/src/main/resources/static/chat.html @@ -0,0 +1,147 @@ + + + + + + user + + + + + +



+



+
+
+ +
+ + +
+ + + + + + + \ No newline at end of file