diff --git a/.gitignore b/.gitignore index ccdf948e..d75b3761 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,8 @@ target/ ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben5 +README.md + ###################################################################### # IDE diff --git a/README.md b/README.md index 7d20c406..4aff8d35 100644 --- a/README.md +++ b/README.md @@ -59,24 +59,16 @@ ### 系统体验 - 用户端:https://web.pandarobot.chat - 管理端:https://admin.pandarobot.chat - - 用户名: admin 密码:admin123 +- 用户名: admin 密码:admin123 ### 源码地址 - -[1]gitee -- 前端服务-用户端: https://gitee.com/ageerle/ruoyi-web -- 前端服务-管理端: https://gitee.com/ageerle/ruoyi-admin -- 前端服务-小程序端: https://gitee.com/ageerle/ruoyi-uniapp -- 后端服务:https://gitee.com/ageerle/ruoyi-ai - -[2]github +[1]github - 前端服务-用户端: https://github.com/ageerle/ruoyi-web - 前端服务-管理端: https://github.com/ageerle/ruoyi-admin - 前端服务-小程序端: https://github.com/ageerle/ruoyi-uniapp - 后端服务:https://github.com/ageerle/ruoyi-ai -[3]gitcode +[2]gitcode - 前端服务-用户端:https://gitcode.com/ageerle/ruoyi-web - 前端服务-管理端: https://gitcode.com/ageerle/ruoyi-admin - 前端服务-小程序端: https://gitcode.com/ageerle/ruoyi-uniapp @@ -86,27 +78,25 @@ - 配套文档: https://doc.pandarobot.chat - 项目部署文档:https://doc.pandarobot.chat/guide/introduction/ -### 核心功能 -1. 全套开源系统:提供完整的前端应用、后台管理以及小程序应用,基于MIT协议,开箱即用。 -2. 本地RAG方案:集成Milvus/Weaviate向量库、本地向量化模型与Ollama,实现本地化RAG。 -3. 丰富插件功能:支持联网、SQL查询插件及Text2API插件,扩展系统能力与应用场景。 -4. 内置SSE、websocket等网络协议,支持对接多种大语言模型,同时还集成了MidJourney和DALLE AI绘画功能。 -5. 强大的多媒体功能:支持AI翻译、PPT制作、语音克隆和翻唱等。 -6. 扩展功能:支持将大模型接入个人或企业微信。 -7. 支付功能:支持易支付、微信支付等多种支付方式。 +### 核心功能与技术亮点 +#### 1. 全栈式开源系统 +- 全套开源系统:提供完整的前端应用、后台管理以及小程序应用,基于MIT协议,开箱即用。 +#### 2. 本地化 RAG 方案 +- 基于 **Langchain4j** 框架,支持 Milvus/Weaviate/Qdrant 向量库,结合 BGE-large-zh-v1.5 本地向量化模型 实现高效文档检索与知识库构建。 +- 支持 本地 LLM 接入,结合私有知识库实现安全可控的问答系统,避免依赖云端服务的隐私风险。 +#### 3. 多模态 AI 引擎与工具集成 +- 智能对话:支持 OpenAI GPT-4、Azure、ChatGLM 等主流模型,内置 SSE/WebSocket 协议实现低延迟交互,兼容 **扣子**、**DIFY** 等平台 API 调用。 +- **Spring AI MCP** 支持:通过注解快速定义本地工具,支持调用 MCP 广场 的海量 MCP Server 服务,扩展模型能力边界。 +#### 4. 企业级扩展与商业化支持 +- 即时通讯集成:支持对接个人微信、企业微信及微信公众号,实现消息自动回复、用户管理与智能客服。 +- 支付系统:集成易支付、微信支付、Stripe 国际信用卡支付,满足商业化场景需求。 +#### 5. 多媒体处理与创新功能 + - AI 绘画:集成 DALL·E-3、MidJourney、Stable Diffusion,支持文生图、图生图及风格化创作,适用于营销素材生成与创意设计。 + - PPT 制作:根据文本输入自动生成结构化幻灯片,支持自定义模板(需要使用三方平台 如:文多多)。 ### 项目演示 #### mcp支持 - -### 如何使用 -1. ruoyi-admin\src\main\resources\application.yml中mcp.client.enabled改为true -2. application.yml中配置openai api-key(用于推理使用那个工具,并构建工具所需参数) -3. 启动[ruoyi-mcp-server] -4. [mcp-server.json]中配置fileSystem.command(npx本地安装路径) -5. 指定fileSystem操作目录(本地必须存在指定的目录) -6. 配置search1api.env.SEARCH1API_KEY 申请地址:https://www.search1api.com/ -7. 详情教程:https://blog.csdn.net/weixin_42416319/article/details/147385808
@@ -122,7 +112,6 @@
@@ -204,7 +193,6 @@
### 注意事项
- vben模板
-
Q:vben5 的模板默认是没有的吗?
A:vben模板是收费的 请联系vben-vue-plus作者获取。
@@ -214,7 +202,6 @@
该项目使用Git进行版本管理。您可以在repository参看当前可用版本。
-
### 版权说明
该项目使用了MIT授权许可,详情请参阅 [LICENSE.txt](https://github.com/ageerle/ruoyi-ai/blob/main/LICENSE)
@@ -251,7 +238,7 @@
#### 项目文档
1. 项目文档基于vitepress构建
-2. 按照[如何参与开源项目](#如何参与开源项目)拉取 https://github.com/ageerle/ruoyi-doc
+2. 按照[如何参与开源项目](#如何参与开源项目)拉取https://github.com/ageerle/ruoyi-doc
3. 安装依赖:npm install
4. 启动项目:npm run docs:dev
5. 主页路径:docs/guide/introduction/index.md
@@ -277,12 +264,16 @@
[license-url]: https://github.com/ageerle/ruoyi-ai/blob/master/LICENSE.txt
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square&logo=linkedin&colorB=555
+## 🌿 第三方生态
+- [PPIO 派欧云:一键调用高性价比的开源模型 API 和 GPU 容器](https://ppinfra.com/user/register?invited_by=P8QTUY&utm_source=github_ruoyi-ai)
### 附:技术讨论群
-#### 全面开放,欢迎加入
+#### 进群学习
🏠 wx:ruoyi-ai(加人备注:ruoyi-ai)
+
+
🏠 qq:1603234088 (加人备注:ruoyi-ai)
👏👏👏 ruoyi-ai官方交流1群(qq区):1034554687
@@ -291,10 +282,3 @@
-
* {
* "name": "get_current_weather",
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/ImageUrl.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/ImageUrl.java
index 47a0c725..749b9c97 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/ImageUrl.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/ImageUrl.java
@@ -8,7 +8,6 @@ import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
- * 描述:
*
* @author https://www.unfbx.com
* 2023-11-10
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/Message.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/Message.java
index 40412d26..40ef481f 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/Message.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/Message.java
@@ -10,7 +10,7 @@ import java.io.Serializable;
import java.util.List;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* @since 2023-03-02
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/MessagePicture.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/MessagePicture.java
index 18a4ee88..db7d77c4 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/MessagePicture.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/MessagePicture.java
@@ -10,8 +10,6 @@ import java.io.Serializable;
import java.util.List;
/**
- * 描述:
- *
* @author https:www.unfbx.com
* @since 2023-03-02
*/
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/Parameters.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/Parameters.java
index 48a9036b..7a015357 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/Parameters.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/chat/Parameters.java
@@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
- * 描述:方法参数类,扩展参数可以继承Parameters自己实现
+ * 方法参数类,扩展参数可以继承Parameters自己实现
* 参考:
*
* {
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/Choice.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/Choice.java
index 59debb53..cc747f14 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/Choice.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/Choice.java
@@ -7,7 +7,6 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/DeleteResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/DeleteResponse.java
index eedd8eaa..7c2238ed 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/DeleteResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/DeleteResponse.java
@@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/OpenAiResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/OpenAiResponse.java
index 5ce90787..15dc7bc5 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/OpenAiResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/OpenAiResponse.java
@@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/Usage.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/Usage.java
index 09a92076..188d2d4a 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/Usage.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/common/Usage.java
@@ -7,7 +7,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/completions/Completion.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/completions/Completion.java
index 42fe86de..64057967 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/completions/Completion.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/completions/Completion.java
@@ -10,7 +10,7 @@ import java.util.List;
import java.util.Map;
/**
- * 描述: 问题类
+ * 问题类
*
* @author https:www.unfbx.com
* 2023-02-11
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/completions/CompletionResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/completions/CompletionResponse.java
index 31593746..78e14a22 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/completions/CompletionResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/completions/CompletionResponse.java
@@ -9,7 +9,7 @@ import org.ruoyi.common.chat.entity.common.Usage;
import java.io.Serializable;
/**
- * 描述: 答案类
+ * 答案类
*
* @author https:www.unfbx.com
* 2023-02-11
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/edits/Edit.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/edits/Edit.java
index 4a2da137..662c0bc2 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/edits/Edit.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/edits/Edit.java
@@ -7,7 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/edits/EditResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/edits/EditResponse.java
index 803b742e..07917614 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/edits/EditResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/edits/EditResponse.java
@@ -9,7 +9,7 @@ import org.ruoyi.common.chat.entity.common.Usage;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/embeddings/Embedding.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/embeddings/Embedding.java
index e7789236..d176e2ab 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/embeddings/Embedding.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/embeddings/Embedding.java
@@ -9,7 +9,7 @@ import java.util.List;
import java.util.Objects;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/embeddings/EmbeddingResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/embeddings/EmbeddingResponse.java
index 00868ef7..ad48b2a1 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/embeddings/EmbeddingResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/embeddings/EmbeddingResponse.java
@@ -8,7 +8,7 @@ import java.io.Serializable;
import java.util.List;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/engines/Engine.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/engines/Engine.java
index ce375a46..72b28c4b 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/engines/Engine.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/engines/Engine.java
@@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/files/File.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/files/File.java
index b696962d..06be2403 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/files/File.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/files/File.java
@@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/files/UploadFileResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/files/UploadFileResponse.java
index 6d1bcda7..c3e87cc7 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/files/UploadFileResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/files/UploadFileResponse.java
@@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/Image.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/Image.java
index 08754494..84f60ffb 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/Image.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/Image.java
@@ -11,7 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageEdit.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageEdit.java
index eac0a61b..32ee3675 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageEdit.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageEdit.java
@@ -11,7 +11,7 @@ import java.io.Serializable;
import java.util.Objects;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageResponse.java
index ca61b454..7ad84150 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageResponse.java
@@ -7,7 +7,7 @@ import java.io.Serializable;
import java.util.List;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageVariations.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageVariations.java
index 34b81b9a..03ea00f1 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageVariations.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ImageVariations.java
@@ -12,7 +12,7 @@ import java.io.Serializable;
import java.util.Objects;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/Item.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/Item.java
index da7a158b..58f7ca06 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/Item.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/Item.java
@@ -7,7 +7,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ResponseFormat.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ResponseFormat.java
index 4c06dcd2..5a9e1e2d 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ResponseFormat.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/ResponseFormat.java
@@ -6,7 +6,7 @@ import lombok.Getter;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/SizeEnum.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/SizeEnum.java
index d8b02046..fe2997ea 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/SizeEnum.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/images/SizeEnum.java
@@ -6,7 +6,7 @@ import lombok.Getter;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/Model.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/Model.java
index 2848e126..bfedf88d 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/Model.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/Model.java
@@ -8,7 +8,7 @@ import java.io.Serializable;
import java.util.List;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/ModelResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/ModelResponse.java
index 6aa4cea0..f78cf84d 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/ModelResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/ModelResponse.java
@@ -7,7 +7,7 @@ import java.io.Serializable;
import java.util.List;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/Permission.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/Permission.java
index fd66a0a6..8b15a0a6 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/Permission.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/Permission.java
@@ -7,7 +7,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Categories.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Categories.java
index ebe72e69..69d9add7 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Categories.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Categories.java
@@ -7,7 +7,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/CategoryScores.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/CategoryScores.java
index b14e230a..13f9ed0b 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/CategoryScores.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/CategoryScores.java
@@ -8,7 +8,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Moderation.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Moderation.java
index 42dd1bef..f6831f74 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Moderation.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Moderation.java
@@ -10,7 +10,7 @@ import java.util.List;
import java.util.Objects;
/**
- * 描述:文本审核,敏感词鉴别
+ * 文本审核,敏感词鉴别
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/ModerationResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/ModerationResponse.java
index 046cd0b7..b1a3dd21 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/ModerationResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/ModerationResponse.java
@@ -7,7 +7,7 @@ import java.io.Serializable;
import java.util.List;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Result.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Result.java
index 28dee336..a42682a3 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Result.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/moderations/Result.java
@@ -7,7 +7,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/whisper/Whisper.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/whisper/Whisper.java
index 4ffc5227..7de6ca57 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/whisper/Whisper.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/whisper/Whisper.java
@@ -7,7 +7,7 @@ import lombok.Getter;
import java.io.Serializable;
/**
- * 描述:语音转文字
+ * 语音转文字
*
* @author https:www.unfbx.com
* @since 2023-03-02
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/whisper/WhisperResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/whisper/WhisperResponse.java
index 3635dd93..d80900fa 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/whisper/WhisperResponse.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/whisper/WhisperResponse.java
@@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* @since 2023-03-02
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/listener/WebSocketEventListener.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/listener/WebSocketEventListener.java
index 15c47231..c704a28d 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/listener/WebSocketEventListener.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/listener/WebSocketEventListener.java
@@ -16,7 +16,7 @@ import org.springframework.web.socket.WebSocketSession;
import java.util.Objects;
/**
- * 描述:OpenAI流式输出Socket接收
+ * OpenAI流式输出Socket接收
*
* @author https:www.unfbx.com
* @date 2023-03-23
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiApi.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiApi.java
index bb0bd124..ba6fa9ed 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiApi.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiApi.java
@@ -40,7 +40,7 @@ import java.time.LocalDate;
import java.util.Map;
/**
- * 描述: open ai官方api接口
+ * open ai官方api接口
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiClient.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiClient.java
index ccc52147..fc8462a0 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiClient.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiClient.java
@@ -56,7 +56,7 @@ import java.util.concurrent.TimeUnit;
/**
- * 描述: open ai 客户端
+ * open ai 客户端
*
* @author https:www.unfbx.com
* @since 2023-02-11
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java
index ef03cb24..e02dde19 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java
@@ -53,7 +53,7 @@ import java.util.*;
import java.util.concurrent.TimeUnit;
/**
- * 描述: open ai 客户端
+ * open ai 客户端
*
* @author https:www.unfbx.com
* 2023-02-28
@@ -71,6 +71,11 @@ public class OpenAiStreamClient {
*/
private String apiHost;
+ /**
+ * 自定义url 兼容多个平台
+ */
+ private String apiUrl;
+
/**
* 自定义的okHttpClient
* 如果不自定义 ,就是用sdk默认的OkHttpClient实例
@@ -112,6 +117,11 @@ public class OpenAiStreamClient {
}
apiHost = builder.apiHost;
+ if (StrUtil.isBlank(builder.apiUrl)) {
+ builder.apiUrl = OpenAIConst.apiUrl;
+ }
+ apiUrl = builder.apiUrl;
+
if (Objects.isNull(builder.keyStrategy)) {
builder.keyStrategy = new KeyRandomStrategy();
}
@@ -136,12 +146,12 @@ public class OpenAiStreamClient {
}
okHttpClient = builder.okHttpClient;
- this.openAiApi = new Retrofit.Builder()
- .baseUrl(apiHost)
- .client(okHttpClient)
- .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- .addConverterFactory(JacksonConverterFactory.create())
- .build().create(OpenAiApi.class);
+// this.openAiApi = new Retrofit.Builder()
+// .baseUrl(apiHost)
+// .client(okHttpClient)
+// .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+// .addConverterFactory(JacksonConverterFactory.create())
+// .build().create(OpenAiApi.class);
}
/**
@@ -180,7 +190,7 @@ public class OpenAiStreamClient {
ObjectMapper mapper = new ObjectMapper();
String requestBody = mapper.writeValueAsString(chatCompletion);
Request request = new Request.Builder()
- .url(this.apiHost + "v1/chat/completions")
+ .url(this.apiHost)
.post(RequestBody.create(MediaType.parse(ContentType.JSON.getValue()), requestBody))
.build();
factory.newEventSource(request, eventSourceListener);
@@ -334,7 +344,6 @@ public class OpenAiStreamClient {
BillingUsage billingUsage = billingUsage(start.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), end.toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
double totalUsage = billingUsage.getTotalUsage().doubleValue() / 100;
- System.out.println(totalUsage);
Subscription subscription = subscription();
KeyInfo keyInfo = new KeyInfo();
String start_key = key.substring(0, 6);
@@ -611,6 +620,8 @@ public class OpenAiStreamClient {
*/
private String apiHost;
+ private String apiUrl;
+
/**
* 自定义OkhttpClient
*/
@@ -645,6 +656,16 @@ public class OpenAiStreamClient {
return this;
}
+ /**
+ * @param val 自定义请求后缀
+ * @return Builder
+ * @see OpenAIConst
+ */
+ public Builder apiUrl(String val) {
+ apiUrl = val;
+ return this;
+ }
+
public Builder keyStrategy(KeyStrategyFunction val) {
keyStrategy = val;
return this;
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/TestOpenAIAPI.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/TestOpenAIAPI.java
index 349f5c14..3df000d8 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/TestOpenAIAPI.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/TestOpenAIAPI.java
@@ -21,7 +21,7 @@ public class TestOpenAIAPI {
.build();
try (Response response = client.newCall(request).execute()) {
- System.out.println(response.body().string());
+
}
}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/exception/CommonError.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/exception/CommonError.java
index e59e9cdc..e7cae02e 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/exception/CommonError.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/exception/CommonError.java
@@ -1,7 +1,7 @@
package org.ruoyi.common.chat.openai.exception;
/**
- * 描述: 错误
+ * 错误
*
* @author https:www.unfbx.com
* 2023-02-11
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/exception/IError.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/exception/IError.java
index 84af81c7..0e17a63a 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/exception/IError.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/exception/IError.java
@@ -1,6 +1,6 @@
package org.ruoyi.common.chat.openai.exception;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-11
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/function/KeyRandomStrategy.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/function/KeyRandomStrategy.java
index 5dc10a0b..e4945d63 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/function/KeyRandomStrategy.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/function/KeyRandomStrategy.java
@@ -5,7 +5,7 @@ import cn.hutool.core.util.RandomUtil;
import java.util.List;
/**
- * 描述:随机策略
+ * 随机策略
*
* @author https:www.unfbx.com
* @since 2023-04-03
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/function/KeyStrategyFunction.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/function/KeyStrategyFunction.java
index 5ce5af05..c446414b 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/function/KeyStrategyFunction.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/function/KeyStrategyFunction.java
@@ -3,7 +3,7 @@ package org.ruoyi.common.chat.openai.function;
import java.util.function.Function;
/**
- * 描述:key 的获取策略
+ * key 的获取策略
* jdk默认实现
* @see Function
*
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/DefaultOpenAiAuthInterceptor.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/DefaultOpenAiAuthInterceptor.java
index 97154704..1165bc28 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/DefaultOpenAiAuthInterceptor.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/DefaultOpenAiAuthInterceptor.java
@@ -9,7 +9,7 @@ import java.util.List;
import java.util.Map;
/**
- * 描述:请求增加header apikey
+ * 请求增加header apikey
*
* @author https:www.unfbx.com
* @since 2023-03-23
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/DynamicKeyOpenAiAuthInterceptor.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/DynamicKeyOpenAiAuthInterceptor.java
index 1f8c7588..6fd892a5 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/DynamicKeyOpenAiAuthInterceptor.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/DynamicKeyOpenAiAuthInterceptor.java
@@ -16,7 +16,7 @@ import java.util.Objects;
import java.util.stream.Collectors;
/**
- * 描述:动态处理key的鉴权拦截器
+ * 动态处理key的鉴权拦截器
*
* @author https:www.unfbx.com
* @since 2023-04-25
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/OpenAILogger.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/OpenAILogger.java
index c0801e2f..dc32a69b 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/OpenAILogger.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/OpenAILogger.java
@@ -4,7 +4,7 @@ import lombok.extern.slf4j.Slf4j;
import okhttp3.logging.HttpLoggingInterceptor;
/**
- * 描述: 日志
+ * 日志
*
* @author https:www.unfbx.com
* 2023-02-28
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/OpenAiResponseInterceptor.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/OpenAiResponseInterceptor.java
index 6d656a23..936bcab7 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/OpenAiResponseInterceptor.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/interceptor/OpenAiResponseInterceptor.java
@@ -13,7 +13,7 @@ import java.io.IOException;
import java.util.Objects;
/**
- * 描述:openai 返回值处理Interceptor
+ * openai 返回值处理Interceptor
*
* @author https:www.unfbx.com
* @since 2023-03-23
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/CmdReq.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/CmdReq.java
deleted file mode 100644
index a275150b..00000000
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/CmdReq.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.ruoyi.common.chat.plugin;
-
-
-import lombok.Data;
-import org.ruoyi.common.chat.openai.plugin.PluginParam;
-
-@Data
-public class CmdReq extends PluginParam {
- /**
- * 指令
- */
- private String cmd;
-}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/CmdResp.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/CmdResp.java
deleted file mode 100644
index 4e101393..00000000
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/CmdResp.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.ruoyi.common.chat.plugin;
-
-import lombok.Data;
-
-@Data
-public class CmdResp {
-
- /**
- * 返回结果
- */
- private String result;
-}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlPlugin.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlPlugin.java
deleted file mode 100644
index a40734d7..00000000
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlPlugin.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.ruoyi.common.chat.plugin;
-
-import org.ruoyi.common.chat.openai.plugin.PluginAbstract;
-
-import java.sql.*;
-
-/**
- * @author ageer
- */
-public class SqlPlugin extends PluginAbstract {
-
- public SqlPlugin(Class> r) {
- super(r);
- }
-
-
-
- @Override
- public SqlResp func(SqlReq args) {
- SqlResp resp = new SqlResp();
- resp.setUserBalance(getBalance(args.getUsername()));
- return resp;
- }
-
- @Override
- public String content(SqlResp resp) {
- return "用户余额:"+resp.getUserBalance();
- }
-
-
- public String getBalance(String userName) {
- // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
- String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
- String DB_URL = "jdbc:mysql://43.139.70.230:3306/ry-vue";
- // 数据库的用户名与密码,需要根据自己的设置
- String USER = "ry-vue";
- String PASS = "BXZiGsY35K523Xfx";
- Connection conn = null;
- Statement stmt = null;
- String balance = "0.1";
-
- try{
- // 注册 JDBC 驱动
- Class.forName(JDBC_DRIVER);
-
- // 打开链接
- System.out.println("连接数据库...");
- conn = DriverManager.getConnection(DB_URL,USER,PASS);
-
- // 执行查询
- System.out.println(" 实例化Statement对象...");
- stmt = conn.createStatement();
- String sql;
- sql = "SELECT user_balance FROM sys_user where user_name ='" + userName + "'";
- ResultSet rs = stmt.executeQuery(sql);
- // 展开结果集数据库
- while(rs.next()){
- // 通过字段检索
- balance = rs.getString("user_balance");
- // 输出数据
- System.out.print("余额: " + balance);
- System.out.print("\n");
- }
- // 完成后关闭
- rs.close();
- stmt.close();
- conn.close();
- }catch(SQLException se){
- // 处理 JDBC 错误
- se.printStackTrace();
- }catch(Exception e){
- // 处理 Class.forName 错误
- e.printStackTrace();
- }finally{
- // 关闭资源
- try{
- if(stmt!=null) stmt.close();
- }catch(SQLException se2){
- }// 什么都不做
- try{
- if(conn!=null) conn.close();
- }catch(SQLException se){
- se.printStackTrace();
- }
- }
- return balance;
- }
-}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlReq.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlReq.java
deleted file mode 100644
index 481ba72c..00000000
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlReq.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.ruoyi.common.chat.plugin;
-
-
-import lombok.Data;
-import org.ruoyi.common.chat.openai.plugin.PluginParam;
-
-@Data
-public class SqlReq extends PluginParam {
- /**
- * 用户名称
- */
- private String username;
-}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlResp.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlResp.java
deleted file mode 100644
index b84b555b..00000000
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/plugin/SqlResp.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.ruoyi.common.chat.plugin;
-
-import lombok.Data;
-
-@Data
-public class SqlResp {
-
- /**
- * 用户余额
- */
- private String userBalance;
-}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/request/ChatRequest.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/request/ChatRequest.java
index c611c74a..ed62cb42 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/request/ChatRequest.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/request/ChatRequest.java
@@ -7,7 +7,7 @@ import org.ruoyi.common.chat.entity.chat.Message;
import java.util.List;
/**
- * 描述:对话请求对象
+ * 对话请求对象
*
* @author ageerle
* @sine 2023-04-08
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/request/Dall3Request.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/request/Dall3Request.java
index c6625de9..727fbf33 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/request/Dall3Request.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/request/Dall3Request.java
@@ -4,7 +4,7 @@ import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* @sine 2023-04-08
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/ConsoleEventSourceListener.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/ConsoleEventSourceListener.java
index e02b2655..4202e81e 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/ConsoleEventSourceListener.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/ConsoleEventSourceListener.java
@@ -10,7 +10,7 @@ import okhttp3.sse.EventSourceListener;
import java.util.Objects;
/**
- * 描述: sse
+ * sse
*
* @author https:www.unfbx.com
* 2023-02-28
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/DefaultPluginListener.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/DefaultPluginListener.java
index ab6fcf1e..7a55ca9a 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/DefaultPluginListener.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/DefaultPluginListener.java
@@ -8,7 +8,7 @@ import org.ruoyi.common.chat.openai.OpenAiStreamClient;
import org.ruoyi.common.chat.openai.plugin.PluginAbstract;
/**
- * 描述: 插件开发返回信息收集sse监听器
+ * 插件开发返回信息收集sse监听器
*
* @author https:www.unfbx.com
* 2023-08-18
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/PluginListener.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/PluginListener.java
index 8b9d4a4f..f1bfa44b 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/PluginListener.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/sse/PluginListener.java
@@ -19,7 +19,7 @@ import org.ruoyi.common.chat.openai.plugin.PluginParam;
import java.util.Objects;
/**
- * 描述: 插件开发返回信息收集sse监听器
+ * 插件开发返回信息收集sse监听器
*
* @author https:www.unfbx.com
* 2023-08-18
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/utils/TikTokensUtil.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/utils/TikTokensUtil.java
index 2000651d..f333ed70 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/utils/TikTokensUtil.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/utils/TikTokensUtil.java
@@ -15,7 +15,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.*;
/**
- * 描述:token计算工具类
+ * token计算工具类
*
* @author https:www.unfbx.com
* @since 2023-04-04
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/event/ConfigChangeEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/event/ConfigChangeEvent.java
index 67244af4..816668a4 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/event/ConfigChangeEvent.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/event/ConfigChangeEvent.java
@@ -3,7 +3,7 @@ package org.ruoyi.common.core.event;
import org.springframework.context.ApplicationEvent;
/**
- * 描述:定义一个事件类,用于通知配置变化
+ * 定义一个事件类,用于通知配置变化
*
* @author ageerle@163.com
* date 2024/5/19
diff --git a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/ChatChoice.java b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/ChatChoice.java
index 7919ad15..42ba7798 100644
--- a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/ChatChoice.java
+++ b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/ChatChoice.java
@@ -7,7 +7,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* @since 2023-03-02
diff --git a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/ChatCompletionResponse.java b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/ChatCompletionResponse.java
index 3134d4ee..56488357 100644
--- a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/ChatCompletionResponse.java
+++ b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/ChatCompletionResponse.java
@@ -7,7 +7,7 @@ import java.io.Serializable;
import java.util.List;
/**
- * 描述: chat答案类
+ * chat答案类
*
* @author https:www.unfbx.com
* 2023-03-02
diff --git a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/DouyuLiveChatClientTest.java b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/DouyuLiveChatClientTest.java
index 56cc6d0e..f7683afc 100644
--- a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/DouyuLiveChatClientTest.java
+++ b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/DouyuLiveChatClientTest.java
@@ -45,11 +45,7 @@ import tech.ordinaryroad.live.chat.client.douyu.netty.handler.DouyuConnectionHan
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.io.IOException;
import java.util.Objects;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -95,12 +91,9 @@ class DouyuLiveChatClientTest implements IDouyuConnectionListener, IDouyuMsgList
.build();
long startTime = System.currentTimeMillis(); // 获取开始时间的毫秒数
- System.out.println("执行前.......");
Thread.sleep(3000);
- System.out.println("执行后.......");
long endTime = System.currentTimeMillis(); // 获取结束时间的毫秒数
long timeDiff = endTime - startTime; // 计算时间差
- System.out.println("执行时间 " + timeDiff / 1000 + " 秒。");
try (Response response = okClient.newCall(request).execute()) {
if (response.body() != null) {
diff --git a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/Message.java b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/Message.java
index 7ab7d80b..4aef1fd2 100644
--- a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/Message.java
+++ b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/Message.java
@@ -9,7 +9,7 @@ import lombok.Getter;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* @since 2023-03-02
diff --git a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/Usage.java b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/Usage.java
index 5595bc08..aabe418d 100644
--- a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/Usage.java
+++ b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/client/Usage.java
@@ -7,7 +7,7 @@ import lombok.Data;
import java.io.Serializable;
/**
- * 描述:
+ *
*
* @author https:www.unfbx.com
* 2023-02-15
diff --git a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/util/DouyuCodecUtilTest.java b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/util/DouyuCodecUtilTest.java
index b4d72604..919995d3 100644
--- a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/util/DouyuCodecUtilTest.java
+++ b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-douyu/src/test/java/tech/ordinaryroad/live/chat/client/douyu/util/DouyuCodecUtilTest.java
@@ -48,7 +48,6 @@ class DouyuCodecUtilTest {
Map stringObjectMap = DouyuCodecUtil.parseDouyuSttStringToMap(mapkb);
assertNotNull(stringObjectMap);
stringObjectMap.forEach((string, o) -> {
- System.out.println(string);
});
}
@@ -58,7 +57,6 @@ class DouyuCodecUtilTest {
Map stringObjectMap = DouyuCodecUtil.parseDouyuSttStringToMap(pdrinfo);
assertNotNull(stringObjectMap);
stringObjectMap.forEach((string, o) -> {
- System.out.println(string);
});
}
@@ -78,7 +76,6 @@ class DouyuCodecUtilTest {
}});
}});
}});
- System.out.println(douyuSttString);
assertEquals("key1@=value1/key2@=2/key3@=11@AA=11@AS12@AA=12@AS@S22@AA=22@AS21@AA=21@AS@S/".length(), douyuSttString.length());
}
@@ -87,8 +84,6 @@ class DouyuCodecUtilTest {
String mapkb = "type@=mapkb/pk_time@=600/teams@=team@AA=5@ASres@AA=1@ASsc@AA=660000@ASbf@AA=0@AS@Steam@AA=6@ASres@AA=2@ASsc@AA=600000@ASbf@AA=0@AS@Steam@AA=4@ASres@AA=3@ASsc@AA=456000@ASbf@AA=0@AS@Steam@AA=2@ASres@AA=4@ASsc@AA=302000@ASbf@AA=0@AS@Steam@AA=3@ASres@AA=5@ASsc@AA=100000@ASbf@AA=0@AS@Steam@AA=1@ASres@AA=6@ASsc@AA=200@ASbf@AA=0@AS@S/";
IDouyuMsg iDouyuMsg = DouyuCodecUtil.parseDouyuSttString(mapkb, DouyuCodecUtil.MSG_TYPE_RECEIVE);
String douyuSttString = DouyuCodecUtil.toDouyuSttString(iDouyuMsg);
- System.out.println(mapkb);
- System.out.println(douyuSttString);
assertEquals(mapkb.length(), douyuSttString.length());
IDouyuMsg douyuSttStringMsg = DouyuCodecUtil.parseDouyuSttString(douyuSttString, DouyuCodecUtil.MSG_TYPE_RECEIVE);
assertNotNull(douyuSttStringMsg);
@@ -97,6 +92,5 @@ class DouyuCodecUtilTest {
@Test
void unescape() {
String unescape = DouyuCodecUtil.unescape("team@AA=5@ASres@AA=1@ASsc@AA=660000@ASbf@AA=0@AS@Steam@AA=6@ASres@AA=2@ASsc@AA=600000@ASbf@AA=0@AS@Steam@AA=4@ASres@AA=3@ASsc@AA=456000@ASbf@AA=0@AS@Steam@AA=2@ASres@AA=4@ASsc@AA=302000@ASbf@AA=0@AS@Steam@AA=3@ASres@AA=5@ASsc@AA=100000@ASbf@AA=0@AS@Steam@AA=1@ASres@AA=6@ASsc@AA=200@ASbf@AA=0@AS@S");
- System.out.println(unescape);
}
-}
\ No newline at end of file
+}
diff --git a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-huya/src/test/java/tech/ordinaryroad/live/chat/client/huya/util/HuyaCodecUtilTest.java b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-huya/src/test/java/tech/ordinaryroad/live/chat/client/huya/util/HuyaCodecUtilTest.java
index aabfed7e..71749f05 100644
--- a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-huya/src/test/java/tech/ordinaryroad/live/chat/client/huya/util/HuyaCodecUtilTest.java
+++ b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-huya/src/test/java/tech/ordinaryroad/live/chat/client/huya/util/HuyaCodecUtilTest.java
@@ -26,7 +26,6 @@ class HuyaCodecUtilTest {
ConnectParaInfo wsConnectParaInfo = ConnectParaInfo.newWSConnectParaInfo(ver, exp, appSrc);
byte[] byteArray = wsConnectParaInfo.toByteArray();
String s = HuyaCodecUtil.ab2str(byteArray);
- System.out.println(s);
}
@Test
@@ -36,7 +35,6 @@ class HuyaCodecUtilTest {
String s = HuyaCodecUtil.ab2str(byteArray);
String btoa = HuyaCodecUtil.btoa(s);
- System.out.println(btoa);
}
@Test
@@ -67,7 +65,6 @@ class HuyaCodecUtilTest {
LiveLaunchReq liveLaunchReq = new LiveLaunchReq();
liveLaunchReq = wupReq.getUniAttribute().getByClass("tReq", liveLaunchReq);
UserId tId = liveLaunchReq.getTId();
- System.out.println(wupReq.getTarsServantRequest().getVersion());
}
@Test
@@ -96,4 +93,4 @@ class HuyaCodecUtilTest {
UserId tId = getLivingInfoReq.getTId();
}
-}
\ No newline at end of file
+}
diff --git a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-kuaishou/src/test/java/tech/ordinaryroad/live/chat/client/kuaishou/api/KuaishouApisTest.java b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-kuaishou/src/test/java/tech/ordinaryroad/live/chat/client/kuaishou/api/KuaishouApisTest.java
index db2fa9eb..8bc3d05f 100644
--- a/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-kuaishou/src/test/java/tech/ordinaryroad/live/chat/client/kuaishou/api/KuaishouApisTest.java
+++ b/ruoyi-common/ruoyi-common-live/live-chat-clients/live-chat-client-kuaishou/src/test/java/tech/ordinaryroad/live/chat/client/kuaishou/api/KuaishouApisTest.java
@@ -28,13 +28,5 @@ class KuaishouApisTest {
@Test
void sendComment() {
- System.out.println(KuaishouApis.sendComment(System.getenv("cookie"),
- "3x6pb6bcmjrarvs",
- KuaishouApis.SendCommentRequest
- .builder()
- .liveStreamId("XKLoBv2mAEo")
- .content("666666a")
- .build()
- ));
}
-}
\ No newline at end of file
+}
diff --git a/ruoyi-common/ruoyi-common-pay/src/main/java/org/ruoyi/common/listener/ConfigChangeListener.java b/ruoyi-common/ruoyi-common-pay/src/main/java/org/ruoyi/common/listener/ConfigChangeListener.java
index b6b4fec8..06dcc3de 100644
--- a/ruoyi-common/ruoyi-common-pay/src/main/java/org/ruoyi/common/listener/ConfigChangeListener.java
+++ b/ruoyi-common/ruoyi-common-pay/src/main/java/org/ruoyi/common/listener/ConfigChangeListener.java
@@ -10,7 +10,7 @@ import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
/**
- * 描述:创建一个监听器,用于处理配置变化事件
+ * 创建一个监听器,用于处理配置变化事件
*
* @author ageerle@163.com
* date 2024/5/19
diff --git a/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/itchat4j/client/SingleHttpClient.java b/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/itchat4j/client/SingleHttpClient.java
index 7fcc9bfb..201b17ae 100644
--- a/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/itchat4j/client/SingleHttpClient.java
+++ b/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/itchat4j/client/SingleHttpClient.java
@@ -84,7 +84,6 @@ public class SingleHttpClient {
if (params != null) {
String paramStr = EntityUtils.toString(new UrlEncodedFormEntity(params, Consts.UTF_8));
httpGet = new HttpGet(url + "?" + paramStr);
-// System.out.println(url + "?" + paramStr);
} else {
httpGet = new HttpGet(url);
}
diff --git a/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/itchat4j/utils/tools/CommonTools.java b/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/itchat4j/utils/tools/CommonTools.java
index 17b2aff8..68cc5614 100644
--- a/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/itchat4j/utils/tools/CommonTools.java
+++ b/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/itchat4j/utils/tools/CommonTools.java
@@ -292,9 +292,6 @@ public class CommonTools {
sb.append(content.substring(lastStart));
}
if (sb.length() != 0) {
- System.out.println(EmojiParser.parseToUnicode(sb.toString()));
- System.out.println(EmojiParser.parseToAliases(EmojiParser.parseToUnicode(sb.toString())));
- System.out.println(EmojiParser.removeAllEmojis(sb.toString()));
}
}
diff --git a/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/web/utils/MD5Util.java b/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/web/utils/MD5Util.java
index 1748c30a..ccf72a10 100644
--- a/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/web/utils/MD5Util.java
+++ b/ruoyi-common/ruoyi-common-wechat/src/main/java/org/ruoyi/common/wechat/web/utils/MD5Util.java
@@ -61,7 +61,6 @@ public class MD5Util {
}
public static void main(String[] args) {
- System.out.println(MD5Encrypt("wxwobot"));
}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/pom.xml b/ruoyi-modules-api/ruoyi-chat-api/pom.xml
index e2506bad..b47d9c3e 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/pom.xml
+++ b/ruoyi-modules-api/ruoyi-chat-api/pom.xml
@@ -71,6 +71,18 @@
spring-ai-starter-model-openai
+
+ io.github.imfangs
+ dify-java-client
+ 1.0.7
+
+
+
+ com.coze
+ coze-api
+ 0.3.1
+
+
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
index f67e7657..816ab8bb 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
@@ -1,6 +1,7 @@
package org.ruoyi.domain;
+import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -46,7 +47,7 @@ public class ChatModel extends BaseEntity {
/**
* 模型价格
*/
- private Long modelPrice;
+ private Double modelPrice;
/**
* 计费类型
@@ -68,6 +69,7 @@ public class ChatModel extends BaseEntity {
*/
private String apiHost;
+
/**
* 密钥
*/
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
index 45e0705c..5af9bc31 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
@@ -1,5 +1,6 @@
package org.ruoyi.domain.bo;
+import com.alibaba.excel.annotation.ExcelProperty;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
import org.ruoyi.domain.ChatModel;
@@ -48,7 +49,7 @@ public class ChatModelBo extends BaseEntity {
* 模型价格
*/
@NotNull(message = "模型价格不能为空", groups = { AddGroup.class, EditGroup.class })
- private Long modelPrice;
+ private Double modelPrice;
/**
* 计费类型
@@ -79,6 +80,7 @@ public class ChatModelBo extends BaseEntity {
@NotBlank(message = "密钥不能为空", groups = { AddGroup.class, EditGroup.class })
private String apiKey;
+
/**
* 备注
*/
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java
index c8121e7e..83977698 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java
@@ -3,7 +3,7 @@ package org.ruoyi.domain.request;
import lombok.Data;
/**
- * 描述:翻译请求对象
+ * 翻译请求对象
*
* @author ageerle@163.com
* date 2025/1/13
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
index 56efb598..d477435b 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
@@ -56,7 +56,7 @@ public class ChatModelVo implements Serializable {
* 模型价格
*/
@ExcelProperty(value = "模型价格")
- private Long modelPrice;
+ private Double modelPrice;
/**
* 计费类型
@@ -94,5 +94,4 @@ public class ChatModelVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
-
}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml b/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml
index f6412e1b..83eac39a 100644
--- a/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/pom.xml
@@ -103,6 +103,18 @@
1.19.6
+
+ dev.langchain4j
+ langchain4j-document-parser-apache-tika
+
+
+
+
+ commons-io
+ commons-io
+ 2.17.0
+
+
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ExcelFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ExcelFileLoader.java
new file mode 100644
index 00000000..b47ce11f
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ExcelFileLoader.java
@@ -0,0 +1,41 @@
+package org.ruoyi.chain.loader;
+
+import dev.langchain4j.data.document.Document;
+import dev.langchain4j.data.document.parser.apache.tika.ApacheTikaDocumentParser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chain.split.TextSplitter;
+import org.ruoyi.common.core.exception.UtilException;
+import org.springframework.stereotype.Component;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+@Component
+@AllArgsConstructor
+@Slf4j
+public class ExcelFileLoader implements ResourceLoader {
+ private final TextSplitter textSplitter;
+ private static final int DEFAULT_BUFFER_SIZE = 8192;
+ @Override
+ public String getContent(InputStream inputStream) {
+ // 使用带缓冲的输入流包装(保持原流不自动关闭)
+ try (InputStream bufferedStream = new BufferedInputStream(inputStream, DEFAULT_BUFFER_SIZE)) {
+ ApacheTikaDocumentParser apacheTikaDocumentParser = new ApacheTikaDocumentParser();
+ Document document = apacheTikaDocumentParser.parse(bufferedStream);
+ return document.text();
+ } catch (IOException e) {
+ String errorMsg = "Excel文件流读取失败";
+ throw new UtilException(errorMsg, e);
+ } catch (RuntimeException e) {
+ String errorMsg = "Excel内容解析异常";
+ throw new UtilException(errorMsg, e);
+ }
+ }
+
+ @Override
+ public List getChunkList(String content, String kid) {
+ return textSplitter.split(content, kid);
+ }
+}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java
index aa72d761..ec33c668 100644
--- a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java
@@ -1,10 +1,7 @@
package org.ruoyi.chain.loader;
import lombok.AllArgsConstructor;
-import org.ruoyi.chain.split.CharacterTextSplitter;
-import org.ruoyi.chain.split.CodeTextSplitter;
-import org.ruoyi.chain.split.MarkdownTextSplitter;
-import org.ruoyi.chain.split.TokenTextSplitter;
+import org.ruoyi.chain.split.*;
import org.ruoyi.constant.FileType;
import org.springframework.stereotype.Component;
@@ -16,6 +13,8 @@ public class ResourceLoaderFactory {
private final CodeTextSplitter codeTextSplitter;
private final MarkdownTextSplitter markdownTextSplitter;
private final TokenTextSplitter tokenTextSplitter;
+ private final ExcelTextSplitter excelTextSplitter;
+
public ResourceLoader getLoaderByFileType(String fileType){
if (FileType.isTextFile(fileType)){
return new TextFileLoader(characterTextSplitter);
@@ -25,6 +24,8 @@ public class ResourceLoaderFactory {
return new PdfFileLoader(characterTextSplitter);
} else if (FileType.isMdFile(fileType)) {
return new MarkDownFileLoader(markdownTextSplitter);
+ }else if (FileType.isExcel(fileType)) {
+ return new ExcelFileLoader(excelTextSplitter);
}else if (FileType.isCodeFile(fileType)) {
return new CodeFileLoader(codeTextSplitter);
}else {
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/ExcelTextSplitter.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/ExcelTextSplitter.java
new file mode 100644
index 00000000..cc2b5f04
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/ExcelTextSplitter.java
@@ -0,0 +1,17 @@
+package org.ruoyi.chain.split;
+
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+@AllArgsConstructor
+@Slf4j
+public class ExcelTextSplitter implements TextSplitter{
+ @Override
+ public List split(String content, String kid) {
+ return null;
+ }
+}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java
index aa141679..e939508b 100644
--- a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java
@@ -7,6 +7,8 @@ public class FileType {
public static final String DOC = "doc";
public static final String DOCX = "docx";
public static final String PDF = "pdf";
+ public static final String XLS = "xls";
+ public static final String XLSX = "xlsx";
public static final String LOG = "log";
public static final String XML = "xml";
@@ -88,4 +90,13 @@ public class FileType {
}
}
+ public static boolean isExcel(String type){
+ if (type.equalsIgnoreCase(XLS) || type.equalsIgnoreCase(XLSX)){
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+
}
diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java
index 294342a6..d74176a4 100644
--- a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/VectorStoreServiceImpl.java
@@ -11,6 +11,7 @@ import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.filter.Filter;
import dev.langchain4j.store.embedding.filter.comparison.IsEqualTo;
+import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import dev.langchain4j.store.embedding.milvus.MilvusEmbeddingStore;
import dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore;
import dev.langchain4j.store.embedding.weaviate.WeaviateEmbeddingStore;
@@ -39,11 +40,11 @@ public class VectorStoreServiceImpl implements VectorStoreService {
private final ConfigService configService;
- Map> storeMap;
+ Map> storeMap = new HashMap<>();
@Override
public void createSchema(String kid,String modelName) {
- EmbeddingStore embeddingStore = WeaviateEmbeddingStore.builder().build();
+ EmbeddingStore embeddingStore;
switch (modelName) {
case "weaviate" -> {
String protocol = configService.getConfigValue("weaviate", "protocol");
@@ -78,6 +79,10 @@ public class VectorStoreServiceImpl implements VectorStoreService {
.collectionName(collectionName)
.build();
}
+ default -> {
+ //使用内存
+ embeddingStore = new InMemoryEmbeddingStore<>();
+ }
}
storeMap.put(kid,embeddingStore);
}
diff --git a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserPasswordBo.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserPasswordBo.java
index 493ba0aa..ae9a0854 100644
--- a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserPasswordBo.java
+++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysUserPasswordBo.java
@@ -7,7 +7,7 @@ import java.io.Serializable;
/**
- * 描述:用户密码修改bo
+ * 用户密码修改bo
*
* @author ageerle@163.com
* date 2025/3/9
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatController.java
index a082cd9b..032c44dd 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatController.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/controller/chat/ChatController.java
@@ -28,7 +28,7 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
/**
- * 描述:聊天管理
+ * 聊天管理
*
* @author ageerle@163.com
* @date 2023-03-01
@@ -70,8 +70,7 @@ public class ChatController {
@PostMapping("/audio")
@ResponseBody
public WhisperResponse audio(@RequestParam("file") MultipartFile file) {
- WhisperResponse whisperResponse = sseService.speechToTextTranscriptionsV2(file);
- return whisperResponse;
+ return sseService.speechToTextTranscriptionsV2(file);
}
/**
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/domain/bo/GenerateLuma.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/domain/bo/GenerateLuma.java
index 8cef12cf..2fa34c7c 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/domain/bo/GenerateLuma.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/domain/bo/GenerateLuma.java
@@ -3,7 +3,7 @@ package org.ruoyi.chat.domain.bo;
import lombok.Data;
/**
- * 描述:文生视频请求对象
+ * 文生视频请求对象
*
* @author ageerle@163.com
* date 2024/6/27
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/domain/bo/GenerateLyric.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/domain/bo/GenerateLyric.java
index 699c7801..4a59d75e 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/domain/bo/GenerateLyric.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/domain/bo/GenerateLyric.java
@@ -3,7 +3,7 @@ package org.ruoyi.chat.domain.bo;
import lombok.Data;
/**
- * 描述:生成歌词
+ * 生成歌词
*
* @author ageerle@163.com
* date 2024/6/27
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/enums/ChatModeType.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/enums/ChatModeType.java
index 04c5e453..d29bccd3 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/enums/ChatModeType.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/enums/ChatModeType.java
@@ -6,6 +6,8 @@ import lombok.Getter;
public enum ChatModeType {
OLLAMA("ollama", "本地部署模型"),
CHAT("chat", "中转模型"),
+ DIFY("dify", "DIFY"),
+ COZE("coze", "扣子"),
VECTOR("vector", "知识库向量模型");
private final String code;
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/enums/DisplayType.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/enums/DisplayType.java
index a4eae3d9..85813ff5 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/enums/DisplayType.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/enums/DisplayType.java
@@ -3,7 +3,7 @@ package org.ruoyi.chat.enums;
import lombok.Getter;
/**
- * 描述:是否显示
+ * 是否显示
*
* @author ageerle@163.com
* date 2025/4/10
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/factory/ChatServiceFactory.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/factory/ChatServiceFactory.java
new file mode 100644
index 00000000..f1e88a9a
--- /dev/null
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/factory/ChatServiceFactory.java
@@ -0,0 +1,43 @@
+package org.ruoyi.chat.factory;
+
+import org.ruoyi.chat.service.chat.IChatService;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 聊天服务工厂类
+ *
+ * @author ageerle@163.com
+ * date 2025/5/10
+ */
+@Component
+public class ChatServiceFactory implements ApplicationContextAware {
+ private final Map chatServiceMap = new ConcurrentHashMap<>();
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ // 初始化时收集所有IChatService的实现
+ Map serviceMap = applicationContext.getBeansOfType(IChatService.class);
+ for (IChatService service : serviceMap.values()) {
+ if (service != null) {
+ chatServiceMap.put(service.getCategory(), service);
+ }
+ }
+ }
+
+ /**
+ * 根据模型类别获取对应的聊天服务实现
+ */
+ public IChatService getChatService(String category) {
+ IChatService service = chatServiceMap.get(category);
+ if (service == null) {
+ throw new IllegalArgumentException("不支持的模型类别: " + category);
+ }
+ return service;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java
index f8fd1cf9..7185d510 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java
@@ -24,7 +24,7 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.util.Objects;
/**
- * 描述:OpenAIEventSourceListener
+ * OpenAIEventSourceListener
*
* @author https:www.unfbx.com
* @date 2023-02-22
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/IChatService.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/IChatService.java
index fc070721..55ea2ac8 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/IChatService.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/IChatService.java
@@ -16,6 +16,8 @@ public interface IChatService {
* @param chatRequest 请求对象
*/
SseEmitter chat(ChatRequest chatRequest,SseEmitter emitter);
-
-
+ /**
+ * 获取此服务支持的模型类别
+ */
+ String getCategory();
}
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/UserModelService.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/UserModelService.java
index ada36d09..01b677d7 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/UserModelService.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/UserModelService.java
@@ -1,26 +1,16 @@
package org.ruoyi.chat.service.chat;
-import cn.dev33.satoken.stp.StpUtil;
import lombok.RequiredArgsConstructor;
import org.ruoyi.chat.enums.DisplayType;
-import org.ruoyi.chat.enums.UserGradeType;
-import org.ruoyi.common.satoken.utils.LoginHelper;
import org.ruoyi.domain.bo.ChatModelBo;
-import org.ruoyi.domain.bo.ChatPackagePlanBo;
import org.ruoyi.domain.vo.ChatModelVo;
-import org.ruoyi.domain.vo.ChatPackagePlanVo;
import org.ruoyi.service.IChatModelService;
-import org.ruoyi.service.IChatPackagePlanService;
-import org.ruoyi.system.domain.vo.SysUserVo;
-import org.ruoyi.system.service.ISysUserService;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
/**
- * 描述:用户模型信息
+ * 用户模型信息
*
* @author ageerle@163.com
* date 2025/4/10
@@ -32,30 +22,9 @@ public class UserModelService {
private final IChatModelService chatModelService;
- private final ISysUserService userService;
-
- private final IChatPackagePlanService packagePlanService;
-
public List modelList(ChatModelBo bo) {
bo.setModelShow(DisplayType.VISIBLE.getCode());
- List chatModelList = chatModelService.queryList(bo);
- ChatPackagePlanBo sysPackagePlanBo = new ChatPackagePlanBo();
- if (StpUtil.isLogin()) {
- Long userId = LoginHelper.getLoginUser().getUserId();
- SysUserVo sysUserVo = userService.selectUserById(userId);
- if (UserGradeType.UNPAID.getCode().equals(sysUserVo.getUserGrade())){
- sysPackagePlanBo.setName("Free");
- ChatPackagePlanVo chatPackagePlanVo = packagePlanService.queryList(sysPackagePlanBo).get(0);
- List array = new ArrayList<>(Arrays.asList(chatPackagePlanVo.getPlanDetail().split(",")));
- chatModelList.removeIf(model -> !array.contains(model.getModelName()));
- }
- }else {
- sysPackagePlanBo.setName("Visitor");
- ChatPackagePlanVo sysPackagePlanVo = packagePlanService.queryList(sysPackagePlanBo).get(0);
- List array = new ArrayList<>(Arrays.asList(sysPackagePlanVo.getPlanDetail().split(",")));
- chatModelList.removeIf(model -> !array.contains(model.getModelName()));
- }
- return new ArrayList<>(chatModelList);
+ return chatModelService.queryList(bo);
}
}
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/CozeServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/CozeServiceImpl.java
new file mode 100644
index 00000000..6da0988c
--- /dev/null
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/CozeServiceImpl.java
@@ -0,0 +1,81 @@
+package org.ruoyi.chat.service.chat.impl;
+
+import com.coze.openapi.client.chat.CreateChatReq;
+import com.coze.openapi.client.chat.model.ChatEvent;
+import com.coze.openapi.client.chat.model.ChatEventType;
+import com.coze.openapi.client.connversations.message.model.Message;
+import com.coze.openapi.service.auth.TokenAuth;
+import com.coze.openapi.service.config.Consts;
+import com.coze.openapi.service.service.CozeAPI;
+import io.reactivex.Flowable;
+import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chat.enums.ChatModeType;
+import org.ruoyi.chat.service.chat.IChatService;
+import org.ruoyi.common.chat.request.ChatRequest;
+import org.ruoyi.domain.vo.ChatModelVo;
+import org.ruoyi.service.IChatModelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+
+import java.util.Collections;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * 扣子聊天管理
+ *
+ * @author ageer
+ */
+@Service
+@Slf4j
+public class CozeServiceImpl implements IChatService {
+
+ @Autowired
+ private IChatModelService chatModelService;
+
+ @Override
+ public SseEmitter chat(ChatRequest chatRequest, SseEmitter emitter) {
+ ChatModelVo chatModelVo = chatModelService.selectModelByName(chatRequest.getModel());
+
+ TokenAuth authCli = new TokenAuth(chatModelVo.getApiKey());
+ CozeAPI coze =
+ new CozeAPI.Builder()
+ .baseURL(chatModelVo.getApiHost())
+ .auth(authCli)
+ .readTimeout(10000)
+ .build();
+ CreateChatReq req =
+ CreateChatReq.builder()
+ .botID(chatModelVo.getModelName())
+ .userID(chatRequest.getUserId().toString())
+ .messages(Collections.singletonList(Message.buildUserQuestionText("What can you do?")))
+ .build();
+
+ Flowable resp = coze.chat().stream(req);
+ ExecutorService executor = Executors.newFixedThreadPool(10);
+ executor.submit(() -> {
+ resp.blockingForEach(
+ event -> {
+ if (ChatEventType.CONVERSATION_MESSAGE_DELTA.equals(event.getEvent())) {
+ emitter.send(event.getMessage().getContent());
+ log.info("coze: {}", event.getMessage().getContent());
+ }
+ if (ChatEventType.CONVERSATION_CHAT_COMPLETED.equals(event.getEvent())) {
+ emitter.complete();
+ log.info("Token usage: {}", event.getChat().getUsage().getTokenCount());
+ }
+ }
+ );
+ coze.shutdownExecutor();
+ });
+
+
+ return emitter;
+ }
+
+ @Override
+ public String getCategory() {
+ return ChatModeType.COZE.getCode();
+ }
+}
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/DifyServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/DifyServiceImpl.java
new file mode 100644
index 00000000..06989bb0
--- /dev/null
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/DifyServiceImpl.java
@@ -0,0 +1,96 @@
+package org.ruoyi.chat.service.chat.impl;
+
+import io.github.imfangs.dify.client.DifyClient;
+import io.github.imfangs.dify.client.DifyClientFactory;
+import io.github.imfangs.dify.client.callback.ChatStreamCallback;
+import io.github.imfangs.dify.client.enums.ResponseMode;
+import io.github.imfangs.dify.client.event.ErrorEvent;
+import io.github.imfangs.dify.client.event.MessageEndEvent;
+import io.github.imfangs.dify.client.event.MessageEvent;
+import io.github.imfangs.dify.client.model.DifyConfig;
+import io.github.imfangs.dify.client.model.chat.ChatMessage;
+
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+
+import org.ruoyi.chat.enums.ChatModeType;
+import org.ruoyi.chat.service.chat.IChatService;
+import org.ruoyi.common.chat.request.ChatRequest;
+import org.ruoyi.domain.vo.ChatModelVo;
+import org.ruoyi.service.IChatModelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+
+/**
+ * dify 聊天管理
+ *
+ * @author ageer
+ */
+@Service
+@Slf4j
+public class DifyServiceImpl implements IChatService {
+
+ @Autowired
+ private IChatModelService chatModelService;
+
+ @Override
+ public SseEmitter chat(ChatRequest chatRequest, SseEmitter emitter) {
+ ChatModelVo chatModelVo = chatModelService.selectModelByName(chatRequest.getModel());
+
+ // 使用自定义配置创建客户端
+ DifyConfig config = DifyConfig.builder()
+ .baseUrl(chatModelVo.getApiHost())
+ .apiKey(chatModelVo.getApiKey())
+ .connectTimeout(5000)
+ .readTimeout(60000)
+ .writeTimeout(30000)
+ .build();
+ DifyClient chatClient = DifyClientFactory.createClient(config);
+
+ // 创建聊天消息
+ ChatMessage message = ChatMessage.builder()
+ .query(chatRequest.getPrompt())
+ .user(chatRequest.getUserId().toString())
+ .responseMode(ResponseMode.STREAMING)
+ .build();
+
+ // 发送流式消息
+ try {
+ chatClient.sendChatMessageStream(message, new ChatStreamCallback() {
+ @SneakyThrows
+ @Override
+ public void onMessage(MessageEvent event) {
+ emitter.send(event.getAnswer());
+ log.info("收到消息片段: {}", event.getAnswer());
+ }
+
+ @Override
+ public void onMessageEnd(MessageEndEvent event) {
+ emitter.complete();
+ log.info("消息结束,完整消息ID: {}", event.getMessageId());
+ }
+
+ @Override
+ public void onError(ErrorEvent event) {
+ System.err.println("错误: " + event.getMessage());
+ }
+
+ @Override
+ public void onException(Throwable throwable) {
+ System.err.println("异常: " + throwable.getMessage());
+ }
+ });
+ } catch (Exception e) {
+ log.error("dify请求失败:{}", e.getMessage());
+ }
+
+ return emitter;
+ }
+
+ @Override
+ public String getCategory() {
+ return ChatModeType.DIFY.getCode();
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OllamaServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OllamaServiceImpl.java
index f06461b1..532b052e 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OllamaServiceImpl.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OllamaServiceImpl.java
@@ -7,6 +7,8 @@ import io.github.ollama4j.models.chat.OllamaChatRequestBuilder;
import io.github.ollama4j.models.chat.OllamaChatRequestModel;
import io.github.ollama4j.models.generate.OllamaStreamHandler;
import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chat.enums.ChatModeType;
+import org.ruoyi.chat.service.chat.IChatService;
import org.ruoyi.chat.util.SSEUtil;
import org.ruoyi.common.chat.entity.chat.Message;
import org.ruoyi.common.chat.request.ChatRequest;
@@ -22,14 +24,18 @@ import java.util.List;
import java.util.concurrent.CompletableFuture;
+/**
+ * @author ageer
+ */
@Service
@Slf4j
-public class OllamaServiceImpl {
+public class OllamaServiceImpl implements IChatService {
- @Autowired
- private IChatModelService chatModelService;
+ @Autowired
+ private IChatModelService chatModelService;
- public SseEmitter chat(ChatRequest chatRequest,SseEmitter emitter) {
+ @Override
+ public SseEmitter chat(ChatRequest chatRequest, SseEmitter emitter) {
ChatModelVo chatModelVo = chatModelService.selectModelByName(chatRequest.getModel());
String host = chatModelVo.getApiHost();
List msgList = chatRequest.getMessages();
@@ -56,7 +62,6 @@ public class OllamaServiceImpl {
OllamaStreamHandler streamHandler = (s) -> {
String substr = s.substring(response.length());
response.append(substr);
- System.out.println(substr);
try {
emitter.send(substr);
} catch (IOException e) {
@@ -73,4 +78,8 @@ public class OllamaServiceImpl {
return emitter;
}
+ @Override
+ public String getCategory() {
+ return ChatModeType.OLLAMA.getCode();
+ }
}
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
index c2e5ed31..094689c2 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
@@ -3,6 +3,7 @@ package org.ruoyi.chat.service.chat.impl;
import io.modelcontextprotocol.client.McpSyncClient;
import lombok.extern.slf4j.Slf4j;
import org.ruoyi.chat.config.ChatConfig;
+import org.ruoyi.chat.enums.ChatModeType;
import org.ruoyi.chat.listener.SSEEventSourceListener;
import org.ruoyi.chat.service.chat.IChatService;
import org.ruoyi.common.chat.entity.chat.ChatCompletion;
@@ -21,6 +22,9 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.util.List;
+/**
+ * @author ageer
+ */
@Service
@Slf4j
public class OpenAIServiceImpl implements IChatService {
@@ -28,9 +32,6 @@ public class OpenAIServiceImpl implements IChatService {
@Autowired
private IChatModelService chatModelService;
- private OpenAiStreamClient openAiStreamClient;
-
-
@Value("${spring.ai.mcp.client.enabled}")
private Boolean enabled;
@@ -47,7 +48,7 @@ public class OpenAIServiceImpl implements IChatService {
@Override
public SseEmitter chat(ChatRequest chatRequest,SseEmitter emitter) {
ChatModelVo chatModelVo = chatModelService.selectModelByName(chatRequest.getModel());
- openAiStreamClient = ChatConfig.createOpenAiStreamClient(chatModelVo.getApiHost(), chatModelVo.getApiKey());
+ OpenAiStreamClient openAiStreamClient = ChatConfig.createOpenAiStreamClient(chatModelVo.getApiHost(), chatModelVo.getApiKey());
List messages = chatRequest.getMessages();
if (enabled) {
String toolString = mcpChat(chatRequest.getPrompt());
@@ -69,4 +70,9 @@ public class OpenAIServiceImpl implements IChatService {
return this.chatClient.prompt(prompt).call().content();
}
+ @Override
+ public String getCategory() {
+ return ChatModeType.CHAT.getCode();
+ }
+
}
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java
index c12ed44e..cc5f2896 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java
@@ -8,7 +8,9 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import okhttp3.ResponseBody;
import org.ruoyi.chat.enums.ChatModeType;
+import org.ruoyi.chat.factory.ChatServiceFactory;
import org.ruoyi.chat.service.chat.IChatCostService;
+import org.ruoyi.chat.service.chat.IChatService;
import org.ruoyi.chat.service.chat.ISseService;
import org.ruoyi.chat.util.IpUtil;
import org.ruoyi.chat.util.SSEUtil;
@@ -61,9 +63,7 @@ public class SseServiceImpl implements ISseService {
private final IChatModelService chatModelService;
- private final OpenAIServiceImpl openAIService;
-
- private final OllamaServiceImpl ollamaService;
+ private final ChatServiceFactory chatServiceFactory;
private final IChatSessionService chatSessionService;
@@ -95,7 +95,8 @@ public class SseServiceImpl implements ISseService {
chatCostService.deductToken(chatRequest);
}
// 根据模型分类调用不同的处理逻辑
- switchModelAndHandle(chatRequest,sseEmitter);
+ IChatService chatService = chatServiceFactory.getChatService(chatModelVo.getCategory());
+ chatService.chat(chatRequest, sseEmitter);
} catch (Exception e) {
log.error(e.getMessage(),e);
SSEUtil.sendErrorEvent(sseEmitter,e.getMessage());
@@ -147,17 +148,6 @@ public class SseServiceImpl implements ISseService {
}
}
- /**
- * 根据模型名称前缀调用不同的处理逻辑
- */
- private void switchModelAndHandle(ChatRequest chatRequest,SseEmitter emitter) {
- // 调用ollama中部署的本地模型
- if (ChatModeType.OLLAMA.getCode().equals(chatModelVo.getCategory())) {
- ollamaService.chat(chatRequest,emitter);
- } else {
- openAIService.chat(chatRequest,emitter);
- }
- }
/**
* 构建消息列表
diff --git a/ruoyi-modules/ruoyi-wechat/src/main/java/org/ruoyi/service/VxLoginService.java b/ruoyi-modules/ruoyi-wechat/src/main/java/org/ruoyi/service/VxLoginService.java
index 31e6876b..874a8bf9 100644
--- a/ruoyi-modules/ruoyi-wechat/src/main/java/org/ruoyi/service/VxLoginService.java
+++ b/ruoyi-modules/ruoyi-wechat/src/main/java/org/ruoyi/service/VxLoginService.java
@@ -26,7 +26,7 @@ import org.springframework.stereotype.Service;
import java.util.UUID;
/**
- * 描述:微信公众号登录
+ * 微信公众号登录
*
* @author ageerle@163.com
* date 2025/4/30
diff --git a/script/sql/update/20250509.sql b/script/sql/update/20250509.sql
new file mode 100644
index 00000000..19bfe5e1
--- /dev/null
+++ b/script/sql/update/20250509.sql
@@ -0,0 +1,4 @@
+ALTER TABLE `chat_model`
+ ADD COLUMN `api_url` varchar(50) NULL COMMENT '请求后缀' AFTER `api_key`;
+
+INSERT INTO `chat_config` (`id`, `category`, `config_name`, `config_value`, `config_dict`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`) VALUES (1779450794872414211, 'chat', 'apiUrl', 'v1/chat/completions', 'API 请求后缀', 103, '2024-04-14 18:05:05', '1', '1', '2025-04-23 22:29:04', NULL, NULL, '0', NULL, 0);