diff --git a/pom.xml b/pom.xml
index 8f61853..163598e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,7 @@
snails-ai
21
+ 1.0.3
@@ -36,12 +37,46 @@
org.springframework.boot
spring-boot-starter-data-jpa
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
com.mysql
mysql-connector-j
runtime
+
+
+ com.alibaba.cloud.ai
+ spring-ai-alibaba-starter-dashscope
+
+
+
+ com.github.ulisesbocchio
+ jasypt-spring-boot-starter
+ 3.0.5
+
+
+
+
+
+ org.springframework.ai
+ spring-ai-bom
+ ${spring-ai.version}
+ pom
+ import
+
+
+ com.alibaba.cloud.ai
+ spring-ai-alibaba-bom
+ 1.0.0.2
+ pom
+ import
+
+
+
@@ -72,4 +107,4 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java b/src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java
new file mode 100644
index 0000000..0baaeb0
--- /dev/null
+++ b/src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java
@@ -0,0 +1,19 @@
+package com.hanserwei.snailsai.config;
+
+import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel;
+import jakarta.annotation.Resource;
+import org.springframework.ai.chat.client.ChatClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ChatClientConfiguration {
+
+ @Resource
+ private DashScopeChatModel dashScopeChatModel;
+
+ @Bean
+ public ChatClient dashScopeChatClient() {
+ return ChatClient.builder(dashScopeChatModel).build();
+ }
+}
diff --git a/src/main/java/com/hanserwei/snailsai/controller/DashScopeController.java b/src/main/java/com/hanserwei/snailsai/controller/DashScopeController.java
new file mode 100644
index 0000000..16ca13c
--- /dev/null
+++ b/src/main/java/com/hanserwei/snailsai/controller/DashScopeController.java
@@ -0,0 +1,24 @@
+package com.hanserwei.snailsai.controller;
+
+import jakarta.annotation.Resource;
+import org.springframework.ai.chat.client.ChatClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/dashscope")
+@RestController
+public class DashScopeController {
+
+ @Resource
+ private ChatClient dashScopeChatClient;
+
+ @GetMapping("/chat")
+ public String chat(@RequestParam("userPrompt") String userPrompt) {
+ return dashScopeChatClient.prompt()
+ .user(userPrompt)
+ .call()
+ .content();
+ }
+}
diff --git a/src/main/java/com/hanserwei/snailsai/utils/EncryptorUtil.java b/src/main/java/com/hanserwei/snailsai/utils/EncryptorUtil.java
new file mode 100644
index 0000000..0b89eb4
--- /dev/null
+++ b/src/main/java/com/hanserwei/snailsai/utils/EncryptorUtil.java
@@ -0,0 +1,11 @@
+package com.hanserwei.snailsai.utils;
+
+import org.jasypt.util.text.AES256TextEncryptor;
+
+public class EncryptorUtil {
+ public static void main(String[] args) {
+ AES256TextEncryptor textEncryptor = new AES256TextEncryptor();
+ textEncryptor.setPassword("yyyyyyyyyyyy");
+ System.out.println(textEncryptor.encrypt("xxxxxxxxxxxxxxxxxxxxxx"));
+ }
+}
diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml
index 46d992c..a44f393 100644
--- a/src/main/resources/config/application.yml
+++ b/src/main/resources/config/application.yml
@@ -23,8 +23,20 @@ spring:
minimum-idle: 20 # 保持 20 个空闲连接(与最大连接数一致)
connection-timeout: 5000 # 获取连接超时 5 秒
max-lifetime: 28800000 # 8 小时(确保在数据库连接超时前被回收)
+ ai:
+ dashscope:
+ api-key: ENC(cMgcKZkFllyE88DIbGwLKot9Vg02co+gsmY8L8o4/o3UjhcmqO4lJzFU35Sx0n+qFG8pDL0wBjoWrT8X6BuRw9vNlQhY1LgRWHaF9S1zzyM=)
+ chat:
+ options:
+ model: qwen-plus
+ temperature: 0.5
logging:
level:
org.hibernate.SQL: debug
# 隐藏掉 Hibernate 冗长的连接池 INFO 信息
- org.hibernate.orm.connections.pooling: WARN
\ No newline at end of file
+ org.hibernate.orm.connections.pooling: WARN
+jasypt:
+ encryptor:
+ password: ${jasypt.encryptor.password}
+ algorithm: PBEWithHMACSHA512AndAES_256
+ iv-generator-classname: org.jasypt.iv.RandomIvGenerator
\ No newline at end of file