Feature/add ability to show variable output (#3580)

add ability to show variable output
This commit is contained in:
Henry Heng
2024-11-26 21:06:03 +00:00
committed by GitHub
parent af5e6b0968
commit 76ae921240
2 changed files with 24 additions and 1 deletions
@@ -16,7 +16,7 @@ class SetVariable_Utilities implements INode {
constructor() {
this.label = 'Set Variable'
this.name = 'setVariable'
this.version = 2.0
this.version = 2.1
this.type = 'SetVariable'
this.icon = 'setvar.svg'
this.category = 'Utilities'
@@ -36,6 +36,14 @@ class SetVariable_Utilities implements INode {
name: 'variableName',
type: 'string',
placeholder: 'var1'
},
{
label: 'Show Output',
name: 'showOutput',
description: 'Show the output result in the Prediction API response',
type: 'boolean',
optional: true,
additionalParams: true
}
]
this.outputs = [
@@ -249,6 +249,8 @@ export const utilBuildChatflow = async (req: Request, isInternal: boolean = fals
// Get prepend messages
const prependMessages = incomingInput.history
const flowVariables = {} as Record<string, unknown>
/* Reuse the flow without having to rebuild (to avoid duplicated upsert, recomputation, reinitialization of memory) when all these conditions met:
* - Reuse of flows is not disabled
* - Node Data already exists in pool
@@ -378,6 +380,18 @@ export const utilBuildChatflow = async (req: Request, isInternal: boolean = fals
baseURL
})
// Show output of setVariable nodes in the response
for (const node of reactFlowNodes) {
if (
node.data.name === 'setVariable' &&
(node.data.inputs?.showOutput === true || node.data.inputs?.showOutput === 'true')
) {
const outputResult = node.data.instance
const variableKey = node.data.inputs?.variableName
flowVariables[variableKey] = outputResult
}
}
const nodeToExecute =
endingNodeIds.length === 1
? reactFlowNodes.find((node: IReactFlowNode) => endingNodeIds[0] === node.id)
@@ -525,6 +539,7 @@ export const utilBuildChatflow = async (req: Request, isInternal: boolean = fals
if (sessionId) result.sessionId = sessionId
if (memoryType) result.memoryType = memoryType
if (Object.keys(flowVariables).length) result.flowVariables = flowVariables
return result
} catch (e) {