| @@ -79,7 +79,6 @@ class QuestionClassifierNode(LLMNode): | |||
| prompt_messages=prompt_messages | |||
| ), | |||
| 'usage': jsonable_encoder(usage), | |||
| 'topics': categories[0] if categories else '' | |||
| } | |||
| outputs = { | |||
| 'class_name': categories[0] if categories else '' | |||
| @@ -259,67 +259,9 @@ export const RETRIEVAL_OUTPUT_STRUCT = `{ | |||
| export const SUPPORT_OUTPUT_VARS_NODE = [ | |||
| BlockEnum.Start, BlockEnum.LLM, BlockEnum.KnowledgeRetrieval, BlockEnum.Code, BlockEnum.TemplateTransform, | |||
| BlockEnum.HttpRequest, BlockEnum.Tool, BlockEnum.VariableAssigner, | |||
| BlockEnum.HttpRequest, BlockEnum.Tool, BlockEnum.VariableAssigner, BlockEnum.QuestionClassifier, | |||
| ] | |||
| const USAGE = { | |||
| variable: 'usage', | |||
| type: VarType.object, | |||
| children: [ | |||
| { | |||
| variable: 'prompt_tokens', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'prompt_unit_price', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'prompt_price_unit', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'prompt_price', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'completion_tokens', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'completion_unit_price', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'completion_price_unit', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'completion_unit_price', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'completion_price', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'total_tokens', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'total_price', | |||
| type: VarType.number, | |||
| }, | |||
| { | |||
| variable: 'currency', | |||
| type: VarType.string, | |||
| }, | |||
| { | |||
| variable: 'latency', | |||
| type: VarType.number, | |||
| }, | |||
| ], | |||
| } | |||
| export const LLM_OUTPUT_STRUCT: Var[] = [ | |||
| { | |||
| variable: 'text', | |||
| @@ -341,36 +283,11 @@ export const TEMPLATE_TRANSFORM_OUTPUT_STRUCT: Var[] = [ | |||
| }, | |||
| ] | |||
| const QUESTION_CLASSIFIER_OUTPUT_STRUCT_COMMON: Var[] = [ | |||
| USAGE, | |||
| { | |||
| variable: 'topic', | |||
| type: VarType.string, | |||
| }, | |||
| ] | |||
| export const CHAT_QUESTION_CLASSIFIER_OUTPUT_STRUCT = [ | |||
| { | |||
| variable: 'model_mode', | |||
| type: VarType.string, | |||
| }, | |||
| { | |||
| variable: 'messages', | |||
| type: VarType.arrayObject, | |||
| }, | |||
| ...QUESTION_CLASSIFIER_OUTPUT_STRUCT_COMMON, | |||
| ] | |||
| export const COMPLETION_QUESTION_CLASSIFIER_OUTPUT_STRUCT = [ | |||
| export const QUESTION_CLASSIFIER_OUTPUT_STRUCT = [ | |||
| { | |||
| variable: 'model_mode', | |||
| type: VarType.string, | |||
| }, | |||
| { | |||
| variable: 'text', | |||
| variable: 'class_name', | |||
| type: VarType.string, | |||
| }, | |||
| ...QUESTION_CLASSIFIER_OUTPUT_STRUCT_COMMON, | |||
| ] | |||
| export const HTTP_REQUEST_OUTPUT_STRUCT: Var[] = [ | |||
| @@ -16,11 +16,10 @@ import type { StartNodeType } from '@/app/components/workflow/nodes/start/types' | |||
| import type { Node, NodeOutPutVar, ValueSelector, Var } from '@/app/components/workflow/types' | |||
| import type { VariableAssignerNodeType } from '@/app/components/workflow/nodes/variable-assigner/types' | |||
| import { | |||
| CHAT_QUESTION_CLASSIFIER_OUTPUT_STRUCT, | |||
| COMPLETION_QUESTION_CLASSIFIER_OUTPUT_STRUCT, | |||
| HTTP_REQUEST_OUTPUT_STRUCT, | |||
| KNOWLEDGE_RETRIEVAL_OUTPUT_STRUCT, | |||
| LLM_OUTPUT_STRUCT, | |||
| QUESTION_CLASSIFIER_OUTPUT_STRUCT, | |||
| SUPPORT_OUTPUT_VARS_NODE, | |||
| TEMPLATE_TRANSFORM_OUTPUT_STRUCT, | |||
| TOOL_OUTPUT_STRUCT, | |||
| @@ -125,7 +124,7 @@ const formatItem = (item: any, isChatMode: boolean, filterVar: (payload: Var, se | |||
| } | |||
| case BlockEnum.QuestionClassifier: { | |||
| res.vars = isChatMode ? CHAT_QUESTION_CLASSIFIER_OUTPUT_STRUCT : COMPLETION_QUESTION_CLASSIFIER_OUTPUT_STRUCT | |||
| res.vars = QUESTION_CLASSIFIER_OUTPUT_STRUCT | |||
| break | |||
| } | |||
| @@ -554,7 +553,7 @@ export const getNodeOutputVars = (node: Node, isChatMode: boolean): ValueSelecto | |||
| } | |||
| case BlockEnum.QuestionClassifier: { | |||
| varsToValueSelectorList(isChatMode ? CHAT_QUESTION_CLASSIFIER_OUTPUT_STRUCT : COMPLETION_QUESTION_CLASSIFIER_OUTPUT_STRUCT, [id], res) | |||
| varsToValueSelectorList(QUESTION_CLASSIFIER_OUTPUT_STRUCT, [id], res) | |||
| break | |||
| } | |||
| @@ -11,6 +11,8 @@ import ModelParameterModal from '@/app/components/header/account-setting/model-p | |||
| import { InputVarType, type NodePanelProps } from '@/app/components/workflow/types' | |||
| import BeforeRunForm from '@/app/components/workflow/nodes/_base/components/before-run-form' | |||
| import ResultPanel from '@/app/components/workflow/run/result-panel' | |||
| import Split from '@/app/components/workflow/nodes/_base/components/split' | |||
| import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' | |||
| const i18nPrefix = 'workflow.nodes.questionClassifiers' | |||
| @@ -44,8 +46,8 @@ const Panel: FC<NodePanelProps<QuestionClassifierNodeType>> = ({ | |||
| const model = inputs.model | |||
| return ( | |||
| <div> | |||
| <div className='mt-2 px-4 space-y-4'> | |||
| <div className='mt-2'> | |||
| <div className='px-4 pb-4 space-y-4'> | |||
| <Field | |||
| title={t(`${i18nPrefix}.inputVars`)} | |||
| > | |||
| @@ -100,6 +102,18 @@ const Panel: FC<NodePanelProps<QuestionClassifierNodeType>> = ({ | |||
| /> | |||
| </Field> | |||
| </div> | |||
| <Split /> | |||
| <div className='px-4 pt-4 pb-2'> | |||
| <OutputVars> | |||
| <> | |||
| <VarItem | |||
| name='class_name' | |||
| type='string' | |||
| description={t(`${i18nPrefix}.outputVars.className`)} | |||
| /> | |||
| </> | |||
| </OutputVars> | |||
| </div> | |||
| {isShowSingleRun && ( | |||
| <BeforeRunForm | |||
| nodeName={inputs.title} | |||
| @@ -324,6 +324,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: 'Modell', | |||
| inputVars: 'Eingabevariablen', | |||
| outputVars: { | |||
| className: 'Klassenname', | |||
| }, | |||
| class: 'Klasse', | |||
| classNamePlaceholder: 'Schreiben Sie Ihren Klassennamen', | |||
| advancedSetting: 'Erweiterte Einstellung', | |||
| @@ -331,6 +331,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: 'model', | |||
| inputVars: 'Input Variables', | |||
| outputVars: { | |||
| className: 'Class Name', | |||
| }, | |||
| class: 'Class', | |||
| classNamePlaceholder: 'Write your class name', | |||
| advancedSetting: 'Advanced Setting', | |||
| @@ -327,6 +327,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: 'modèle', | |||
| inputVars: 'Variables d\'entrée', | |||
| outputVars: { | |||
| className: 'Nom de la classe', | |||
| }, | |||
| class: 'Classe', | |||
| classNamePlaceholder: 'Écrivez votre nom de classe', | |||
| advancedSetting: 'Paramètre avancé', | |||
| @@ -327,6 +327,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: 'モデル', | |||
| inputVars: '入力変数', | |||
| outputVars: { | |||
| className: 'クラス名', | |||
| }, | |||
| class: 'クラス', | |||
| classNamePlaceholder: 'クラス名を入力してください', | |||
| advancedSetting: '高度な設定', | |||
| @@ -327,6 +327,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: 'modelo', | |||
| inputVars: 'Variáveis de entrada', | |||
| outputVars: { | |||
| className: 'Nome da classe', | |||
| }, | |||
| class: 'Classe', | |||
| classNamePlaceholder: 'Escreva o nome da classe', | |||
| advancedSetting: 'Configuração avançada', | |||
| @@ -327,6 +327,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: 'модель', | |||
| inputVars: 'Вхідні змінні', | |||
| outputVars: { | |||
| className: 'Назва класу', | |||
| }, | |||
| class: 'Клас', | |||
| classNamePlaceholder: 'Напишіть назву вашого класу', | |||
| advancedSetting: 'Розширена настройка', | |||
| @@ -327,6 +327,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: 'mô hình', | |||
| inputVars: 'Biến đầu vào', | |||
| outputVars: { | |||
| className: 'Tên phân loại', | |||
| }, | |||
| class: 'Lớp', | |||
| classNamePlaceholder: 'Viết tên lớp của bạn', | |||
| advancedSetting: 'Cài đặt Nâng cao', | |||
| @@ -331,6 +331,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: '模型', | |||
| inputVars: '输入变量', | |||
| outputVars: { | |||
| className: '分类名称', | |||
| }, | |||
| class: '分类', | |||
| classNamePlaceholder: '输入你的分类名称', | |||
| advancedSetting: '高级设置', | |||
| @@ -319,6 +319,9 @@ const translation = { | |||
| questionClassifiers: { | |||
| model: '模型', | |||
| inputVars: '輸入變數', | |||
| outputVars: { | |||
| className: '分類名稱', | |||
| }, | |||
| class: '分類', | |||
| classNamePlaceholder: '輸入你的分類名稱', | |||
| advancedSetting: '高階設定', | |||