mirror of
https://github.com/langgenius/dify.git
synced 2026-04-29 04:26:30 +08:00
feat: get var list hooks
This commit is contained in:
parent
08650339d7
commit
615178dafa
@ -0,0 +1,27 @@
|
|||||||
|
import {
|
||||||
|
useIsChatMode,
|
||||||
|
useWorkflow,
|
||||||
|
} from '@/app/components/workflow/hooks'
|
||||||
|
import { toNodeOutputVars } from '@/app/components/workflow/nodes/_base/components/variable/utils'
|
||||||
|
import type { ValueSelector, Var } from '@/app/components/workflow/types'
|
||||||
|
|
||||||
|
type Params = {
|
||||||
|
onlyLeafNodeVar?: boolean
|
||||||
|
filterVar: (payload: Var, selector: ValueSelector) => boolean
|
||||||
|
}
|
||||||
|
const useAvailableVarList = (nodeId: string, {
|
||||||
|
onlyLeafNodeVar,
|
||||||
|
filterVar,
|
||||||
|
}: Params = {
|
||||||
|
onlyLeafNodeVar: false,
|
||||||
|
filterVar: () => true,
|
||||||
|
}) => {
|
||||||
|
const { getTreeLeafNodes, getBeforeNodesInSameBranch } = useWorkflow()
|
||||||
|
const isChatMode = useIsChatMode()
|
||||||
|
|
||||||
|
const availableNodes = onlyLeafNodeVar ? getTreeLeafNodes(nodeId) : getBeforeNodesInSameBranch(nodeId)
|
||||||
|
const availableVars = toNodeOutputVars(availableNodes, isChatMode, filterVar).map(item => item.vars)
|
||||||
|
return availableVars
|
||||||
|
}
|
||||||
|
|
||||||
|
export default useAvailableVarList
|
||||||
@ -3,8 +3,9 @@ import type { FC } from 'react'
|
|||||||
import React, { useCallback } from 'react'
|
import React, { useCallback } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import produce from 'immer'
|
import produce from 'immer'
|
||||||
import type { PromptItem } from '../../../types'
|
import type { PromptItem, ValueSelector, Var } from '../../../types'
|
||||||
import { PromptRole } from '../../../types'
|
import { PromptRole } from '../../../types'
|
||||||
|
import useAvailableVarList from '../../_base/hooks/use-available-var-list'
|
||||||
import Editor from '@/app/components/workflow/nodes/_base/components/prompt/editor'
|
import Editor from '@/app/components/workflow/nodes/_base/components/prompt/editor'
|
||||||
import AddButton from '@/app/components/workflow/nodes/_base/components/add-button'
|
import AddButton from '@/app/components/workflow/nodes/_base/components/add-button'
|
||||||
import TypeSelector from '@/app/components/workflow/nodes/_base/components/selector'
|
import TypeSelector from '@/app/components/workflow/nodes/_base/components/selector'
|
||||||
@ -15,6 +16,8 @@ const i18nPrefix = 'workflow.nodes.llm'
|
|||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
readOnly: boolean
|
readOnly: boolean
|
||||||
|
nodeId: string
|
||||||
|
filterVar: (payload: Var, selector: ValueSelector) => boolean
|
||||||
isChatModel: boolean
|
isChatModel: boolean
|
||||||
isChatApp: boolean
|
isChatApp: boolean
|
||||||
payload: PromptItem | PromptItem[]
|
payload: PromptItem | PromptItem[]
|
||||||
@ -30,6 +33,8 @@ type Props = {
|
|||||||
|
|
||||||
const ConfigPrompt: FC<Props> = ({
|
const ConfigPrompt: FC<Props> = ({
|
||||||
readOnly,
|
readOnly,
|
||||||
|
nodeId,
|
||||||
|
filterVar,
|
||||||
isChatModel,
|
isChatModel,
|
||||||
isChatApp,
|
isChatApp,
|
||||||
payload,
|
payload,
|
||||||
@ -39,6 +44,11 @@ const ConfigPrompt: FC<Props> = ({
|
|||||||
hasSetBlockStatus,
|
hasSetBlockStatus,
|
||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
|
const availableVarList = useAvailableVarList(nodeId, {
|
||||||
|
onlyLeafNodeVar: false,
|
||||||
|
filterVar,
|
||||||
|
})
|
||||||
|
console.log('availableVarList', availableVarList)
|
||||||
|
|
||||||
const handleChatModePromptChange = useCallback((index: number) => {
|
const handleChatModePromptChange = useCallback((index: number) => {
|
||||||
return (prompt: string) => {
|
return (prompt: string) => {
|
||||||
|
|||||||
@ -171,6 +171,8 @@ const Panel: FC<NodePanelProps<LLMNodeType>> = ({
|
|||||||
{model.name && (
|
{model.name && (
|
||||||
<ConfigPrompt
|
<ConfigPrompt
|
||||||
readOnly={readOnly}
|
readOnly={readOnly}
|
||||||
|
nodeId={id}
|
||||||
|
filterVar={filterVar}
|
||||||
isChatModel={isChatModel}
|
isChatModel={isChatModel}
|
||||||
isChatApp={isChatMode}
|
isChatApp={isChatMode}
|
||||||
isShowContext
|
isShowContext
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user