mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-04-12 19:17:20 +00:00
Compare commits
3 Commits
dbdacdad5c
...
0b1925cc62
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b1925cc62 | ||
|
|
3c237f45ad | ||
|
|
9500304b77 |
@@ -26,11 +26,18 @@ public class ChatRequest {
|
||||
*/
|
||||
private String prompt;
|
||||
|
||||
|
||||
/**
|
||||
* 系统提示词
|
||||
*/
|
||||
private String sysPrompt;
|
||||
|
||||
|
||||
/**
|
||||
* 消息id
|
||||
*/
|
||||
private Long messageId;
|
||||
|
||||
/**
|
||||
* 是否开启流式对话
|
||||
*/
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<maven.compiler.source>17</maven.compiler.source>
|
||||
<maven.compiler.target>17</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<spring-ai.version>1.0.0</spring-ai.version>
|
||||
<spring-ai.version>1.0.0-M7</spring-ai.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
||||
@@ -110,7 +110,7 @@ public class ChatCostServiceImpl implements IChatCostService {
|
||||
BigDecimal numberCost = unitPrice
|
||||
.multiply(BigDecimal.valueOf(batches))
|
||||
.setScale(2, RoundingMode.HALF_UP);
|
||||
log.debug("deductToken->按token扣费,结算token数量: {},批次数: {},单价: {},费用: {}",
|
||||
log.debug("deductToken->按token扣费,结算token数量: {},批次数: {},单价: {},费用: {}",
|
||||
billable, batches, unitPrice, numberCost);
|
||||
|
||||
try {
|
||||
@@ -137,7 +137,7 @@ public class ChatCostServiceImpl implements IChatCostService {
|
||||
chatToken.setUserId(chatRequest.getUserId());
|
||||
chatToken.setToken(totalTokens);
|
||||
chatTokenService.editToken(chatToken);
|
||||
|
||||
|
||||
// 虽未扣费,但要更新消息的基本信息(实际token数、计费类型等)
|
||||
updateMessageWithoutBilling(chatRequest, tokens, chatModelVo.getModelType());
|
||||
}
|
||||
@@ -167,12 +167,6 @@ public class ChatCostServiceImpl implements IChatCostService {
|
||||
chatMessageBo.setContent(chatRequest.getPrompt().trim());
|
||||
chatMessageBo.setModelName(chatRequest.getModel());
|
||||
|
||||
// // 基础消息信息,计费相关数据(tokens、费用、计费类型等)在扣费时统一设置
|
||||
// chatMessageBo.setTotalTokens(0); // 初始设为0,扣费时更新
|
||||
// chatMessageBo.setDeductCost(null);
|
||||
// chatMessageBo.setBillingType(null);
|
||||
// chatMessageBo.setRemark("用户消息");
|
||||
|
||||
try {
|
||||
chatMessageService.insertByBo(chatMessageBo);
|
||||
// 保存成功后,将生成的消息ID设置到ChatRequest中
|
||||
@@ -444,11 +438,11 @@ public class ChatCostServiceImpl implements IChatCostService {
|
||||
preCheckBalance(chatRequest);
|
||||
return true; // 预检查通过,余额充足
|
||||
} catch (ServiceException e) {
|
||||
log.debug("checkBalanceSufficient->余额不足,用户ID: {}, 模型: {}, 错误: {}",
|
||||
log.debug("checkBalanceSufficient->余额不足,用户ID: {}, 模型: {}, 错误: {}",
|
||||
chatRequest.getUserId(), chatRequest.getModel(), e.getMessage());
|
||||
return false; // 预检查失败,余额不足
|
||||
} catch (Exception e) {
|
||||
log.error("checkBalanceSufficient->检查余额时发生异常,用户ID: {}, 模型: {}",
|
||||
log.error("checkBalanceSufficient->检查余额时发生异常,用户ID: {}, 模型: {}",
|
||||
chatRequest.getUserId(), chatRequest.getModel(), e);
|
||||
return false; // 异常情况视为余额不足,保守处理
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class OpenAIServiceImpl implements IChatService {
|
||||
this.chatClient = chatClientBuilder
|
||||
.defaultOptions(
|
||||
OpenAiChatOptions.builder().model("gpt-4o-mini").build())
|
||||
.defaultToolCallbacks(new SyncMcpToolCallbackProvider(mcpSyncClients))
|
||||
.defaultTools(new SyncMcpToolCallbackProvider(mcpSyncClients))
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -19,28 +19,36 @@ insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component,
|
||||
values(1954103099019309061, 'MCP导出', 1954103099019309056, '5', '#', '', 1, 0, 'F', '0', '0', 'operator:mcpInfo:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
|
||||
-- mcp_info ddl
|
||||
CREATE TABLE `mcp_info` (
|
||||
`mcp_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`server_name` varchar(50) DEFAULT NULL COMMENT '服务器名称',
|
||||
`transport_type` varchar(255) DEFAULT NULL COMMENT '链接方式',
|
||||
`command` varchar(255) DEFAULT NULL COMMENT 'Command',
|
||||
`arguments` varchar(255) DEFAULT NULL COMMENT 'Args',
|
||||
`env` varchar(255) DEFAULT NULL COMMENT 'Env',
|
||||
`status` tinyint(1) DEFAULT NULL COMMENT '是否启用',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`mcp_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
|
||||
-- ----------------------------
|
||||
-- Table structure for mcp_info
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `mcp_info`;
|
||||
CREATE TABLE `mcp_info` (
|
||||
`mcp_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`server_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '服务器名称',
|
||||
`transport_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '链接方式',
|
||||
`command` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '命令',
|
||||
`arguments` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数',
|
||||
`env` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '环境',
|
||||
`status` tinyint(1) NULL DEFAULT NULL COMMENT '是否启用',
|
||||
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '工具描述',
|
||||
`create_dept` bigint(20) NULL DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`mcp_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'mcp工具管理' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of mcp_info
|
||||
-- ----------------------------
|
||||
INSERT INTO `mcp_info` VALUES (1, 'howtocook-mcp', 'STDIO', 'npx', '[\"-y\", \"howtocook-mcp\"]', NULL, 1, NULL, NULL, NULL, '2025-08-11 17:19:25', 1, '2025-08-11 18:24:22', NULL);
|
||||
|
||||
|
||||
INSERT INTO `ruoyi-ai`.`sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1954098808913211393, '000000', 0, 'STDIO', 'STDIO', 'mcp_transport_type', NULL, '', 'N', '0', NULL, NULL, '2025-08-09 16:33:56', 1, '2025-08-09 16:34:19', NULL);
|
||||
INSERT INTO `ruoyi-ai`.`sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1954098960432443394, '000000', 1, 'SSE', 'SSE', 'mcp_transport_type', NULL, '', 'N', '0', NULL, NULL, '2025-08-09 16:34:32', NULL, '2025-08-09 16:34:32', NULL);
|
||||
INSERT INTO `ruoyi-ai`.`sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1954099421436784642, '000000', 2, 'HTTP', 'HTTP', 'mcp_transport_type', NULL, '', 'N', '0', NULL, NULL, '2025-08-09 16:36:22', NULL, '2025-08-09 16:36:22', NULL);
|
||||
INSERT INTO `ruoyi-ai`.`sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `status`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1954098639622713345, '000000', 'mcp链接方式', 'mcp_transport_type', '0', NULL, NULL, '2025-08-09 16:33:16', NULL, '2025-08-09 16:33:16', NULL);
|
||||
|
||||
|
||||
INSERT INTO `ruoyi-ai`.`mcp_info` (`mcp_id`, `server_name`, `transport_type`, `command`, `arguments`, `env`, `status`, `description`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, 'howtocook-mcp', 'STDIO', 'npx', '["-y", "howtocook-mcp"]', NULL, 1, NULL, NULL, NULL, '2025-08-11 17:19:25', 1, '2025-08-11 18:24:22', NULL);
|
||||
@@ -1,8 +0,0 @@
|
||||
-- 默认开启本地minio
|
||||
UPDATE `ruoyi-ai`.sys_oss_config t
|
||||
SET t.status = '1'
|
||||
WHERE t.oss_config_id = 4;
|
||||
|
||||
UPDATE `ruoyi-ai`.sys_oss_config t
|
||||
SET t.status = '0'
|
||||
WHERE t.oss_config_id = 1;
|
||||
Reference in New Issue
Block a user