58 lines
2.1 KiB
Java
58 lines
2.1 KiB
Java
package com.hanserwei.snailsai.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 jakarta.annotation.Resource;
|
|
import org.springframework.ai.chat.client.ChatClient;
|
|
import org.springframework.ai.chat.client.advisor.PromptChatMemoryAdvisor;
|
|
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
|
|
import org.springframework.ai.chat.memory.ChatMemory;
|
|
import org.springframework.ai.chat.memory.MessageWindowChatMemory;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
@Configuration
|
|
public class ChatClientConfiguration {
|
|
|
|
@Value("${spring.ai.memory.redis.host}")
|
|
private String redisHost;
|
|
@Value("${spring.ai.memory.redis.port}")
|
|
private int redisPort;
|
|
@Value("${spring.ai.memory.redis.password}")
|
|
private String redisPassword;
|
|
@Value("${spring.ai.memory.redis.timeout}")
|
|
private int redisTimeout;
|
|
|
|
|
|
@Resource
|
|
private DashScopeChatModel dashScopeChatModel;
|
|
|
|
@Bean
|
|
public BaseRedisChatMemoryRepository redisChatMemoryRepository() {
|
|
// 构建RedissonRedisChatMemoryRepository实例
|
|
return LettuceRedisChatMemoryRepository.builder()
|
|
.host(redisHost)
|
|
.port(redisPort)
|
|
.password(redisPassword)
|
|
.timeout(redisTimeout)
|
|
.build();
|
|
}
|
|
|
|
@Bean
|
|
public ChatMemory chatMemory(BaseRedisChatMemoryRepository chatMemoryRepository) {
|
|
return MessageWindowChatMemory
|
|
.builder()
|
|
.maxMessages(100000)
|
|
.chatMemoryRepository(chatMemoryRepository).build();
|
|
}
|
|
|
|
@Bean
|
|
public ChatClient dashScopeChatClient(ChatMemory chatMemory) {
|
|
return ChatClient.builder(dashScopeChatModel)
|
|
.defaultAdvisors(PromptChatMemoryAdvisor.builder(chatMemory).build(), new SimpleLoggerAdvisor())
|
|
.build();
|
|
}
|
|
}
|