From 2d36ef6b182bacd704c7d6b4a1f416d4d770cf7f Mon Sep 17 00:00:00 2001 From: Rahul kushwaha Date: Sun, 7 May 2023 01:49:23 +0530 Subject: [PATCH 1/9] fixed bug: chatflow name is being replaced by old name --- packages/ui/src/views/canvas/CanvasHeader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/src/views/canvas/CanvasHeader.js b/packages/ui/src/views/canvas/CanvasHeader.js index 70c6aa02f..3a4abb794 100644 --- a/packages/ui/src/views/canvas/CanvasHeader.js +++ b/packages/ui/src/views/canvas/CanvasHeader.js @@ -89,7 +89,7 @@ const CanvasHeader = ({ chatflow, handleSaveFlow, handleDeleteFlow, handleLoadFl } const onSaveChatflowClick = () => { - if (chatflow.id) handleSaveFlow(chatflow.name) + if (chatflow.id) handleSaveFlow(flowName) else setFlowDialogOpen(true) } From fc7fbd6c3380248e07b5c1b70d36f08d46b5f4b7 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 10 May 2023 02:08:42 +0100 Subject: [PATCH 2/9] add cohere --- .../CohereEmbedding/CohereEmbedding.ts | 32 +++++- .../components/nodes/llms/Cohere/Cohere.ts | 97 ++++++++++++++++++ .../components/nodes/llms/Cohere/cohere.png | Bin 0 -> 7847 bytes 3 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 packages/components/nodes/llms/Cohere/Cohere.ts create mode 100644 packages/components/nodes/llms/Cohere/cohere.png diff --git a/packages/components/nodes/embeddings/CohereEmbedding/CohereEmbedding.ts b/packages/components/nodes/embeddings/CohereEmbedding/CohereEmbedding.ts index 923cf6c64..344713a48 100644 --- a/packages/components/nodes/embeddings/CohereEmbedding/CohereEmbedding.ts +++ b/packages/components/nodes/embeddings/CohereEmbedding/CohereEmbedding.ts @@ -1,6 +1,6 @@ import { INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' -import { CohereEmbeddings } from 'langchain/embeddings/cohere' +import { CohereEmbeddings, CohereEmbeddingsParams } from 'langchain/embeddings/cohere' class CohereEmbedding_Embeddings implements INode { label: string @@ -25,14 +25,42 @@ class CohereEmbedding_Embeddings implements INode { label: 'Cohere API Key', name: 'cohereApiKey', type: 'password' + }, + { + label: 'Model Name', + name: 'modelName', + type: 'options', + options: [ + { + label: 'embed-english-v2.0', + name: 'embed-english-v2.0' + }, + { + label: 'embed-english-light-v2.0', + name: 'embed-english-light-v2.0' + }, + { + label: 'embed-multilingual-v2.0', + name: 'embed-multilingual-v2.0' + } + ], + default: 'embed-english-v2.0', + optional: true } ] } async init(nodeData: INodeData): Promise { const apiKey = nodeData.inputs?.cohereApiKey as string + const modelName = nodeData.inputs?.modelName as string - const model = new CohereEmbeddings({ apiKey }) + const obj: Partial & { apiKey?: string } = { + apiKey + } + + if (modelName) obj.modelName = modelName + + const model = new CohereEmbeddings(obj) return model } } diff --git a/packages/components/nodes/llms/Cohere/Cohere.ts b/packages/components/nodes/llms/Cohere/Cohere.ts new file mode 100644 index 000000000..dc632ec31 --- /dev/null +++ b/packages/components/nodes/llms/Cohere/Cohere.ts @@ -0,0 +1,97 @@ +import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses } from '../../../src/utils' +import { Cohere, CohereInput } from 'langchain/llms/cohere' + +class Cohere_LLMs implements INode { + label: string + name: string + type: string + icon: string + category: string + description: string + baseClasses: string[] + inputs: INodeParams[] + + constructor() { + this.label = 'Cohere' + this.name = 'cohere' + this.type = 'Cohere' + this.icon = 'cohere.png' + this.category = 'LLMs' + this.description = 'Wrapper around Cohere large language models' + this.baseClasses = [this.type, ...getBaseClasses(Cohere)] + this.inputs = [ + { + label: 'Cohere Api Key', + name: 'cohereApiKey', + type: 'password' + }, + { + label: 'Model Name', + name: 'modelName', + type: 'options', + options: [ + { + label: 'command', + name: 'command' + }, + { + label: 'command-light', + name: 'command-light' + }, + { + label: 'command-nightly', + name: 'command-nightly' + }, + { + label: 'command-light-nightly', + name: 'command-light-nightly' + }, + { + label: 'base', + name: 'base' + }, + { + label: 'base-light', + name: 'base-light' + } + ], + default: 'command', + optional: true + }, + { + label: 'Temperature', + name: 'temperature', + type: 'number', + default: 0.7, + optional: true + }, + { + label: 'Max Tokens', + name: 'maxTokens', + type: 'number', + optional: true + } + ] + } + + async init(nodeData: INodeData): Promise { + const temperature = nodeData.inputs?.temperature as string + const modelName = nodeData.inputs?.modelName as string + const apiKey = nodeData.inputs?.cohereApiKey as string + const maxTokens = nodeData.inputs?.maxTokens as string + + const obj: CohereInput = { + apiKey + } + + if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) + if (modelName) obj.model = modelName + if (temperature) obj.temperature = parseInt(temperature, 10) + + const model = new Cohere(obj) + return model + } +} + +module.exports = { nodeClass: Cohere_LLMs } diff --git a/packages/components/nodes/llms/Cohere/cohere.png b/packages/components/nodes/llms/Cohere/cohere.png new file mode 100644 index 0000000000000000000000000000000000000000..266adeac2214b8627504eaf299c990b28f0448e0 GIT binary patch literal 7847 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 literal 0 HcmV?d00001 From f4b84b1a21aa40c6598b49de0f801351b8513bad Mon Sep 17 00:00:00 2001 From: chungyau97 Date: Wed, 10 May 2023 10:33:11 +0700 Subject: [PATCH 3/9] upgrade langchain version --- packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts | 3 +-- packages/components/package.json | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts b/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts index dfb9b5d5c..5d608c5e2 100644 --- a/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts @@ -1,7 +1,6 @@ -import { OpenAIChatInput } from 'langchain/llms/openai' import { INode, INodeData, INodeParams } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' -import { ChatOpenAI } from 'langchain/chat_models/openai' +import { ChatOpenAI, OpenAIChatInput } from 'langchain/chat_models/openai' class ChatOpenAI_ChatModels implements INode { label: string diff --git a/packages/components/package.json b/packages/components/package.json index b06b81441..bf7392310 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -29,7 +29,7 @@ "express": "^4.17.3", "form-data": "^4.0.0", "graphql": "^16.6.0", - "langchain": "^0.0.66", + "langchain": "^0.0.73", "mammoth": "^1.5.1", "moment": "^2.29.3", "node-fetch": "2", From f9f7a1136a6c335ec394174cb943ee443595f4de Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 10 May 2023 15:55:17 +0100 Subject: [PATCH 4/9] add chat embed code --- packages/ui/src/assets/images/embed.svg | 1 + .../src/ui-component/dialog/APICodeDialog.js | 59 +++++++++++++------ packages/ui/src/views/canvas/CanvasHeader.js | 2 +- 3 files changed, 43 insertions(+), 19 deletions(-) create mode 100644 packages/ui/src/assets/images/embed.svg diff --git a/packages/ui/src/assets/images/embed.svg b/packages/ui/src/assets/images/embed.svg new file mode 100644 index 000000000..d20ceab0c --- /dev/null +++ b/packages/ui/src/assets/images/embed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/ui/src/ui-component/dialog/APICodeDialog.js b/packages/ui/src/ui-component/dialog/APICodeDialog.js index f160c44dc..1bd1dcb17 100644 --- a/packages/ui/src/ui-component/dialog/APICodeDialog.js +++ b/packages/ui/src/ui-component/dialog/APICodeDialog.js @@ -18,6 +18,7 @@ import { SET_CHATFLOW } from 'store/actions' import pythonSVG from 'assets/images/python.svg' import javascriptSVG from 'assets/images/javascript.svg' import cURLSVG from 'assets/images/cURL.svg' +import EmbedSVG from 'assets/images/embed.svg' // API import apiKeyApi from 'api/apikey' @@ -117,11 +118,21 @@ const getFormDataExamplesForCurl = (configData) => { return finalStr } +const embedCode = (chatflowid) => { + return `` +} + const APICodeDialog = ({ show, dialogProps, onCancel }) => { const portalElement = document.getElementById('portal') const navigate = useNavigate() const dispatch = useDispatch() - const codes = ['Python', 'JavaScript', 'cURL'] + const codes = ['Embed', 'Python', 'JavaScript', 'cURL'] const [value, setValue] = useState(0) const [keyOptions, setKeyOptions] = useState([]) const [apiKeys, setAPIKeys] = useState([]) @@ -196,6 +207,8 @@ output = query({ return `curl ${baseURL}/api/v1/prediction/${dialogProps.chatflowid} \\ -X POST \\ -d '{"question": "Hey, how are you?"}'` + } else if (codeLang === 'Embed') { + return embedCode(dialogProps.chatflowid) } return '' } @@ -236,6 +249,8 @@ output = query({ -X POST \\ -d '{"question": "Hey, how are you?"}' -H "Authorization: Bearer ${selectedApiKey?.apiKey}"` + } else if (codeLang === 'Embed') { + return embedCode(dialogProps.chatflowid) } return '' } @@ -243,7 +258,7 @@ output = query({ const getLang = (codeLang) => { if (codeLang === 'Python') { return 'python' - } else if (codeLang === 'JavaScript') { + } else if (codeLang === 'JavaScript' || codeLang === 'Embed') { return 'javascript' } else if (codeLang === 'cURL') { return 'bash' @@ -256,6 +271,8 @@ output = query({ return pythonSVG } else if (codeLang === 'JavaScript') { return javascriptSVG + } else if (codeLang === 'Embed') { + return EmbedSVG } else if (codeLang === 'cURL') { return cURLSVG } @@ -458,11 +475,7 @@ curl ${baseURL}/api/v1/prediction/${dialogProps.chatflowid} \\ {codes.map((codeLang, index) => ( + code } iconPosition='start' key={index} @@ -472,19 +485,29 @@ curl ${baseURL}/api/v1/prediction/${dialogProps.chatflowid} \\ ))} -
- onApiKeySelected(newValue)} - value={dialogProps.chatflowApiKeyId ?? chatflowApiKeyId ?? 'Choose an API key'} - /> -
+ {value !== 0 && ( +
+ onApiKeySelected(newValue)} + value={dialogProps.chatflowApiKeyId ?? chatflowApiKeyId ?? 'Choose an API key'} + /> +
+ )}
{codes.map((codeLang, index) => ( + {value === 0 && ( + <> + + Paste this anywhere in the {``} tag of your html file + +
+ + )} - - {checkboxVal && getConfigApi.data && getConfigApi.data.length > 0 && ( + {value !== 0 && } + {value !== 0 && checkboxVal && getConfigApi.data && getConfigApi.data.length > 0 && ( <> { setAPIDialogProps({ - title: 'Use this chatflow with API', + title: 'Embed in website or use as API', chatflowid: chatflow.id, chatflowApiKeyId: chatflow.apikeyid }) From d83b57c349729da652f91d86fd72f1702ba33d98 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 10 May 2023 23:33:19 +0100 Subject: [PATCH 5/9] add new check for overrideconfig to fix bug where external prediction call reset flow --- packages/server/src/index.ts | 1 - packages/server/src/utils/index.ts | 7 ++++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index a168570d8..64935c922 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -378,7 +378,6 @@ export class App { nodeToExecuteData = this.chatflowPool.activeChatflows[chatflowid].endingNodeData } else { /*** Get chatflows and prepare data ***/ - const flowData = chatflow.flowData const parsedFlowData: IReactFlowObject = JSON.parse(flowData) const nodes = parsedFlowData.nodes diff --git a/packages/server/src/utils/index.ts b/packages/server/src/utils/index.ts index 1b4b41c63..d1c4ab4c6 100644 --- a/packages/server/src/utils/index.ts +++ b/packages/server/src/utils/index.ts @@ -398,15 +398,20 @@ export const isSameOverrideConfig = ( existingOverrideConfig?: ICommonObject, newOverrideConfig?: ICommonObject ): boolean => { + // Skip check if its internal call if (isInternal) return true + // If existing and new overrideconfig are the same if ( existingOverrideConfig && Object.keys(existingOverrideConfig).length && newOverrideConfig && Object.keys(newOverrideConfig).length && JSON.stringify(existingOverrideConfig) === JSON.stringify(newOverrideConfig) - ) + ) { return true + } + // If there is no existing and new overrideconfig + if (!existingOverrideConfig && !newOverrideConfig) return true return false } From fba6a33f307365dad6cfdd6352d8dc34b2c0fd29 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 11 May 2023 01:36:17 +0100 Subject: [PATCH 6/9] add webbrowsertool --- .../nodes/tools/WebBrowser/WebBrowser.ts | 47 ++ .../nodes/tools/WebBrowser/webBrowser.svg | 12 + packages/server/marketplaces/WebBrowser.json | 590 ++++++++++++++++++ 3 files changed, 649 insertions(+) create mode 100644 packages/components/nodes/tools/WebBrowser/WebBrowser.ts create mode 100644 packages/components/nodes/tools/WebBrowser/webBrowser.svg create mode 100644 packages/server/marketplaces/WebBrowser.json diff --git a/packages/components/nodes/tools/WebBrowser/WebBrowser.ts b/packages/components/nodes/tools/WebBrowser/WebBrowser.ts new file mode 100644 index 000000000..09478047a --- /dev/null +++ b/packages/components/nodes/tools/WebBrowser/WebBrowser.ts @@ -0,0 +1,47 @@ +import { BaseLanguageModel } from 'langchain/base_language' +import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses } from '../../../src/utils' +import { WebBrowser } from 'langchain/tools/webbrowser' +import { Embeddings } from 'langchain/embeddings/base' + +class WebBrowser_Tools implements INode { + label: string + name: string + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + + constructor() { + this.label = 'Web Browser' + this.name = 'webBrowser' + this.type = 'WebBrowser' + this.icon = 'webBrowser.svg' + this.category = 'Tools' + this.description = 'Gives agent the ability to visit a website and extract information' + this.inputs = [ + { + label: 'Language Model', + name: 'model', + type: 'BaseLanguageModel' + }, + { + label: 'Embeddings', + name: 'embeddings', + type: 'Embeddings' + } + ] + this.baseClasses = [this.type, ...getBaseClasses(WebBrowser)] + } + + async init(nodeData: INodeData): Promise { + const model = nodeData.inputs?.model as BaseLanguageModel + const embeddings = nodeData.inputs?.embeddings as Embeddings + + return new WebBrowser({ model, embeddings }) + } +} + +module.exports = { nodeClass: WebBrowser_Tools } diff --git a/packages/components/nodes/tools/WebBrowser/webBrowser.svg b/packages/components/nodes/tools/WebBrowser/webBrowser.svg new file mode 100644 index 000000000..01eea4f2a --- /dev/null +++ b/packages/components/nodes/tools/WebBrowser/webBrowser.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/server/marketplaces/WebBrowser.json b/packages/server/marketplaces/WebBrowser.json new file mode 100644 index 000000000..f1a3638d2 --- /dev/null +++ b/packages/server/marketplaces/WebBrowser.json @@ -0,0 +1,590 @@ +{ + "description": "Conversational Agent with ability to visit a website and extract information", + "nodes": [ + { + "width": 300, + "height": 383, + "id": "conversationalAgent_0", + "position": { + "x": 1527.4605987432717, + "y": 242.32866622482635 + }, + "type": "customNode", + "data": { + "id": "conversationalAgent_0", + "label": "Conversational Agent", + "name": "conversationalAgent", + "type": "AgentExecutor", + "baseClasses": ["AgentExecutor", "BaseChain", "BaseLangChain"], + "category": "Agents", + "description": "Conversational agent for a chat model. It will utilize chat specific prompts", + "inputParams": [ + { + "label": "System Message", + "name": "systemMessage", + "type": "string", + "rows": 4, + "optional": true, + "additionalParams": true, + "id": "conversationalAgent_0-input-systemMessage-string" + }, + { + "label": "Human Message", + "name": "humanMessage", + "type": "string", + "rows": 4, + "optional": true, + "additionalParams": true, + "id": "conversationalAgent_0-input-humanMessage-string" + } + ], + "inputAnchors": [ + { + "label": "Allowed Tools", + "name": "tools", + "type": "Tool", + "list": true, + "id": "conversationalAgent_0-input-tools-Tool" + }, + { + "label": "Chat Model", + "name": "model", + "type": "BaseChatModel", + "id": "conversationalAgent_0-input-model-BaseChatModel" + }, + { + "label": "Memory", + "name": "memory", + "type": "BaseChatMemory", + "id": "conversationalAgent_0-input-memory-BaseChatMemory" + } + ], + "inputs": { + "tools": ["{{webBrowser_0.data.instance}}"], + "model": "{{chatOpenAI_0.data.instance}}", + "memory": "{{bufferMemory_0.data.instance}}", + "systemMessage": "", + "humanMessage": "" + }, + "outputAnchors": [ + { + "id": "conversationalAgent_0-output-conversationalAgent-AgentExecutor|BaseChain|BaseLangChain", + "name": "conversationalAgent", + "label": "AgentExecutor", + "type": "AgentExecutor | BaseChain | BaseLangChain" + } + ], + "outputs": {}, + "selected": false + }, + "positionAbsolute": { + "x": 1527.4605987432717, + "y": 242.32866622482635 + }, + "selected": false, + "dragging": false + }, + { + "width": 300, + "height": 524, + "id": "chatOpenAI_0", + "position": { + "x": 348.0817836845733, + "y": -86.56099395751443 + }, + "type": "customNode", + "data": { + "id": "chatOpenAI_0", + "label": "ChatOpenAI", + "name": "chatOpenAI", + "type": "ChatOpenAI", + "baseClasses": ["ChatOpenAI", "BaseChatModel", "BaseLanguageModel", "BaseLangChain"], + "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-3.5-turbo", + "name": "gpt-3.5-turbo" + }, + { + "label": "gpt-3.5-turbo-0301", + "name": "gpt-3.5-turbo-0301" + } + ], + "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" + } + ], + "inputAnchors": [], + "inputs": { + "modelName": "gpt-3.5-turbo", + "temperature": 0.9, + "maxTokens": "", + "topP": "", + "frequencyPenalty": "", + "presencePenalty": "", + "timeout": "" + }, + "outputAnchors": [ + { + "id": "chatOpenAI_0-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain", + "name": "chatOpenAI", + "label": "ChatOpenAI", + "type": "ChatOpenAI | BaseChatModel | BaseLanguageModel | BaseLangChain" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "positionAbsolute": { + "x": 348.0817836845733, + "y": -86.56099395751443 + }, + "dragging": false + }, + { + "width": 300, + "height": 376, + "id": "bufferMemory_0", + "position": { + "x": 15.045898260926037, + "y": 114.13407401971622 + }, + "type": "customNode", + "data": { + "id": "bufferMemory_0", + "label": "Buffer Memory", + "name": "bufferMemory", + "type": "BufferMemory", + "baseClasses": ["BufferMemory", "BaseChatMemory", "BaseMemory"], + "category": "Memory", + "description": "Remembers previous conversational back and forths directly", + "inputParams": [ + { + "label": "Memory Key", + "name": "memoryKey", + "type": "string", + "default": "chat_history", + "id": "bufferMemory_0-input-memoryKey-string" + }, + { + "label": "Input Key", + "name": "inputKey", + "type": "string", + "default": "input", + "id": "bufferMemory_0-input-inputKey-string" + } + ], + "inputAnchors": [], + "inputs": { + "memoryKey": "chat_history", + "inputKey": "input" + }, + "outputAnchors": [ + { + "id": "bufferMemory_0-output-bufferMemory-BufferMemory|BaseChatMemory|BaseMemory", + "name": "bufferMemory", + "label": "BufferMemory", + "type": "BufferMemory | BaseChatMemory | BaseMemory" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "positionAbsolute": { + "x": 15.045898260926037, + "y": 114.13407401971622 + }, + "dragging": false + }, + { + "width": 300, + "height": 330, + "id": "openAIEmbeddings_0", + "position": { + "x": 693.9266260641734, + "y": 37.098856540087496 + }, + "type": "customNode", + "data": { + "id": "openAIEmbeddings_0", + "label": "OpenAI Embeddings", + "name": "openAIEmbeddings", + "type": "OpenAIEmbeddings", + "baseClasses": ["OpenAIEmbeddings", "Embeddings"], + "category": "Embeddings", + "description": "OpenAI API to generate embeddings for a given text", + "inputParams": [ + { + "label": "OpenAI Api Key", + "name": "openAIApiKey", + "type": "password", + "id": "openAIEmbeddings_0-input-openAIApiKey-password" + }, + { + "label": "Strip New Lines", + "name": "stripNewLines", + "type": "boolean", + "optional": true, + "additionalParams": true, + "id": "openAIEmbeddings_0-input-stripNewLines-boolean" + }, + { + "label": "Batch Size", + "name": "batchSize", + "type": "number", + "optional": true, + "additionalParams": true, + "id": "openAIEmbeddings_0-input-batchSize-number" + }, + { + "label": "Timeout", + "name": "timeout", + "type": "number", + "optional": true, + "additionalParams": true, + "id": "openAIEmbeddings_0-input-timeout-number" + } + ], + "inputAnchors": [], + "inputs": { + "stripNewLines": "", + "batchSize": "", + "timeout": "" + }, + "outputAnchors": [ + { + "id": "openAIEmbeddings_0-output-openAIEmbeddings-OpenAIEmbeddings|Embeddings", + "name": "openAIEmbeddings", + "label": "OpenAIEmbeddings", + "type": "OpenAIEmbeddings | Embeddings" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "positionAbsolute": { + "x": 693.9266260641734, + "y": 37.098856540087496 + }, + "dragging": false + }, + { + "width": 300, + "height": 524, + "id": "chatOpenAI_1", + "position": { + "x": 691.5132411896494, + "y": -533.1696369549378 + }, + "type": "customNode", + "data": { + "id": "chatOpenAI_1", + "label": "ChatOpenAI", + "name": "chatOpenAI", + "type": "ChatOpenAI", + "baseClasses": ["ChatOpenAI", "BaseChatModel", "BaseLanguageModel", "BaseLangChain"], + "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_1-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-3.5-turbo", + "name": "gpt-3.5-turbo" + }, + { + "label": "gpt-3.5-turbo-0301", + "name": "gpt-3.5-turbo-0301" + } + ], + "default": "gpt-3.5-turbo", + "optional": true, + "id": "chatOpenAI_1-input-modelName-options" + }, + { + "label": "Temperature", + "name": "temperature", + "type": "number", + "default": 0.9, + "optional": true, + "id": "chatOpenAI_1-input-temperature-number" + }, + { + "label": "Max Tokens", + "name": "maxTokens", + "type": "number", + "optional": true, + "additionalParams": true, + "id": "chatOpenAI_1-input-maxTokens-number" + }, + { + "label": "Top Probability", + "name": "topP", + "type": "number", + "optional": true, + "additionalParams": true, + "id": "chatOpenAI_1-input-topP-number" + }, + { + "label": "Frequency Penalty", + "name": "frequencyPenalty", + "type": "number", + "optional": true, + "additionalParams": true, + "id": "chatOpenAI_1-input-frequencyPenalty-number" + }, + { + "label": "Presence Penalty", + "name": "presencePenalty", + "type": "number", + "optional": true, + "additionalParams": true, + "id": "chatOpenAI_1-input-presencePenalty-number" + }, + { + "label": "Timeout", + "name": "timeout", + "type": "number", + "optional": true, + "additionalParams": true, + "id": "chatOpenAI_1-input-timeout-number" + } + ], + "inputAnchors": [], + "inputs": { + "modelName": "gpt-3.5-turbo", + "temperature": 0.9, + "maxTokens": "", + "topP": "", + "frequencyPenalty": "", + "presencePenalty": "", + "timeout": "" + }, + "outputAnchors": [ + { + "id": "chatOpenAI_1-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain", + "name": "chatOpenAI", + "label": "ChatOpenAI", + "type": "ChatOpenAI | BaseChatModel | BaseLanguageModel | BaseLangChain" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "positionAbsolute": { + "x": 691.5132411896494, + "y": -533.1696369549378 + }, + "dragging": false + }, + { + "width": 300, + "height": 280, + "id": "webBrowser_0", + "position": { + "x": 1091.0866823400172, + "y": -16.43806989958216 + }, + "type": "customNode", + "data": { + "id": "webBrowser_0", + "label": "Web Browser", + "name": "webBrowser", + "type": "WebBrowser", + "baseClasses": ["WebBrowser", "Tool", "StructuredTool", "BaseLangChain"], + "category": "Tools", + "description": "Gives agent the ability to visit a website and extract information", + "inputParams": [], + "inputAnchors": [ + { + "label": "Language Model", + "name": "model", + "type": "BaseLanguageModel", + "id": "webBrowser_0-input-model-BaseLanguageModel" + }, + { + "label": "Embeddings", + "name": "embeddings", + "type": "Embeddings", + "id": "webBrowser_0-input-embeddings-Embeddings" + } + ], + "inputs": { + "model": "{{chatOpenAI_1.data.instance}}", + "embeddings": "{{openAIEmbeddings_0.data.instance}}" + }, + "outputAnchors": [ + { + "id": "webBrowser_0-output-webBrowser-WebBrowser|Tool|StructuredTool|BaseLangChain", + "name": "webBrowser", + "label": "WebBrowser", + "type": "WebBrowser | Tool | StructuredTool | BaseLangChain" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "positionAbsolute": { + "x": 1091.0866823400172, + "y": -16.43806989958216 + }, + "dragging": false + } + ], + "edges": [ + { + "source": "bufferMemory_0", + "sourceHandle": "bufferMemory_0-output-bufferMemory-BufferMemory|BaseChatMemory|BaseMemory", + "target": "conversationalAgent_0", + "targetHandle": "conversationalAgent_0-input-memory-BaseChatMemory", + "type": "buttonedge", + "id": "bufferMemory_0-bufferMemory_0-output-bufferMemory-BufferMemory|BaseChatMemory|BaseMemory-conversationalAgent_0-conversationalAgent_0-input-memory-BaseChatMemory", + "data": { + "label": "" + } + }, + { + "source": "chatOpenAI_1", + "sourceHandle": "chatOpenAI_1-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain", + "target": "webBrowser_0", + "targetHandle": "webBrowser_0-input-model-BaseLanguageModel", + "type": "buttonedge", + "id": "chatOpenAI_1-chatOpenAI_1-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain-webBrowser_0-webBrowser_0-input-model-BaseLanguageModel", + "data": { + "label": "" + } + }, + { + "source": "openAIEmbeddings_0", + "sourceHandle": "openAIEmbeddings_0-output-openAIEmbeddings-OpenAIEmbeddings|Embeddings", + "target": "webBrowser_0", + "targetHandle": "webBrowser_0-input-embeddings-Embeddings", + "type": "buttonedge", + "id": "openAIEmbeddings_0-openAIEmbeddings_0-output-openAIEmbeddings-OpenAIEmbeddings|Embeddings-webBrowser_0-webBrowser_0-input-embeddings-Embeddings", + "data": { + "label": "" + } + }, + { + "source": "chatOpenAI_0", + "sourceHandle": "chatOpenAI_0-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain", + "target": "conversationalAgent_0", + "targetHandle": "conversationalAgent_0-input-model-BaseChatModel", + "type": "buttonedge", + "id": "chatOpenAI_0-chatOpenAI_0-output-chatOpenAI-ChatOpenAI|BaseChatModel|BaseLanguageModel|BaseLangChain-conversationalAgent_0-conversationalAgent_0-input-model-BaseChatModel", + "data": { + "label": "" + } + }, + { + "source": "webBrowser_0", + "sourceHandle": "webBrowser_0-output-webBrowser-WebBrowser|Tool|StructuredTool|BaseLangChain", + "target": "conversationalAgent_0", + "targetHandle": "conversationalAgent_0-input-tools-Tool", + "type": "buttonedge", + "id": "webBrowser_0-webBrowser_0-output-webBrowser-WebBrowser|Tool|StructuredTool|BaseLangChain-conversationalAgent_0-conversationalAgent_0-input-tools-Tool", + "data": { + "label": "" + } + } + ] +} From 5ed71a12c0a1c6ae180eb7af95e3950f8fd27069 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 11 May 2023 09:57:42 +0100 Subject: [PATCH 7/9] =?UTF-8?q?=F0=9F=A5=B3=20flowise-components@1.2.6=20r?= =?UTF-8?q?elease?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/components/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/package.json b/packages/components/package.json index bf7392310..0e13c4fb3 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "flowise-components", - "version": "1.2.5", + "version": "1.2.6", "description": "Flowiseai Components", "main": "dist/src/index", "types": "dist/src/index.d.ts", From ee880ff550ae28f83e3458a8ce952f7cec5480af Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 11 May 2023 09:58:36 +0100 Subject: [PATCH 8/9] =?UTF-8?q?=F0=9F=A5=B3=20flowise-ui@1.2.4=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/package.json b/packages/ui/package.json index 1e22bca3e..44f0707ad 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "flowise-ui", - "version": "1.2.3", + "version": "1.2.4", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://flowiseai.com", "author": { From 6b49cfa6f083a36a8067c8cfd9abb7a781a4c6c7 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 11 May 2023 09:59:37 +0100 Subject: [PATCH 9/9] =?UTF-8?q?=F0=9F=A5=B3=20flowise@1.2.5=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- packages/server/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1d1b2d3e1..af805599b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "flowise", - "version": "1.2.4", + "version": "1.2.5", "private": true, "homepage": "https://flowiseai.com", "workspaces": [ diff --git a/packages/server/package.json b/packages/server/package.json index c30ac8c1f..2886e6e83 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "flowise", - "version": "1.2.4", + "version": "1.2.5", "description": "Flowiseai Server", "main": "dist/index", "types": "dist/index.d.ts",