✨Feat: 完成 LLM 接入

This commit is contained in:
2025-10-25 14:26:09 +08:00
parent dcf0f5cfdb
commit 27cb78112d
6 changed files with 95 additions and 4 deletions
+18 -2
View File
@@ -18,6 +18,18 @@
<version>3.2.2</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
@@ -26,8 +38,7 @@
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-client-chat</artifactId>
<version>1.0.3</version>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
<dependency>
@@ -36,6 +47,11 @@
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
@@ -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;
}
}
@@ -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 = "冬天";
}
@@ -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());
}
}
@@ -0,0 +1,9 @@
package com.wonderland.stardewvalley.entity;
import lombok.Data;
@Data
public class AIChatRequest {
private String backGround;
private String content;
}
+8 -1
View File
@@ -16,8 +16,15 @@ knife4j:
setting:
language: zh_cn
spring:
mvc:
servlet:
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