diff --git a/pom.xml b/pom.xml
index 7db8d2d..b08430d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,23 +6,33 @@
org.springframework.boot
spring-boot-starter-parent
3.5.6
-
+
com.hanserwei
snails-ai
0.0.1-SNAPSHOT
+ pom
snails-ai
snails-ai
+
+
+
+ snails-chat
+
+
+
21
1.0.3
+ 3.0.5
+
+
org.springframework.boot
spring-boot-starter-web
-
org.projectlombok
lombok
@@ -33,19 +43,10 @@
spring-boot-starter-test
test
-
- 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
@@ -55,7 +56,7 @@
com.github.ulisesbocchio
jasypt-spring-boot-starter
- 3.0.5
+ ${jasypt-starter-version}
com.alibaba.cloud.ai
@@ -65,6 +66,19 @@
org.springframework.boot
spring-boot-starter-data-redis
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+ com.baomidou
+ mybatis-plus-spring-boot3-starter
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser
+
@@ -83,6 +97,13 @@
pom
import
+
+ com.baomidou
+ mybatis-plus-bom
+ 3.5.14
+ pom
+ import
+
diff --git a/snails-chat/pom.xml b/snails-chat/pom.xml
new file mode 100644
index 0000000..9d351e0
--- /dev/null
+++ b/snails-chat/pom.xml
@@ -0,0 +1,28 @@
+
+ 4.0.0
+
+ com.hanserwei
+ snails-ai
+ 0.0.1-SNAPSHOT
+
+
+ com.hanserwei.chat
+ snails-chat
+ jar
+
+ snails-chat
+
+
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
diff --git a/snails-chat/src/main/java/com/hanserwei/chat/SnailsChatApplication.java b/snails-chat/src/main/java/com/hanserwei/chat/SnailsChatApplication.java
new file mode 100644
index 0000000..62aa05c
--- /dev/null
+++ b/snails-chat/src/main/java/com/hanserwei/chat/SnailsChatApplication.java
@@ -0,0 +1,13 @@
+package com.hanserwei.chat;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@MapperScan("com.hanserwei.chat.domain.mapper")
+public class SnailsChatApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(SnailsChatApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java b/snails-chat/src/main/java/com/hanserwei/chat/config/ChatClientConfiguration.java
similarity index 92%
rename from src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java
rename to snails-chat/src/main/java/com/hanserwei/chat/config/ChatClientConfiguration.java
index 3493856..ca0d99f 100644
--- a/src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java
+++ b/snails-chat/src/main/java/com/hanserwei/chat/config/ChatClientConfiguration.java
@@ -1,9 +1,8 @@
-package com.hanserwei.snailsai.config;
+package com.hanserwei.chat.config;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel;
import com.alibaba.cloud.ai.memory.redis.BaseRedisChatMemoryRepository;
import com.alibaba.cloud.ai.memory.redis.LettuceRedisChatMemoryRepository;
-import com.hanserwei.snailsai.tools.QueryTool;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.PromptChatMemoryAdvisor;
@@ -29,8 +28,6 @@ public class ChatClientConfiguration {
@Resource
private DashScopeChatModel dashScopeChatModel;
- @Resource
- private QueryTool queryTool;
@Bean
public BaseRedisChatMemoryRepository redisChatMemoryRepository() {
@@ -54,7 +51,6 @@ public class ChatClientConfiguration {
@Bean
public ChatClient dashScopeChatClient(ChatMemory chatMemory) {
return ChatClient.builder(dashScopeChatModel)
- .defaultTools(queryTool)
.defaultAdvisors(PromptChatMemoryAdvisor.builder(chatMemory).build(), new SimpleLoggerAdvisor())
.build();
}
diff --git a/src/main/java/com/hanserwei/snailsai/config/CorsConfig.java b/snails-chat/src/main/java/com/hanserwei/chat/config/CorsConfig.java
similarity index 95%
rename from src/main/java/com/hanserwei/snailsai/config/CorsConfig.java
rename to snails-chat/src/main/java/com/hanserwei/chat/config/CorsConfig.java
index ec9e2e7..ff850ce 100644
--- a/src/main/java/com/hanserwei/snailsai/config/CorsConfig.java
+++ b/snails-chat/src/main/java/com/hanserwei/chat/config/CorsConfig.java
@@ -1,4 +1,4 @@
-package com.hanserwei.snailsai.config;
+package com.hanserwei.chat.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
diff --git a/snails-chat/src/main/java/com/hanserwei/chat/config/RedisConfig.java b/snails-chat/src/main/java/com/hanserwei/chat/config/RedisConfig.java
new file mode 100644
index 0000000..5af31dc
--- /dev/null
+++ b/snails-chat/src/main/java/com/hanserwei/chat/config/RedisConfig.java
@@ -0,0 +1,30 @@
+package com.hanserwei.chat.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+@Configuration
+public class RedisConfig {
+ @Bean
+ public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
+ RedisTemplate redisTemplate = new RedisTemplate<>();
+ // 设置 RedisTemplate 的连接工厂
+ redisTemplate.setConnectionFactory(connectionFactory);
+
+ // 使用 StringRedisSerializer 来序列化和反序列化 redis 的 key 值,确保 key 是可读的字符串
+ redisTemplate.setKeySerializer(new StringRedisSerializer());
+ redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+
+ // 使用 Jackson2JsonRedisSerializer 来序列化和反序列化 redis 的 value 值, 确保存储的是 JSON 格式
+ Jackson2JsonRedisSerializer