diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/LLMBackendProperties.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/LLMBackendProperties.java index 5876aa34f..7a52aebe8 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/LLMBackendProperties.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/LLMBackendProperties.java @@ -59,6 +59,9 @@ public class LLMBackendProperties { @NotNull(message = "登录 POST") private String login; + private String loginUsername; + private String loginPassword; + @NotNull(message = "基础模型列表 GET") private String baseModelList; diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java index 2fa011d08..59f2cbf30 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java @@ -3,11 +3,10 @@ package cn.iocoder.yudao.module.llm.service.http; import cn.iocoder.yudao.framework.common.util.http.HttpUtils; import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties; -import cn.iocoder.yudao.module.llm.service.http.vo.RagEmbedReqVo; -import cn.iocoder.yudao.module.llm.service.http.vo.RagQueryMultipleReqVo; -import cn.iocoder.yudao.module.llm.service.http.vo.RagQueryReqVo; +import cn.iocoder.yudao.module.llm.service.http.vo.*; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.BeanUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -17,6 +16,7 @@ import java.util.Map; * 训练相关接口 */ @Service +@Slf4j public class TrainHttpService { @Resource @@ -98,10 +98,18 @@ public class TrainHttpService { /** * 登录 POST */ - public String login(Map headers, String body){ + public AigcLoginRespVO login(Map headers){ String login = llmBackendProperties.getLogin(); - String res = HttpUtils.post(login, headers, body); - return res; + AigcLoginReqVO req = new AigcLoginReqVO(llmBackendProperties.getLoginUsername(), llmBackendProperties.getLoginPassword()); + String res = HttpUtils.post(login, headers, JSON.toJSONString(req)); + log.info("登录接口返回:{}", res); + AigcRespVO aigcRespVO = JSON.parseObject(res, AigcRespVO.class); + if (aigcRespVO.isSuccess()){ + AigcLoginRespVO aigcLoginRespVO = JSON.parseObject(aigcRespVO.getData().toString(), AigcLoginRespVO.class); + headers.put("Authorization", "Bearer " + aigcLoginRespVO.getToken()); + return aigcLoginRespVO; + } + return null; } /** diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcLoginReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcLoginReqVO.java new file mode 100644 index 000000000..3611cf8e0 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcLoginReqVO.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AigcLoginReqVO { + + private String username; + private String password; +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcLoginRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcLoginRespVO.java new file mode 100644 index 000000000..c8eca1fd3 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcLoginRespVO.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AigcLoginRespVO { + + private String token; + private String username; +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcRespVO.java new file mode 100644 index 000000000..21ae2eeeb --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/AigcRespVO.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AigcRespVO { + + private boolean success; + private int code; + private Object data; + private String message; + private String traceId; +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/FineTuningCreateVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/FineTuningCreateVO.java new file mode 100644 index 000000000..70fe0ea5c --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/FineTuningCreateVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Data +@ToString +@AllArgsConstructor +@NoArgsConstructor +public class FineTuningCreateVO { + + private String scenario = "faq"; + private String fileId = "48fac97c-5a69-4fde-9f77-86f4de2e91eb"; + private String baseModel; + private int trainEpoch; + private String suffix; + private String remark; + private int trainBatchSize; + private int evalBatchSize; + private int accumulationSteps; + private int procPerNode; + private double learningRate; + private int modelMaxLength; + private boolean lora; +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/FineTuningFileListRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/FineTuningFileListRespVO.java new file mode 100644 index 000000000..940f26cc4 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/FineTuningFileListRespVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.llm.service.http.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class FineTuningFileListRespVO { + private boolean success; + private int code; + private ListData data; + private String message; + private String traceId; + + // 嵌套在顶层类中的 Data 类 + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class ListData { + private List list; + private int total; + } + + // 嵌套在 Data 类中的 FaqFile 类 + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class FaqFile { + private int size; + private String createdAt; + private String fileId; + private String filename; + private String purpose; + private String fileType; + private int tenantId; + private String s3Url; + private int lineCount; + private int tokenCount; + + } +} diff --git a/yudao-server/src/main/resources/application-dev.yaml b/yudao-server/src/main/resources/application-dev.yaml index 539385de4..84d69d80c 100644 --- a/yudao-server/src/main/resources/application-dev.yaml +++ b/yudao-server/src/main/resources/application-dev.yaml @@ -235,9 +235,13 @@ llm: # 大模型列表 GET models_list: http://localhost:8123/api/models # 登录 POST - login: http://localhost:8123/login + login: http://aigc.xhllm.xinnuojinzhi.com/api/auth/login + login_username: admin + login_password: admin # 创建微调任务 POST - finetuning_create: http://localhost:8123/api/finetuning + finetuning_create: http://aigc.xhllm.xinnuojinzhi.com/api/finetuning + # 微调文件列表 GET + finetuning_file_list: http://aigc.xhllm.xinnuojinzhi.com/api/files?purpose=fine-tune #### 大模型对话 # 基础模型列表 GET diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index e981a7636..4402ab276 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -278,9 +278,13 @@ llm: # 大模型列表 GET models_list: http://localhost:8123/api/models # 登录 POST - login: http://localhost:8123/login + login: http://aigc.xhllm.xinnuojinzhi.com/api/auth/login + login_username: admin + login_password: admin # 创建微调任务 POST - finetuning_create: http://localhost:8123/api/finetuning + finetuning_create: http://aigc.xhllm.xinnuojinzhi.com/api/finetuning + # 微调文件列表 GET + finetuning_file_list: http://aigc.xhllm.xinnuojinzhi.com/api/files?purpose=fine-tune #### 大模型对话 # 模型列表 GET