From 041a9081806fdd6058b9da96b3c72281dc0dc9c5 Mon Sep 17 00:00:00 2001 From: clay Date: Mon, 5 May 2025 01:42:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=82=E6=95=B0=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=B8=8E=E6=8F=90=E7=A4=BA=E6=A8=A1=E6=9D=BF=E7=9A=84=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E5=85=A8=E9=83=A8=E6=94=B9=E4=B8=BA=E6=9E=9A=E4=B8=BE?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/entity/base/NodeVariable.java | 9 ++----- .../domain/entity/base/VariableOption.java | 4 +-- .../java/com/metis/enums/ChatRoleType.java | 17 ++++++++++--- .../runner/impl/{llm => }/LLMNodeRunner.java | 2 +- .../impl/node/StartNodeValidator.java | 2 +- metis-starter/src/test/resources/flow.json | 25 +++++++++++++++++-- 6 files changed, 42 insertions(+), 17 deletions(-) rename metis-starter/src/main/java/com/metis/runner/impl/{llm => }/LLMNodeRunner.java (99%) diff --git a/metis-starter/src/main/java/com/metis/domain/entity/base/NodeVariable.java b/metis-starter/src/main/java/com/metis/domain/entity/base/NodeVariable.java index 3058bbd..3de1ec8 100644 --- a/metis-starter/src/main/java/com/metis/domain/entity/base/NodeVariable.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/NodeVariable.java @@ -36,7 +36,7 @@ public class NodeVariable { * 类型 */ @NotNull(message = "类型不能为空") - private String type; + private NodeVariableType type; /** * 是否必填 @@ -74,7 +74,7 @@ public class NodeVariable { } private Object getSerializable(JSONObject custom) { - switch (getVariableType()) { + switch (this.type) { case TEXT_INPUT, PARAGRAPH, SELECT, FILE -> { return custom.getString(variable); } @@ -89,10 +89,5 @@ public class NodeVariable { } - @JsonIgnore - public NodeVariableType getVariableType() { - return NodeVariableType.get(type); - } - } diff --git a/metis-starter/src/main/java/com/metis/domain/entity/base/VariableOption.java b/metis-starter/src/main/java/com/metis/domain/entity/base/VariableOption.java index 7ac3e13..c62f9a4 100644 --- a/metis-starter/src/main/java/com/metis/domain/entity/base/VariableOption.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/VariableOption.java @@ -1,7 +1,7 @@ package com.metis.domain.entity.base; -import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.NotBlank; import lombok.Data; @Data @@ -15,7 +15,7 @@ public class VariableOption { /** * 值 */ - @NotNull(message = "值不能为空") + @NotBlank(message = "值不能为空") private String value; diff --git a/metis-starter/src/main/java/com/metis/enums/ChatRoleType.java b/metis-starter/src/main/java/com/metis/enums/ChatRoleType.java index d78382c..c424635 100644 --- a/metis-starter/src/main/java/com/metis/enums/ChatRoleType.java +++ b/metis-starter/src/main/java/com/metis/enums/ChatRoleType.java @@ -1,13 +1,22 @@ package com.metis.enums; +import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; @Getter public enum ChatRoleType { - SYSTEM, - USER, - AI, - TOOL_EXECUTION_RESULT; + SYSTEM("system"), + USER("user"), + AI("ai"), + TOOL_EXECUTION_RESULT("toolExecutionResult"); + + @JsonValue + private final String value; + + + ChatRoleType(String value) { + this.value = value; + } } diff --git a/metis-starter/src/main/java/com/metis/runner/impl/llm/LLMNodeRunner.java b/metis-starter/src/main/java/com/metis/runner/impl/LLMNodeRunner.java similarity index 99% rename from metis-starter/src/main/java/com/metis/runner/impl/llm/LLMNodeRunner.java rename to metis-starter/src/main/java/com/metis/runner/impl/LLMNodeRunner.java index a9ca738..9853ef5 100644 --- a/metis-starter/src/main/java/com/metis/runner/impl/llm/LLMNodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/impl/LLMNodeRunner.java @@ -1,4 +1,4 @@ -package com.metis.runner.impl.llm; +package com.metis.runner.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; diff --git a/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java index 797873d..6df9bf5 100644 --- a/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java @@ -36,7 +36,7 @@ public class StartNodeValidator implements NodeValidator { } for (NodeVariable variable : variables) { - switch (variable.getVariableType()) { + switch (variable.getType()) { // 文本类型校验 case TEXT_INPUT, PARAGRAPH -> textVariableValidator(variable); // 下拉框变量校验 diff --git a/metis-starter/src/test/resources/flow.json b/metis-starter/src/test/resources/flow.json index 0d4c520..d240146 100644 --- a/metis-starter/src/test/resources/flow.json +++ b/metis-starter/src/test/resources/flow.json @@ -1,5 +1,4 @@ { - "appId": 1919041086810968064, "name": "llm运行测试", "description": "llm运行测试", "graph": { @@ -17,13 +16,32 @@ "icon": "SuitcaseLine", "toolbarPosition": "right", "config": { + // 输入变量 "variables": [ { + // 输入变量字段名称 "variable": "query", "label": "查询条件", + // 类型 TEXT_INPUT(1, "text-input", "文本"), + // PARAGRAPH(2, "paragraph", "段落"), + // SELECT(3, "select", "下拉框"), + // NUMBER(4, "number", "数字"), + // FILE(5, "file", "文件"), + // FILE_LIST(6, "file-list", "文件列表") "type": "text-input", + // 最大长度 "maxLength": 60, - "required": true + // 是否必填 + "required": true, + "options": { + "label": "描述", + // 描述为空的时候, label显示值 + "value": "值" + // 值不能为空 + }, + "allowedFileUploadMethods": ["localFile","remoteUrl"], // 允许上传方式 + "allowedFileTypes": [""], // 允许文件类型 自定义 + "allowedFileExtensions": [""] // 允许文件扩展名 可以自定义 }, { "variable": "background", @@ -60,14 +78,17 @@ "icon": "", "toolbarPosition": "right", "config": { + // 上下文字段 node_5 为节点id, background为阶段运行之后的内容 "context": "node_5.background", "retryConfig": { "enable": true, "maxRetries": 3, "retryInterval": 1000 }, + // 提示模板 "promptTemplate": [ { + // 角色 "role": "system", "text": "你的背景是${context}", "id": "1"