diff --git a/pom.xml b/pom.xml index f37f53f..c178eb9 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,18 @@ 3.2.2 + + + + org.springframework.ai + spring-ai-bom + 1.0.3 + pom + import + + + + org.springframework.boot @@ -26,8 +38,7 @@ org.springframework.ai - spring-ai-client-chat - 1.0.3 + spring-ai-starter-model-openai @@ -36,6 +47,11 @@ 4.4.0 + + org.projectlombok + lombok + + org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/com/wonderland/stardewvalley/ai/ChatUtil.java b/src/main/java/com/wonderland/stardewvalley/ai/ChatUtil.java new file mode 100644 index 0000000..3c3a748 --- /dev/null +++ b/src/main/java/com/wonderland/stardewvalley/ai/ChatUtil.java @@ -0,0 +1,25 @@ +package com.wonderland.stardewvalley.ai; + +import jakarta.annotation.Resource; +import org.springframework.ai.chat.client.ChatClient; +import org.springframework.stereotype.Service; + +@Service +public class ChatUtil { + + private final ChatClient chatClient; + + public ChatUtil(ChatClient.Builder chatClientBuilder) { + this.chatClient = chatClientBuilder.build(); + } + + public String doChat(String background, String input) { + String content = chatClient + .prompt() + .system("你是一个AI助手,请根据背景和输入生成回复") + .user("[BackGround]: " + background + "\n[Input]: " + input) + .call() + .content(); + return content; + } +} diff --git a/src/main/java/com/wonderland/stardewvalley/constant/BackGroundConstant.java b/src/main/java/com/wonderland/stardewvalley/constant/BackGroundConstant.java new file mode 100644 index 0000000..4f864c4 --- /dev/null +++ b/src/main/java/com/wonderland/stardewvalley/constant/BackGroundConstant.java @@ -0,0 +1,12 @@ +package com.wonderland.stardewvalley.constant; + +import lombok.Getter; + +@Getter +public class BackGroundConstant { + + private static final String BACKGROUND_SPRING = "春天"; + private static final String BACKGROUND_SUMMER = "夏天"; + private static final String BACKGROUND_AUTUMN = "秋天"; + private static final String BACKGROUND_WINTER = "冬天"; +} diff --git a/src/main/java/com/wonderland/stardewvalley/controller/ChatController.java b/src/main/java/com/wonderland/stardewvalley/controller/ChatController.java new file mode 100644 index 0000000..e35c333 --- /dev/null +++ b/src/main/java/com/wonderland/stardewvalley/controller/ChatController.java @@ -0,0 +1,22 @@ +package com.wonderland.stardewvalley.controller; + +import com.wonderland.stardewvalley.ai.ChatUtil; +import com.wonderland.stardewvalley.entity.AIChatRequest; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("chat") +public class ChatController { + + @Resource + private ChatUtil chatUtil; + + @PostMapping + public String chat(@RequestBody AIChatRequest aiChatRequest) { + return chatUtil.doChat(aiChatRequest.getBackGround(), aiChatRequest.getContent()); + } +} diff --git a/src/main/java/com/wonderland/stardewvalley/entity/AIChatRequest.java b/src/main/java/com/wonderland/stardewvalley/entity/AIChatRequest.java new file mode 100644 index 0000000..0178a61 --- /dev/null +++ b/src/main/java/com/wonderland/stardewvalley/entity/AIChatRequest.java @@ -0,0 +1,9 @@ +package com.wonderland.stardewvalley.entity; + +import lombok.Data; + +@Data +public class AIChatRequest { + private String backGround; + private String content; +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 6a1c068..b1eea33 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -16,8 +16,15 @@ knife4j: setting: language: zh_cn - spring: mvc: servlet: - path: /api \ No newline at end of file + path: /api + ai: + openai: + api-key: sk-ciqpxjuhasowxqpmlqizsfoioyhllcscbtjfczmoeddcbdxy + base-url: https://api.siliconflow.cn + chat: + options: + model: Pro/Qwen/Qwen2.5-7B-Instruct + temperature: 0.7 \ No newline at end of file