添加ai功能开关
This commit is contained in:
@@ -1,35 +1,23 @@
|
|||||||
package com.ruoyi.ai.chat.config;
|
package com.ruoyi.ai.chat.config;
|
||||||
|
|
||||||
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceBuilder;
|
|
||||||
import com.mysql.cj.jdbc.MysqlDataSource;
|
|
||||||
import com.ruoyi.ai.chat.service.impl.InSqlMemory;
|
import com.ruoyi.ai.chat.service.impl.InSqlMemory;
|
||||||
import com.ruoyi.ai.util.service.BasStockToolService;
|
import com.ruoyi.ai.util.service.BasStockToolService;
|
||||||
import com.ruoyi.ai.util.service.ToolService;
|
|
||||||
import org.mariadb.jdbc.MariaDbDataSource;
|
import org.mariadb.jdbc.MariaDbDataSource;
|
||||||
import org.springframework.ai.chat.client.ChatClient;
|
import org.springframework.ai.chat.client.ChatClient;
|
||||||
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
|
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
|
||||||
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
|
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
|
||||||
import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;
|
|
||||||
import org.springframework.ai.chat.memory.ChatMemory;
|
import org.springframework.ai.chat.memory.ChatMemory;
|
||||||
import org.springframework.ai.embedding.EmbeddingModel;
|
import org.springframework.ai.embedding.EmbeddingModel;
|
||||||
import org.springframework.ai.openai.OpenAiChatModel;
|
import org.springframework.ai.openai.OpenAiChatModel;
|
||||||
import org.springframework.ai.openai.OpenAiEmbeddingModel;
|
|
||||||
import org.springframework.ai.openai.api.OpenAiApi;
|
|
||||||
import org.springframework.ai.tool.ToolCallback;
|
|
||||||
import org.springframework.ai.tool.ToolCallbackProvider;
|
|
||||||
import org.springframework.ai.vectorstore.SearchRequest;
|
|
||||||
import org.springframework.ai.vectorstore.SimpleVectorStore;
|
|
||||||
import org.springframework.ai.vectorstore.VectorStore;
|
import org.springframework.ai.vectorstore.VectorStore;
|
||||||
import org.springframework.ai.vectorstore.mariadb.MariaDBVectorStore;
|
import org.springframework.ai.vectorstore.mariadb.MariaDBVectorStore;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
import org.springframework.boot.jdbc.DataSourceBuilder;
|
import org.springframework.boot.jdbc.DataSourceBuilder;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@@ -40,6 +28,11 @@ public class ChatModelConfig {
|
|||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@ConditionalOnProperty(
|
||||||
|
name = "spring.ai.enable", // 配置项名称
|
||||||
|
havingValue = "true", // 期望的值
|
||||||
|
matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
|
||||||
|
)
|
||||||
public ChatClient chatClient(OpenAiChatModel openAiChatModel, ChatMemory chatMemory, BasStockToolService toolService/*, ToolCallbackProvider toolCallbackProvider*/) {
|
public ChatClient chatClient(OpenAiChatModel openAiChatModel, ChatMemory chatMemory, BasStockToolService toolService/*, ToolCallbackProvider toolCallbackProvider*/) {
|
||||||
return ChatClient
|
return ChatClient
|
||||||
//使用的模型
|
//使用的模型
|
||||||
@@ -63,11 +56,21 @@ public class ChatModelConfig {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
|
@ConditionalOnProperty(
|
||||||
|
name = "spring.ai.enable", // 配置项名称
|
||||||
|
havingValue = "true", // 期望的值
|
||||||
|
matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
|
||||||
|
)
|
||||||
public ChatMemory chatMemory() {
|
public ChatMemory chatMemory() {
|
||||||
return new InSqlMemory();
|
return new InSqlMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@ConditionalOnProperty(
|
||||||
|
name = "spring.ai.enable", // 配置项名称
|
||||||
|
havingValue = "true", // 期望的值
|
||||||
|
matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
|
||||||
|
)
|
||||||
@ConfigurationProperties("spring.datasource.druid.slave")
|
@ConfigurationProperties("spring.datasource.druid.slave")
|
||||||
public MariaDbDataSource dataSource() throws SQLException {
|
public MariaDbDataSource dataSource() throws SQLException {
|
||||||
return DataSourceBuilder.create().username("root")
|
return DataSourceBuilder.create().username("root")
|
||||||
@@ -77,6 +80,11 @@ public class ChatModelConfig {
|
|||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@ConditionalOnProperty(
|
||||||
|
name = "spring.ai.enable", // 配置项名称
|
||||||
|
havingValue = "true", // 期望的值
|
||||||
|
matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
|
||||||
|
)
|
||||||
public VectorStore vectorStore(MariaDbDataSource dataSource, EmbeddingModel embeddingModel) throws SQLException {
|
public VectorStore vectorStore(MariaDbDataSource dataSource, EmbeddingModel embeddingModel) throws SQLException {
|
||||||
JdbcTemplate customJdbcTemplate = new JdbcTemplate(dataSource);
|
JdbcTemplate customJdbcTemplate = new JdbcTemplate(dataSource);
|
||||||
return MariaDBVectorStore.builder(customJdbcTemplate, embeddingModel)
|
return MariaDBVectorStore.builder(customJdbcTemplate, embeddingModel)
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ package com.ruoyi.ai.chat.controller;
|
|||||||
import com.ruoyi.ai.chat.domain.CustomMessage;
|
import com.ruoyi.ai.chat.domain.CustomMessage;
|
||||||
import com.ruoyi.ai.chat.service.ChatService;
|
import com.ruoyi.ai.chat.service.ChatService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import reactor.core.publisher.Flux;
|
import reactor.core.publisher.Flux;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
|||||||
@@ -12,17 +12,16 @@ import org.springframework.core.io.FileSystemResource;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/embedding")
|
@RequestMapping("/api/embedding")
|
||||||
public class EmbeddingDemoController {
|
public class EmbeddingDemoController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private OpenAiEmbeddingModel embeddingModel;
|
private OpenAiEmbeddingModel embeddingModel;
|
||||||
|
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private VectorStore vectorStore;
|
private VectorStore vectorStore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,39 +6,34 @@ import com.ruoyi.ai.chat.domain.CustomMessage;
|
|||||||
import com.ruoyi.ai.chat.service.ChatService;
|
import com.ruoyi.ai.chat.service.ChatService;
|
||||||
import com.ruoyi.ai.conversation.domain.Conversations;
|
import com.ruoyi.ai.conversation.domain.Conversations;
|
||||||
import com.ruoyi.ai.conversation.service.IConversationsService;
|
import com.ruoyi.ai.conversation.service.IConversationsService;
|
||||||
import com.ruoyi.ai.message.domain.ChatMessage;
|
|
||||||
import com.ruoyi.ai.message.service.IChatMessageService;
|
import com.ruoyi.ai.message.service.IChatMessageService;
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
|
||||||
import org.springframework.ai.chat.client.ChatClient;
|
import org.springframework.ai.chat.client.ChatClient;
|
||||||
import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;
|
import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;
|
||||||
import org.springframework.ai.chat.memory.ChatMemory;
|
import org.springframework.ai.chat.memory.ChatMemory;
|
||||||
import org.springframework.ai.chat.prompt.PromptTemplate;
|
import org.springframework.ai.chat.prompt.PromptTemplate;
|
||||||
import org.springframework.ai.document.Document;
|
|
||||||
import org.springframework.ai.openai.OpenAiChatModel;
|
import org.springframework.ai.openai.OpenAiChatModel;
|
||||||
import org.springframework.ai.template.st.StTemplateRenderer;
|
import org.springframework.ai.template.st.StTemplateRenderer;
|
||||||
import org.springframework.ai.vectorstore.SearchRequest;
|
|
||||||
import org.springframework.ai.vectorstore.VectorStore;
|
import org.springframework.ai.vectorstore.VectorStore;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import reactor.core.publisher.Flux;
|
import reactor.core.publisher.Flux;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ChatServiceImpl implements ChatService {
|
public class ChatServiceImpl implements ChatService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private ChatClient chatClient;
|
private ChatClient chatClient;
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private OpenAiChatModel openAiChatModel;
|
private OpenAiChatModel openAiChatModel;
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private ChatMemory chatMemory;
|
private ChatMemory chatMemory;
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private VectorStore vectorStore;
|
private VectorStore vectorStore;
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private IChatMessageService chatMessageService;
|
private IChatMessageService chatMessageService;
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private IConversationsService conversationsService;
|
private IConversationsService conversationsService;
|
||||||
|
|
||||||
// 定义问答模板
|
// 定义问答模板
|
||||||
@@ -110,6 +105,10 @@ public class ChatServiceImpl implements ChatService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Flux<String> chatByUserContent(CustomMessage customMessage) {
|
public Flux<String> chatByUserContent(CustomMessage customMessage) {
|
||||||
|
if (chatClient == null){
|
||||||
|
return Flux.just("未开启聊天模型");
|
||||||
|
}
|
||||||
|
|
||||||
// 生成唯一会话ID
|
// 生成唯一会话ID
|
||||||
Long sessionId = IdUtil.getSnowflakeNextId();
|
Long sessionId = IdUtil.getSnowflakeNextId();
|
||||||
//修改会话
|
//修改会话
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
package com.ruoyi.ai.chat.service.impl;
|
package com.ruoyi.ai.chat.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import com.ruoyi.ai.message.domain.ChatMessage;
|
|
||||||
import com.ruoyi.ai.chat.domain.CustomMessage;
|
import com.ruoyi.ai.chat.domain.CustomMessage;
|
||||||
|
import com.ruoyi.ai.message.domain.ChatMessage;
|
||||||
import com.ruoyi.ai.message.service.IChatMessageService;
|
import com.ruoyi.ai.message.service.IChatMessageService;
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
|
||||||
import org.springframework.ai.chat.memory.ChatMemory;
|
import org.springframework.ai.chat.memory.ChatMemory;
|
||||||
import org.springframework.ai.chat.messages.AssistantMessage;
|
import org.springframework.ai.chat.messages.AssistantMessage;
|
||||||
import org.springframework.ai.chat.messages.Message;
|
import org.springframework.ai.chat.messages.Message;
|
||||||
|
|||||||
@@ -1,32 +1,22 @@
|
|||||||
package com.ruoyi.ai.conversation.controller;
|
package com.ruoyi.ai.conversation.controller;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.ai.conversation.domain.Conversations;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import com.ruoyi.ai.conversation.service.IConversationsService;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import com.ruoyi.ai.message.service.IChatMessageService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import com.ruoyi.ai.conversation.domain.Conversations;
|
|
||||||
import com.ruoyi.ai.conversation.service.IConversationsService;
|
|
||||||
import com.ruoyi.ai.message.domain.ChatMessage;
|
|
||||||
import com.ruoyi.ai.message.service.IChatMessageService;
|
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import java.util.HashMap;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import java.util.Map;
|
import com.ruoyi.common.utils.SecurityUtils;
|
||||||
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RAG项目会话管理Controller
|
* RAG项目会话管理Controller
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
package com.ruoyi.ai.conversation.domain;
|
package com.ruoyi.ai.conversation.domain;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
|
||||||
import com.ruoyi.common.annotation.Excel;
|
import com.ruoyi.common.annotation.Excel;
|
||||||
import com.ruoyi.common.core.domain.BaseEntity;
|
import com.ruoyi.common.core.domain.BaseEntity;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RAG项目会话管理对象 conversations
|
* RAG项目会话管理对象 conversations
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.ruoyi.ai.conversation.mapper;
|
package com.ruoyi.ai.conversation.mapper;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import com.ruoyi.ai.conversation.domain.Conversations;
|
import com.ruoyi.ai.conversation.domain.Conversations;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RAG项目会话管理Mapper接口
|
* RAG项目会话管理Mapper接口
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.ruoyi.ai.conversation.service;
|
package com.ruoyi.ai.conversation.service;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import com.ruoyi.ai.conversation.domain.Conversations;
|
import com.ruoyi.ai.conversation.domain.Conversations;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RAG项目会话管理Service接口
|
* RAG项目会话管理Service接口
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
package com.ruoyi.ai.conversation.service.impl;
|
package com.ruoyi.ai.conversation.service.impl;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import com.ruoyi.ai.conversation.domain.Conversations;
|
||||||
|
import com.ruoyi.ai.conversation.mapper.ConversationsMapper;
|
||||||
|
import com.ruoyi.ai.conversation.service.IConversationsService;
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.utils.SecurityUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.ai.conversation.mapper.ConversationsMapper;
|
|
||||||
import com.ruoyi.ai.conversation.domain.Conversations;
|
import java.util.Date;
|
||||||
import com.ruoyi.ai.conversation.service.IConversationsService;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RAG项目会话管理Service业务层处理
|
* RAG项目会话管理Service业务层处理
|
||||||
|
|||||||
@@ -1,25 +1,19 @@
|
|||||||
package com.ruoyi.ai.message.controller;
|
package com.ruoyi.ai.message.controller;
|
||||||
|
|
||||||
import java.util.List;
|
import com.ruoyi.ai.message.domain.ChatMessage;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import com.ruoyi.ai.message.service.IChatMessageService;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import com.ruoyi.ai.message.domain.ChatMessage;
|
|
||||||
import com.ruoyi.ai.message.service.IChatMessageService;
|
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 聊天消息Controller
|
* 聊天消息Controller
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
package com.ruoyi.ai.message.domain;
|
package com.ruoyi.ai.message.domain;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
|
||||||
import com.ruoyi.common.annotation.Excel;
|
import com.ruoyi.common.annotation.Excel;
|
||||||
import com.ruoyi.common.core.domain.BaseEntity;
|
import com.ruoyi.common.core.domain.BaseEntity;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 聊天消息对象 chat_message
|
* 聊天消息对象 chat_message
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.ruoyi.ai.message.mapper;
|
package com.ruoyi.ai.message.mapper;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import com.ruoyi.ai.message.domain.ChatMessage;
|
import com.ruoyi.ai.message.domain.ChatMessage;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 聊天消息Mapper接口
|
* 聊天消息Mapper接口
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.ruoyi.ai.message.service;
|
package com.ruoyi.ai.message.service;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import com.ruoyi.ai.message.domain.ChatMessage;
|
import com.ruoyi.ai.message.domain.ChatMessage;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 聊天消息Service接口
|
* 聊天消息Service接口
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package com.ruoyi.ai.message.service.impl;
|
package com.ruoyi.ai.message.service.impl;
|
||||||
|
|
||||||
import java.util.List;
|
import com.ruoyi.ai.message.domain.ChatMessage;
|
||||||
|
import com.ruoyi.ai.message.mapper.ChatMessageMapper;
|
||||||
|
import com.ruoyi.ai.message.service.IChatMessageService;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.ai.message.mapper.ChatMessageMapper;
|
|
||||||
import com.ruoyi.ai.message.domain.ChatMessage;
|
import java.util.List;
|
||||||
import com.ruoyi.ai.message.service.IChatMessageService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 聊天消息Service业务层处理
|
* 聊天消息Service业务层处理
|
||||||
|
|||||||
@@ -1,25 +1,19 @@
|
|||||||
package com.ruoyi.ai.vector.controller;
|
package com.ruoyi.ai.vector.controller;
|
||||||
|
|
||||||
import java.util.List;
|
import com.ruoyi.ai.vector.domain.KnowledgeFile;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import com.ruoyi.ai.vector.service.IKnowledgeFileService;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import com.ruoyi.ai.vector.domain.KnowledgeFile;
|
|
||||||
import com.ruoyi.ai.vector.service.IKnowledgeFileService;
|
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 知识库文件Controller
|
* 知识库文件Controller
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
package com.ruoyi.ai.vector.domain;
|
package com.ruoyi.ai.vector.domain;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
|
||||||
import com.ruoyi.common.annotation.Excel;
|
import com.ruoyi.common.annotation.Excel;
|
||||||
import com.ruoyi.common.core.domain.BaseEntity;
|
import com.ruoyi.common.core.domain.BaseEntity;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 知识库文件对象 knowledge_file
|
* 知识库文件对象 knowledge_file
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.ruoyi.ai.vector.mapper;
|
package com.ruoyi.ai.vector.mapper;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import com.ruoyi.ai.vector.domain.KnowledgeFile;
|
import com.ruoyi.ai.vector.domain.KnowledgeFile;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 知识库文件Mapper接口
|
* 知识库文件Mapper接口
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import org.springframework.ai.reader.pdf.config.PdfDocumentReaderConfig;
|
|||||||
import org.springframework.ai.reader.tika.TikaDocumentReader;
|
import org.springframework.ai.reader.tika.TikaDocumentReader;
|
||||||
import org.springframework.ai.vectorstore.VectorStore;
|
import org.springframework.ai.vectorstore.VectorStore;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.io.FileSystemResource;
|
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -24,7 +23,7 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public class DataVectorService {
|
public class DataVectorService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired(required = false)
|
||||||
private VectorStore vectorStore;
|
private VectorStore vectorStore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.ruoyi.ai.vector.service;
|
package com.ruoyi.ai.vector.service;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import com.ruoyi.ai.vector.domain.KnowledgeFile;
|
import com.ruoyi.ai.vector.domain.KnowledgeFile;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 知识库文件Service接口
|
* 知识库文件Service接口
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
package com.ruoyi.ai.vector.service.impl;
|
package com.ruoyi.ai.vector.service.impl;
|
||||||
|
|
||||||
import java.util.List;
|
import com.ruoyi.ai.vector.domain.KnowledgeFile;
|
||||||
|
import com.ruoyi.ai.vector.mapper.KnowledgeFileMapper;
|
||||||
|
import com.ruoyi.ai.vector.service.IKnowledgeFileService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.ai.vector.mapper.KnowledgeFileMapper;
|
|
||||||
import com.ruoyi.ai.vector.domain.KnowledgeFile;
|
import java.util.List;
|
||||||
import com.ruoyi.ai.vector.service.IKnowledgeFileService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 知识库文件Service业务层处理
|
* 知识库文件Service业务层处理
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ spring:
|
|||||||
max-wait: -1ms
|
max-wait: -1ms
|
||||||
|
|
||||||
ai:
|
ai:
|
||||||
|
enable: false
|
||||||
openai:
|
openai:
|
||||||
api-key: sk-dzftrybcpjujsjgehjgtsjzjuhqxciosldcncjtlazxvjams # 密钥key
|
api-key: sk-dzftrybcpjujsjgehjgtsjzjuhqxciosldcncjtlazxvjams # 密钥key
|
||||||
base-url: https://api.siliconflow.cn # 产商地址
|
base-url: https://api.siliconflow.cn # 产商地址
|
||||||
@@ -120,9 +121,9 @@ spring:
|
|||||||
#向量数据库
|
#向量数据库
|
||||||
vectorstore:
|
vectorstore:
|
||||||
mariadb:
|
mariadb:
|
||||||
initialize-schema: true
|
initialize-schema: truea
|
||||||
distance-type: COSINE
|
distance-type: COSINEa
|
||||||
dimensions: 1024
|
dimensions: 1024a
|
||||||
|
|
||||||
|
|
||||||
# token配置
|
# token配置
|
||||||
|
|||||||
Reference in New Issue
Block a user