mirror of https://github.com/langgenius/dify.git
feat: question classify output
This commit is contained in:
parent
1f41521c21
commit
25a11c5bb7
|
|
@ -185,69 +185,70 @@ export const SUPPORT_OUTPUT_VARS_NODE = [
|
|||
BlockEnum.QuestionClassifier, BlockEnum.HttpRequest, BlockEnum.Tool, BlockEnum.VariableAssigner,
|
||||
]
|
||||
|
||||
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',
|
||||
type: VarType.string,
|
||||
},
|
||||
{
|
||||
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 KNOWLEDGE_RETRIEVAL_OUTPUT_STRUCT: Var[] = [
|
||||
|
|
@ -255,6 +256,7 @@ export const KNOWLEDGE_RETRIEVAL_OUTPUT_STRUCT: Var[] = [
|
|||
variable: 'result',
|
||||
type: VarType.arrayObject,
|
||||
},
|
||||
USAGE,
|
||||
]
|
||||
|
||||
export const TEMPLATE_TRANSFORM_OUTPUT_STRUCT: Var[] = [
|
||||
|
|
@ -263,3 +265,35 @@ export const TEMPLATE_TRANSFORM_OUTPUT_STRUCT: Var[] = [
|
|||
type: VarType.string,
|
||||
},
|
||||
]
|
||||
|
||||
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 = [
|
||||
{
|
||||
variable: 'model_mode',
|
||||
type: VarType.string,
|
||||
},
|
||||
{
|
||||
variable: 'text',
|
||||
type: VarType.string,
|
||||
},
|
||||
...QUESTION_CLASSIFIER_OUTPUT_STRUCT_COMMON,
|
||||
]
|
||||
|
|
|
|||
|
|
@ -2,7 +2,14 @@ import type { CodeNodeType } from '../../../code/types'
|
|||
import { BlockEnum, InputVarType, VarType } from '@/app/components/workflow/types'
|
||||
import type { StartNodeType } from '@/app/components/workflow/nodes/start/types'
|
||||
import type { NodeOutPutVar } from '@/app/components/workflow/types'
|
||||
import { KNOWLEDGE_RETRIEVAL_OUTPUT_STRUCT, LLM_OUTPUT_STRUCT, SUPPORT_OUTPUT_VARS_NODE, TEMPLATE_TRANSFORM_OUTPUT_STRUCT } from '@/app/components/workflow/constants'
|
||||
import {
|
||||
CHAT_QUESTION_CLASSIFIER_OUTPUT_STRUCT,
|
||||
COMPLETION_QUESTION_CLASSIFIER_OUTPUT_STRUCT,
|
||||
KNOWLEDGE_RETRIEVAL_OUTPUT_STRUCT,
|
||||
LLM_OUTPUT_STRUCT,
|
||||
SUPPORT_OUTPUT_VARS_NODE,
|
||||
TEMPLATE_TRANSFORM_OUTPUT_STRUCT,
|
||||
} from '@/app/components/workflow/constants'
|
||||
|
||||
const inputVarTypeToVarType = (type: InputVarType): VarType => {
|
||||
if (type === InputVarType.number)
|
||||
|
|
@ -11,7 +18,7 @@ const inputVarTypeToVarType = (type: InputVarType): VarType => {
|
|||
return VarType.string
|
||||
}
|
||||
|
||||
const formatItem = (item: any): NodeOutPutVar => {
|
||||
const formatItem = (item: any, isChatMode: boolean): NodeOutPutVar => {
|
||||
const { id, data } = item
|
||||
const res: NodeOutPutVar = {
|
||||
nodeId: id,
|
||||
|
|
@ -59,10 +66,15 @@ const formatItem = (item: any): NodeOutPutVar => {
|
|||
res.vars = TEMPLATE_TRANSFORM_OUTPUT_STRUCT
|
||||
break
|
||||
}
|
||||
|
||||
case BlockEnum.QuestionClassifier: {
|
||||
res.vars = isChatMode ? CHAT_QUESTION_CLASSIFIER_OUTPUT_STRUCT : COMPLETION_QUESTION_CLASSIFIER_OUTPUT_STRUCT
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
export const toNodeOutputVars = (nodes: any[]): NodeOutPutVar[] => {
|
||||
return nodes.filter(node => SUPPORT_OUTPUT_VARS_NODE.includes(node.data.type)).map(formatItem)
|
||||
export const toNodeOutputVars = (nodes: any[], isChatMode: boolean): NodeOutPutVar[] => {
|
||||
return nodes.filter(node => SUPPORT_OUTPUT_VARS_NODE.includes(node.data.type)).map(node => formatItem(node, isChatMode))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,10 @@ import {
|
|||
PortalToFollowElemContent,
|
||||
PortalToFollowElemTrigger,
|
||||
} from '@/app/components/base/portal-to-follow-elem'
|
||||
import { useWorkflow } from '@/app/components/workflow/hooks'
|
||||
import {
|
||||
useIsChatMode,
|
||||
useWorkflow,
|
||||
} from '@/app/components/workflow/hooks'
|
||||
|
||||
type Props = {
|
||||
className?: string
|
||||
|
|
@ -37,9 +40,11 @@ const VarReferencePicker: FC<Props> = ({
|
|||
value,
|
||||
onChange,
|
||||
}) => {
|
||||
const isChatMode = useIsChatMode()
|
||||
|
||||
const { getTreeLeafNodes, getBeforeNodesInSameBranch } = useWorkflow()
|
||||
const availableNodes = getBeforeNodesInSameBranch(nodeId)
|
||||
const outputVars = toNodeOutputVars(availableNodes)
|
||||
const outputVars = toNodeOutputVars(availableNodes, isChatMode)
|
||||
const [open, setOpen] = useState(false)
|
||||
const hasValue = value.length > 0
|
||||
const outputVarNodeId = hasValue ? value[0] : ''
|
||||
|
|
|
|||
Loading…
Reference in New Issue