diff --git a/package.json b/package.json
index b077c7ec..fc08e450 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "flowise",
- "version": "1.2.11",
+ "version": "1.2.12",
"private": true,
"homepage": "https://flowiseai.com",
"workspaces": [
diff --git a/packages/components/nodes/agents/OpenAIFunctionAgent/OpenAIFunctionAgent.ts b/packages/components/nodes/agents/OpenAIFunctionAgent/OpenAIFunctionAgent.ts
new file mode 100644
index 00000000..9efe602f
--- /dev/null
+++ b/packages/components/nodes/agents/OpenAIFunctionAgent/OpenAIFunctionAgent.ts
@@ -0,0 +1,69 @@
+import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
+import { initializeAgentExecutorWithOptions, AgentExecutor } from 'langchain/agents'
+import { Tool } from 'langchain/tools'
+import { CustomChainHandler, getBaseClasses } from '../../../src/utils'
+import { BaseLanguageModel } from 'langchain/base_language'
+import { flatten } from 'lodash'
+
+class OpenAIFunctionAgent_Agents implements INode {
+ label: string
+ name: string
+ description: string
+ type: string
+ icon: string
+ category: string
+ baseClasses: string[]
+ inputs: INodeParams[]
+
+ constructor() {
+ this.label = 'OpenAI Function Agent'
+ this.name = 'openAIFunctionAgent'
+ this.type = 'AgentExecutor'
+ this.category = 'Agents'
+ this.icon = 'openai.png'
+ this.description = `An agent that uses OpenAI's Function Calling functionality to pick the tool and args to call`
+ this.baseClasses = [this.type, ...getBaseClasses(AgentExecutor)]
+ this.inputs = [
+ {
+ label: 'Allowed Tools',
+ name: 'tools',
+ type: 'Tool',
+ list: true
+ },
+ {
+ label: 'OpenAI Chat Model',
+ name: 'model',
+ description:
+ 'Only works with gpt-3.5-turbo-0613 and gpt-4-0613. Refer docs for more info',
+ type: 'BaseChatModel'
+ }
+ ]
+ }
+
+ async init(nodeData: INodeData): Promise {
+ const model = nodeData.inputs?.model as BaseLanguageModel
+ let tools = nodeData.inputs?.tools as Tool[]
+ tools = flatten(tools)
+
+ const executor = await initializeAgentExecutorWithOptions(tools, model, {
+ agentType: 'openai-functions',
+ verbose: process.env.DEBUG === 'true' ? true : false
+ })
+ return executor
+ }
+
+ async run(nodeData: INodeData, input: string, options: ICommonObject): Promise {
+ const executor = nodeData.instance as AgentExecutor
+
+ if (options.socketIO && options.socketIOClientId) {
+ const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId)
+ const result = await executor.run(input, [handler])
+ return result
+ } else {
+ const result = await executor.run(input)
+ return result
+ }
+ }
+}
+
+module.exports = { nodeClass: OpenAIFunctionAgent_Agents }
diff --git a/packages/components/nodes/agents/OpenAIFunctionAgent/openai.png b/packages/components/nodes/agents/OpenAIFunctionAgent/openai.png
new file mode 100644
index 00000000..de08a05b
Binary files /dev/null and b/packages/components/nodes/agents/OpenAIFunctionAgent/openai.png differ
diff --git a/packages/components/nodes/chains/MultiPromptChain/MultiPromptChain.ts b/packages/components/nodes/chains/MultiPromptChain/MultiPromptChain.ts
index c74e3257..189f41f7 100644
--- a/packages/components/nodes/chains/MultiPromptChain/MultiPromptChain.ts
+++ b/packages/components/nodes/chains/MultiPromptChain/MultiPromptChain.ts
@@ -49,9 +49,12 @@ class MultiPromptChain_Chains implements INode {
promptTemplates.push(prompt.systemMessage)
}
- const chain = MultiPromptChain.fromPrompts(model, promptNames, promptDescriptions, promptTemplates, undefined, {
- verbose: process.env.DEBUG === 'true' ? true : false
- } as any)
+ const chain = MultiPromptChain.fromLLMAndPrompts(model, {
+ promptNames,
+ promptDescriptions,
+ promptTemplates,
+ llmChainOpts: { verbose: process.env.DEBUG === 'true' ? true : false }
+ })
return chain
}
@@ -61,7 +64,7 @@ class MultiPromptChain_Chains implements INode {
const obj = { input }
if (options.socketIO && options.socketIOClientId) {
- const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId)
+ const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId, 2)
const res = await chain.call(obj, [handler])
return res?.text
} else {
diff --git a/packages/components/nodes/chains/MultiRetrievalQAChain/MultiRetrievalQAChain.ts b/packages/components/nodes/chains/MultiRetrievalQAChain/MultiRetrievalQAChain.ts
index b17125c2..b3575a93 100644
--- a/packages/components/nodes/chains/MultiRetrievalQAChain/MultiRetrievalQAChain.ts
+++ b/packages/components/nodes/chains/MultiRetrievalQAChain/MultiRetrievalQAChain.ts
@@ -32,6 +32,12 @@ class MultiRetrievalQAChain_Chains implements INode {
name: 'vectorStoreRetriever',
type: 'VectorStoreRetriever',
list: true
+ },
+ {
+ label: 'Return Source Documents',
+ name: 'returnSourceDocuments',
+ type: 'boolean',
+ optional: true
}
]
}
@@ -39,6 +45,8 @@ class MultiRetrievalQAChain_Chains implements INode {
async init(nodeData: INodeData): Promise {
const model = nodeData.inputs?.model as BaseLanguageModel
const vectorStoreRetriever = nodeData.inputs?.vectorStoreRetriever as VectorStoreRetriever[]
+ const returnSourceDocuments = nodeData.inputs?.returnSourceDocuments as boolean
+
const retrieverNames = []
const retrieverDescriptions = []
const retrievers = []
@@ -49,23 +57,29 @@ class MultiRetrievalQAChain_Chains implements INode {
retrievers.push(vs.vectorStore.asRetriever((vs.vectorStore as any).k ?? 4))
}
- const chain = MultiRetrievalQAChain.fromRetrievers(model, retrieverNames, retrieverDescriptions, retrievers, undefined, {
- verbose: process.env.DEBUG === 'true' ? true : false
- } as any)
-
+ const chain = MultiRetrievalQAChain.fromLLMAndRetrievers(model, {
+ retrieverNames,
+ retrieverDescriptions,
+ retrievers,
+ retrievalQAChainOpts: { verbose: process.env.DEBUG === 'true' ? true : false, returnSourceDocuments }
+ })
return chain
}
- async run(nodeData: INodeData, input: string, options: ICommonObject): Promise {
+ async run(nodeData: INodeData, input: string, options: ICommonObject): Promise {
const chain = nodeData.instance as MultiRetrievalQAChain
+ const returnSourceDocuments = nodeData.inputs?.returnSourceDocuments as boolean
+
const obj = { input }
if (options.socketIO && options.socketIOClientId) {
- const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId)
+ const handler = new CustomChainHandler(options.socketIO, options.socketIOClientId, 2, returnSourceDocuments)
const res = await chain.call(obj, [handler])
+ if (res.text && res.sourceDocuments) return res
return res?.text
} else {
const res = await chain.call(obj)
+ if (res.text && res.sourceDocuments) return res
return res?.text
}
}
diff --git a/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts b/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts
index f07fce60..7ddb17af 100644
--- a/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts
+++ b/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts
@@ -43,6 +43,10 @@ class ChatOpenAI_ChatModels implements INode {
label: 'gpt-4-32k-0314',
name: 'gpt-4-32k-0314'
},
+ {
+ label: 'gpt-4-0613',
+ name: 'gpt-4-0613'
+ },
{
label: 'gpt-3.5-turbo',
name: 'gpt-3.5-turbo'
@@ -50,6 +54,10 @@ class ChatOpenAI_ChatModels implements INode {
{
label: 'gpt-3.5-turbo-0301',
name: 'gpt-3.5-turbo-0301'
+ },
+ {
+ label: 'gpt-3.5-turbo-0613',
+ name: 'gpt-3.5-turbo-0613'
}
],
default: 'gpt-3.5-turbo',
diff --git a/packages/components/nodes/tools/ZapierNLA/ZapierNLA.ts b/packages/components/nodes/tools/ZapierNLA/ZapierNLA.ts
index 849f5946..d16e32e6 100644
--- a/packages/components/nodes/tools/ZapierNLA/ZapierNLA.ts
+++ b/packages/components/nodes/tools/ZapierNLA/ZapierNLA.ts
@@ -1,4 +1,4 @@
-import { ZapierNLAWrapper, ZapiterNLAWrapperParams } from 'langchain/tools'
+import { ZapierNLAWrapper, ZapierNLAWrapperParams } from 'langchain/tools'
import { INode, INodeData, INodeParams } from '../../../src/Interface'
import { ZapierToolKit } from 'langchain/agents'
@@ -32,7 +32,7 @@ class ZapierNLA_Tools implements INode {
async init(nodeData: INodeData): Promise {
const apiKey = nodeData.inputs?.apiKey as string
- const obj: Partial = {
+ const obj: Partial = {
apiKey
}
const zapier = new ZapierNLAWrapper(obj)
diff --git a/packages/components/package.json b/packages/components/package.json
index 3bcac0d9..0aa161f8 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -1,6 +1,6 @@
{
"name": "flowise-components",
- "version": "1.2.12",
+ "version": "1.2.13",
"description": "Flowiseai Components",
"main": "dist/src/index",
"types": "dist/src/index.d.ts",
@@ -32,8 +32,7 @@
"faiss-node": "^0.2.1",
"form-data": "^4.0.0",
"graphql": "^16.6.0",
- "html-to-text": "^9.0.5",
- "langchain": "^0.0.91",
+ "langchain": "^0.0.94",
"linkifyjs": "^4.1.1",
"mammoth": "^1.5.1",
"moment": "^2.29.3",
diff --git a/packages/server/marketplaces/API Agent.json b/packages/server/marketplaces/API Agent.json
index 20e270af..ce4b7fb0 100644
--- a/packages/server/marketplaces/API Agent.json
+++ b/packages/server/marketplaces/API Agent.json
@@ -286,6 +286,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -293,6 +297,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
@@ -481,6 +489,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -488,6 +500,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
@@ -620,6 +636,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -627,6 +647,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/AutoGPT.json b/packages/server/marketplaces/AutoGPT.json
index 4fd1cfdb..4bb68722 100644
--- a/packages/server/marketplaces/AutoGPT.json
+++ b/packages/server/marketplaces/AutoGPT.json
@@ -132,6 +132,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -139,6 +143,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/BabyAGI.json b/packages/server/marketplaces/BabyAGI.json
index 797b574f..aefb9902 100644
--- a/packages/server/marketplaces/BabyAGI.json
+++ b/packages/server/marketplaces/BabyAGI.json
@@ -235,6 +235,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -242,6 +246,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/ChatGPTPlugin.json b/packages/server/marketplaces/ChatGPTPlugin.json
index 648c94b7..4d5d1869 100644
--- a/packages/server/marketplaces/ChatGPTPlugin.json
+++ b/packages/server/marketplaces/ChatGPTPlugin.json
@@ -295,6 +295,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -302,6 +306,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/Conversational Agent.json b/packages/server/marketplaces/Conversational Agent.json
index 635455ce..d6d61e86 100644
--- a/packages/server/marketplaces/Conversational Agent.json
+++ b/packages/server/marketplaces/Conversational Agent.json
@@ -42,6 +42,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -49,6 +53,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/Conversational Retrieval QA Chain.json b/packages/server/marketplaces/Conversational Retrieval QA Chain.json
index 4d470ab2..4d8b2881 100644
--- a/packages/server/marketplaces/Conversational Retrieval QA Chain.json
+++ b/packages/server/marketplaces/Conversational Retrieval QA Chain.json
@@ -356,6 +356,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -363,6 +367,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/Github Repo QnA.json b/packages/server/marketplaces/Github Repo QnA.json
index a9294eca..852c9741 100644
--- a/packages/server/marketplaces/Github Repo QnA.json
+++ b/packages/server/marketplaces/Github Repo QnA.json
@@ -373,6 +373,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -380,6 +384,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/Multi Prompt Chain.json b/packages/server/marketplaces/Multi Prompt Chain.json
index a9c41a76..d4aa4550 100644
--- a/packages/server/marketplaces/Multi Prompt Chain.json
+++ b/packages/server/marketplaces/Multi Prompt Chain.json
@@ -302,6 +302,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -309,6 +313,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/Multi Retrieval QA Chain.json b/packages/server/marketplaces/Multi Retrieval QA Chain.json
index 8f2ca89e..f3cd1fcc 100644
--- a/packages/server/marketplaces/Multi Retrieval QA Chain.json
+++ b/packages/server/marketplaces/Multi Retrieval QA Chain.json
@@ -84,7 +84,14 @@
"baseClasses": ["MultiRetrievalQAChain", "MultiRouteChain", "BaseChain", "BaseLangChain"],
"category": "Chains",
"description": "QA Chain that automatically picks an appropriate vector store from multiple retrievers",
- "inputParams": [],
+ "inputParams": [
+ {
+ "label": "Return Source Documents",
+ "name": "returnSourceDocuments",
+ "type": "boolean",
+ "optional": true
+ }
+ ],
"inputAnchors": [
{
"label": "Language Model",
@@ -299,6 +306,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -306,6 +317,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/OpenAI Agent.json b/packages/server/marketplaces/OpenAI Agent.json
new file mode 100644
index 00000000..77192eb1
--- /dev/null
+++ b/packages/server/marketplaces/OpenAI Agent.json
@@ -0,0 +1,327 @@
+{
+ "description": "An agent that uses OpenAI's Function Calling functionality to pick the tool and args to call",
+ "nodes": [
+ {
+ "width": 300,
+ "height": 524,
+ "id": "chatOpenAI_0",
+ "position": {
+ "x": 373.8366297840716,
+ "y": 448.58765780622326
+ },
+ "type": "customNode",
+ "data": {
+ "id": "chatOpenAI_0",
+ "label": "ChatOpenAI",
+ "name": "chatOpenAI",
+ "type": "ChatOpenAI",
+ "baseClasses": ["ChatOpenAI", "BaseChatModel", "BaseLanguageModel", "BaseLangChain", "Serializable"],
+ "category": "Chat Models",
+ "description": "Wrapper around OpenAI large language models that use the Chat endpoint",
+ "inputParams": [
+ {
+ "label": "OpenAI Api Key",
+ "name": "openAIApiKey",
+ "type": "password",
+ "id": "chatOpenAI_0-input-openAIApiKey-password"
+ },
+ {
+ "label": "Model Name",
+ "name": "modelName",
+ "type": "options",
+ "options": [
+ {
+ "label": "gpt-4",
+ "name": "gpt-4"
+ },
+ {
+ "label": "gpt-4-0314",
+ "name": "gpt-4-0314"
+ },
+ {
+ "label": "gpt-4-32k-0314",
+ "name": "gpt-4-32k-0314"
+ },
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
+ {
+ "label": "gpt-3.5-turbo",
+ "name": "gpt-3.5-turbo"
+ },
+ {
+ "label": "gpt-3.5-turbo-0301",
+ "name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
+ }
+ ],
+ "default": "gpt-3.5-turbo",
+ "optional": true,
+ "id": "chatOpenAI_0-input-modelName-options"
+ },
+ {
+ "label": "Temperature",
+ "name": "temperature",
+ "type": "number",
+ "default": 0.9,
+ "optional": true,
+ "id": "chatOpenAI_0-input-temperature-number"
+ },
+ {
+ "label": "Max Tokens",
+ "name": "maxTokens",
+ "type": "number",
+ "optional": true,
+ "additionalParams": true,
+ "id": "chatOpenAI_0-input-maxTokens-number"
+ },
+ {
+ "label": "Top Probability",
+ "name": "topP",
+ "type": "number",
+ "optional": true,
+ "additionalParams": true,
+ "id": "chatOpenAI_0-input-topP-number"
+ },
+ {
+ "label": "Frequency Penalty",
+ "name": "frequencyPenalty",
+ "type": "number",
+ "optional": true,
+ "additionalParams": true,
+ "id": "chatOpenAI_0-input-frequencyPenalty-number"
+ },
+ {
+ "label": "Presence Penalty",
+ "name": "presencePenalty",
+ "type": "number",
+ "optional": true,
+ "additionalParams": true,
+ "id": "chatOpenAI_0-input-presencePenalty-number"
+ },
+ {
+ "label": "Timeout",
+ "name": "timeout",
+ "type": "number",
+ "optional": true,
+ "additionalParams": true,
+ "id": "chatOpenAI_0-input-timeout-number"
+ },
+ {
+ "label": "BasePath",
+ "name": "basepath",
+ "type": "string",
+ "optional": true,
+ "additionalParams": true,
+ "id": "chatOpenAI_0-input-basepath-string"
+ }
+ ],
+ "inputAnchors": [],
+ "inputs": {
+ "modelName": "gpt-3.5-turbo-0613",
+ "temperature": 0.9,
+ "maxTokens": "",
+ "topP": "",
+ "frequencyPenalty": "",
+ "presencePenalty": "",
+ "timeout": "",
+ "basepath": ""
+ },
+ "outputAnchors": [
+ {
+ "id": "chatOpenAI_0-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain|Serializable",
+ "name": "chatOpenAI",
+ "label": "ChatOpenAI",
+ "type": "ChatOpenAI | BaseChatModel | BaseLanguageModel | BaseLangChain | Serializable"
+ }
+ ],
+ "outputs": {},
+ "selected": false
+ },
+ "selected": false,
+ "positionAbsolute": {
+ "x": 373.8366297840716,
+ "y": 448.58765780622326
+ },
+ "dragging": false
+ },
+ {
+ "width": 300,
+ "height": 280,
+ "id": "openAIFunctionAgent_0",
+ "position": {
+ "x": 1084.5405852317417,
+ "y": 384.4653768834282
+ },
+ "type": "customNode",
+ "data": {
+ "id": "openAIFunctionAgent_0",
+ "label": "OpenAI Function Agent",
+ "name": "openAIFunctionAgent",
+ "type": "AgentExecutor",
+ "baseClasses": ["AgentExecutor", "BaseChain", "BaseLangChain", "Serializable"],
+ "category": "Agents",
+ "description": "An agent that uses OpenAI's Function Calling functionality to pick the tool and args to call",
+ "inputParams": [],
+ "inputAnchors": [
+ {
+ "label": "Allowed Tools",
+ "name": "tools",
+ "type": "Tool",
+ "list": true,
+ "id": "openAIFunctionAgent_0-input-tools-Tool"
+ },
+ {
+ "label": "OpenAI Chat Model",
+ "name": "model",
+ "description": "Only works with gpt-3.5-turbo-0613 and gpt-4-0613. Refer docs for more info",
+ "type": "BaseChatModel",
+ "id": "openAIFunctionAgent_0-input-model-BaseChatModel"
+ }
+ ],
+ "inputs": {
+ "tools": ["{{calculator_0.data.instance}}", "{{serper_0.data.instance}}"],
+ "model": "{{chatOpenAI_0.data.instance}}"
+ },
+ "outputAnchors": [
+ {
+ "id": "openAIFunctionAgent_0-output-openAIFunctionAgent-AgentExecutor|BaseChain|BaseLangChain|Serializable",
+ "name": "openAIFunctionAgent",
+ "label": "AgentExecutor",
+ "type": "AgentExecutor | BaseChain | BaseLangChain | Serializable"
+ }
+ ],
+ "outputs": {},
+ "selected": false
+ },
+ "selected": false,
+ "positionAbsolute": {
+ "x": 1084.5405852317417,
+ "y": 384.4653768834282
+ },
+ "dragging": false
+ },
+ {
+ "width": 300,
+ "height": 278,
+ "id": "serper_0",
+ "position": {
+ "x": 691.7580226065319,
+ "y": 34.00444633899792
+ },
+ "type": "customNode",
+ "data": {
+ "id": "serper_0",
+ "label": "Serper",
+ "name": "serper",
+ "type": "Serper",
+ "baseClasses": ["Serper", "Tool", "StructuredTool", "BaseLangChain", "Serializable"],
+ "category": "Tools",
+ "description": "Wrapper around Serper.dev - Google Search API",
+ "inputParams": [
+ {
+ "label": "Serper Api Key",
+ "name": "apiKey",
+ "type": "password",
+ "id": "serper_0-input-apiKey-password"
+ }
+ ],
+ "inputAnchors": [],
+ "inputs": {},
+ "outputAnchors": [
+ {
+ "id": "serper_0-output-serper-Serper|Tool|StructuredTool|BaseLangChain|Serializable",
+ "name": "serper",
+ "label": "Serper",
+ "type": "Serper | Tool | StructuredTool | BaseLangChain | Serializable"
+ }
+ ],
+ "outputs": {},
+ "selected": false
+ },
+ "selected": false,
+ "positionAbsolute": {
+ "x": 691.7580226065319,
+ "y": 34.00444633899792
+ },
+ "dragging": false
+ },
+ {
+ "width": 300,
+ "height": 143,
+ "id": "calculator_0",
+ "position": {
+ "x": 341.63347110886497,
+ "y": 261.6753474034481
+ },
+ "type": "customNode",
+ "data": {
+ "id": "calculator_0",
+ "label": "Calculator",
+ "name": "calculator",
+ "type": "Calculator",
+ "baseClasses": ["Calculator", "Tool", "StructuredTool", "BaseLangChain", "Serializable"],
+ "category": "Tools",
+ "description": "Perform calculations on response",
+ "inputParams": [],
+ "inputAnchors": [],
+ "inputs": {},
+ "outputAnchors": [
+ {
+ "id": "calculator_0-output-calculator-Calculator|Tool|StructuredTool|BaseLangChain|Serializable",
+ "name": "calculator",
+ "label": "Calculator",
+ "type": "Calculator | Tool | StructuredTool | BaseLangChain | Serializable"
+ }
+ ],
+ "outputs": {},
+ "selected": false
+ },
+ "selected": false,
+ "positionAbsolute": {
+ "x": 341.63347110886497,
+ "y": 261.6753474034481
+ },
+ "dragging": false
+ }
+ ],
+ "edges": [
+ {
+ "source": "chatOpenAI_0",
+ "sourceHandle": "chatOpenAI_0-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain|Serializable",
+ "target": "openAIFunctionAgent_0",
+ "targetHandle": "openAIFunctionAgent_0-input-model-BaseChatModel",
+ "type": "buttonedge",
+ "id": "chatOpenAI_0-chatOpenAI_0-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain|Serializable-openAIFunctionAgent_0-openAIFunctionAgent_0-input-model-BaseChatModel",
+ "data": {
+ "label": ""
+ }
+ },
+ {
+ "source": "calculator_0",
+ "sourceHandle": "calculator_0-output-calculator-Calculator|Tool|StructuredTool|BaseLangChain|Serializable",
+ "target": "openAIFunctionAgent_0",
+ "targetHandle": "openAIFunctionAgent_0-input-tools-Tool",
+ "type": "buttonedge",
+ "id": "calculator_0-calculator_0-output-calculator-Calculator|Tool|StructuredTool|BaseLangChain|Serializable-openAIFunctionAgent_0-openAIFunctionAgent_0-input-tools-Tool",
+ "data": {
+ "label": ""
+ }
+ },
+ {
+ "source": "serper_0",
+ "sourceHandle": "serper_0-output-serper-Serper|Tool|StructuredTool|BaseLangChain|Serializable",
+ "target": "openAIFunctionAgent_0",
+ "targetHandle": "openAIFunctionAgent_0-input-tools-Tool",
+ "type": "buttonedge",
+ "id": "serper_0-serper_0-output-serper-Serper|Tool|StructuredTool|BaseLangChain|Serializable-openAIFunctionAgent_0-openAIFunctionAgent_0-input-tools-Tool",
+ "data": {
+ "label": ""
+ }
+ }
+ ]
+}
diff --git a/packages/server/marketplaces/Simple Conversation Chain.json b/packages/server/marketplaces/Simple Conversation Chain.json
index f3decc85..93cf06d7 100644
--- a/packages/server/marketplaces/Simple Conversation Chain.json
+++ b/packages/server/marketplaces/Simple Conversation Chain.json
@@ -42,6 +42,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -49,6 +53,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/Translator.json b/packages/server/marketplaces/Translator.json
index 6e36f943..5a57a8f5 100644
--- a/packages/server/marketplaces/Translator.json
+++ b/packages/server/marketplaces/Translator.json
@@ -112,6 +112,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -119,6 +123,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/marketplaces/WebBrowser.json b/packages/server/marketplaces/WebBrowser.json
index 7d7ff357..d533c75f 100644
--- a/packages/server/marketplaces/WebBrowser.json
+++ b/packages/server/marketplaces/WebBrowser.json
@@ -42,6 +42,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -49,6 +53,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
@@ -318,6 +326,10 @@
"label": "gpt-4-32k-0314",
"name": "gpt-4-32k-0314"
},
+ {
+ "label": "gpt-4-0613",
+ "name": "gpt-4-0613"
+ },
{
"label": "gpt-3.5-turbo",
"name": "gpt-3.5-turbo"
@@ -325,6 +337,10 @@
{
"label": "gpt-3.5-turbo-0301",
"name": "gpt-3.5-turbo-0301"
+ },
+ {
+ "label": "gpt-3.5-turbo-0613",
+ "name": "gpt-3.5-turbo-0613"
}
],
"default": "gpt-3.5-turbo",
diff --git a/packages/server/package.json b/packages/server/package.json
index cdfb11c1..e7a8bc61 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,6 +1,6 @@
{
"name": "flowise",
- "version": "1.2.11",
+ "version": "1.2.12",
"description": "Flowiseai Server",
"main": "dist/index",
"types": "dist/index.d.ts",
diff --git a/packages/server/src/utils/index.ts b/packages/server/src/utils/index.ts
index 3a176673..8e19bf5b 100644
--- a/packages/server/src/utils/index.ts
+++ b/packages/server/src/utils/index.ts
@@ -660,7 +660,7 @@ export const isFlowValidForStream = (reactFlowNodes: IReactFlowNode[], endingNod
return (
isChatOrLLMsExist &&
- endingNodeData.category === 'Chains' &&
+ (endingNodeData.category === 'Chains' || endingNodeData.name === 'openAIFunctionAgent') &&
!isVectorStoreFaiss(endingNodeData) &&
process.env.EXECUTION_MODE !== 'child'
)
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 0727fc87..af9ac5e0 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,6 +1,6 @@
{
"name": "flowise-ui",
- "version": "1.2.10",
+ "version": "1.2.11",
"license": "SEE LICENSE IN LICENSE.md",
"homepage": "https://flowiseai.com",
"author": {
diff --git a/packages/ui/src/views/canvas/NodeInputHandler.js b/packages/ui/src/views/canvas/NodeInputHandler.js
index 1dc656e8..d58f7a66 100644
--- a/packages/ui/src/views/canvas/NodeInputHandler.js
+++ b/packages/ui/src/views/canvas/NodeInputHandler.js
@@ -95,6 +95,7 @@ const NodeInputHandler = ({ inputAnchor, inputParam, data, disabled = false, isA
{inputAnchor.label}
{!inputAnchor.optional && *}
+ {inputAnchor.description && }
>