diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java index 90d02976a..7c58519c4 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java @@ -1,12 +1,10 @@ package cn.iocoder.yudao.module.llm.service.http; import cn.iocoder.yudao.framework.common.util.http.HttpUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties; -import cn.iocoder.yudao.module.llm.service.http.vo.ChatCompletion; -import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsReqVO; -import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsRespVO; +import cn.iocoder.yudao.module.llm.service.http.vo.*; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -23,9 +21,23 @@ public class ModelService { /** * 获取模型列表 */ - public String modelList(){ - - return ""; + public ModelListRespVO modelList(){ + String result = HttpUtils.get(llmBackendProperties.getModelCompletions(), null); + if (StringUtils.isBlank(result)) { + return null; + } + try { + ModelList modelList = JSON.parseObject(result, ModelList.class); + if (StringUtils.isBlank(modelList.getDetail())) { + // 没有detail,就是没有错误 + ModelListRespVO respVO = new ModelListRespVO(); + respVO.setData(BeanUtils.toBean(modelList.getData(), ModelListRespVO.ModelData.class)); + return respVO; + } + return null; + } catch (Exception e) { + return null; + } } public ModelCompletionsRespVO modelCompletions(ModelCompletionsReqVO req) { diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelList.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelList.java new file mode 100644 index 000000000..a0bb6f790 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelList.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ModelList { + + private String object; + private List data; + private String detail; + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class ModelData { + private String id; + private String object; + private long created; + private String owned_by; + private String model_type; + private String address; + private List accelerators; + private String model_name; + // For the "bge-small-zh-v1.5" model + private Integer dimensions; + private Integer max_tokens; + private List language; + private String model_revision; + private int replica; + // For the "qwen2.5-instruct" model + private List model_lang; + private List model_ability; + private String model_description; + private String model_format; + private String model_size_in_billions; + private String model_family; + private String quantization; + private String model_hub; + private Object revision; // Can be null, so we use Object type + private Integer context_length; + + } +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelListRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelListRespVO.java new file mode 100644 index 000000000..ef6ab5472 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelListRespVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ModelListRespVO { + private List data; + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class ModelData { + private String id; + private String object; + private long created; + private String owned_by; + private String model_type; + private String address; + private String model_name; + private Integer dimensions; + private Integer max_tokens; + } +}