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 e2c75c7e..e8f0e308 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 @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; import org.ruoyi.core.domain.BaseEntity; import java.io.Serial; -import java.util.List; + /** * 聊天模型对象 chat_model @@ -86,10 +86,5 @@ public class ChatModel extends BaseEntity { */ private String remark; - /** - * 模型能力 - */ - private String modelCapability; - } 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 257c0ec3..0638c13a 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 @@ -5,14 +5,13 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import lombok.Getter; import org.ruoyi.common.sensitive.annotation.Sensitive; import org.ruoyi.common.sensitive.core.SensitiveStrategy; import org.ruoyi.domain.ChatModel; import java.io.Serial; import java.io.Serializable; -import java.util.List; + /** @@ -102,138 +101,5 @@ public class ChatModelVo implements Serializable { @ExcelProperty(value = "备注") private String remark; - /** - * 模型能力 - */ - @ExcelProperty(value = "模型能力") - private String modelCapability; - /** - * 模型能力列表 - */ - private List modelAbilities = getModelAbilities(); - - /** - * 模型能力类,类似枚举的静态内部类 - */ - @Getter - public static final class Ability { - // 获取能力名称 - private final String name; - private final String description; - - // 静态字段存储默认能力(类似枚举常量) - public static final Ability IMAGE = new Ability("IMAGE", "图片理解"); - public static final Ability VIDEO = new Ability("VIDEO", "视频理解"); - public static final Ability SPEECH = new Ability("SPEECH", "语音理解"); - - // 动态扩展能力存储 - private static final java.util.Map EXTENDED_ABILITIES = new java.util.HashMap<>(); - - // 私有构造确保受限 - private Ability(String name, String description) { - this.name = name; - this.description = description; - } - - // 静态工厂方法(类似枚举valueOf) - public static Ability valueOf(String name) { - // 先检查默认能力 - switch (name) { - case "IMAGE": return IMAGE; - case "VIDEO": return VIDEO; - case "SPEECH": return SPEECH; - default: - // 检查扩展能力 - Ability ability = EXTENDED_ABILITIES.get(name); - if (ability != null) return ability; - throw new IllegalArgumentException("Unknown ability: " + name); - } - } - - // 动态注册新能力(后期从数据库调用) - public static synchronized Ability registerAbility(String name, String description) { - if (name == null || name.trim().isEmpty()) { - throw new IllegalArgumentException("Ability name cannot be empty"); - } - - // 避免重复注册 - if (EXTENDED_ABILITIES.containsKey(name)) { - return EXTENDED_ABILITIES.get(name); - } - - // 检查是否与默认能力冲突 - try { - valueOf(name); - throw new IllegalArgumentException("Ability already exists as default: " + name); - } catch (IllegalArgumentException e) { - // 正常情况,继续注册 - } - - Ability newAbility = new Ability(name, description); - EXTENDED_ABILITIES.put(name, newAbility); - return newAbility; - } - - // 获取所有能力(默认+扩展) - public static java.util.Set getAllAbilities() { - java.util.Map all = new java.util.HashMap<>(); - all.put(IMAGE.name, IMAGE); - all.put(VIDEO.name, VIDEO); - all.put(SPEECH.name, SPEECH); - all.putAll(EXTENDED_ABILITIES); - return java.util.Collections.unmodifiableSet((java.util.Set) all.values()); - } - - @Override - public String toString() { - return name; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Ability ability = (Ability) o; - return name.equals(ability.name); - } - - @Override - public int hashCode() { - return name.hashCode(); - } - } - - /** - * 将 modelCapability 字符串转换为 Ability 列表 - * @return Ability 列表 - */ - public java.util.List getModelAbilities() { - if (modelCapability == null || modelCapability.trim().isEmpty()) { - return java.util.Collections.emptyList(); - } - - // 解析 JSON 格式的字符串数组 - String trimmed = modelCapability.trim(); - if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) { - throw new IllegalArgumentException("Invalid modelCapability format: " + modelCapability); - } - - String content = trimmed.substring(1, trimmed.length() - 1).trim(); - if (content.isEmpty()) { - return java.util.Collections.emptyList(); - } - - java.util.List abilities = new java.util.ArrayList<>(); - String[] items = content.split(","); - for (String item : items) { - String cleanedItem = item.trim(); - if (cleanedItem.startsWith("\"") && cleanedItem.endsWith("\"") && cleanedItem.length() >= 2) { - String abilityName = cleanedItem.substring(1, cleanedItem.length() - 1); - abilities.add(Ability.valueOf(abilityName)); - } - } - - return abilities; - } } \ No newline at end of file diff --git a/script/sql/update/20250808.sql b/script/sql/update/20250808.sql deleted file mode 100644 index 3c54c207..00000000 --- a/script/sql/update/20250808.sql +++ /dev/null @@ -1,3 +0,0 @@ --- 聊天模型表添加模型能力字段 -alter table chat_model - add model_capability varchar(255) default '[]' not null comment '模型能力';