diff --git a/packages/server/marketplaces/chatflows/Conversational Retrieval Agent.json b/packages/server/marketplaces/chatflows/Conversational Retrieval Agent.json index 7c5c38e2..ede7215d 100644 --- a/packages/server/marketplaces/chatflows/Conversational Retrieval Agent.json +++ b/packages/server/marketplaces/chatflows/Conversational Retrieval Agent.json @@ -1,5 +1,6 @@ { "description": "Agent optimized for vector retrieval during conversation and answering questions based on previous dialogue.", + "badge": "POPULAR", "nodes": [ { "width": 300, diff --git a/packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json b/packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json index 38e780cc..ba6c90b7 100644 --- a/packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json +++ b/packages/server/marketplaces/chatflows/Conversational Retrieval QA Chain.json @@ -1,5 +1,6 @@ { "description": "Text file QnA using conversational retrieval QA chain", + "badge": "POPULAR", "nodes": [ { "width": 300, diff --git a/packages/server/marketplaces/chatflows/Flowise Docs QnA.json b/packages/server/marketplaces/chatflows/Flowise Docs QnA.json index 2928d29d..31a7df07 100644 --- a/packages/server/marketplaces/chatflows/Flowise Docs QnA.json +++ b/packages/server/marketplaces/chatflows/Flowise Docs QnA.json @@ -1,5 +1,6 @@ { "description": "Flowise Docs Github QnA using conversational retrieval QA chain", + "badge": "POPULAR", "nodes": [ { "width": 300, diff --git a/packages/server/marketplaces/chatflows/List Output Parser.json b/packages/server/marketplaces/chatflows/List Output Parser.json index c96dd530..33841d15 100644 --- a/packages/server/marketplaces/chatflows/List Output Parser.json +++ b/packages/server/marketplaces/chatflows/List Output Parser.json @@ -1,5 +1,6 @@ { "description": "Return response as a list (array) instead of a string/text", + "badge": "NEW", "nodes": [ { "width": 300, diff --git a/packages/server/marketplaces/chatflows/OpenAI Assistant.json b/packages/server/marketplaces/chatflows/OpenAI Assistant.json new file mode 100644 index 00000000..2f9a860c --- /dev/null +++ b/packages/server/marketplaces/chatflows/OpenAI Assistant.json @@ -0,0 +1,234 @@ +{ + "description": "OpenAI Assistant that has instructions and can leverage models, tools, and knowledge to respond to user queries", + "badge": "NEW", + "nodes": [ + { + "width": 300, + "height": 327, + "id": "openAIAssistant_0", + "position": { + "x": 895.3722263184736, + "y": 118.50795801755544 + }, + "type": "customNode", + "data": { + "id": "openAIAssistant_0", + "label": "OpenAI Assistant", + "version": 1, + "name": "openAIAssistant", + "type": "OpenAIAssistant", + "baseClasses": ["OpenAIAssistant"], + "category": "Agents", + "description": "An agent that uses OpenAI Assistant API to pick the tool and args to call", + "inputParams": [ + { + "label": "Select Assistant", + "name": "selectedAssistant", + "type": "asyncOptions", + "loadMethod": "listAssistants", + "id": "openAIAssistant_0-input-selectedAssistant-asyncOptions" + } + ], + "inputAnchors": [ + { + "label": "Allowed Tools", + "name": "tools", + "type": "Tool", + "list": true, + "id": "openAIAssistant_0-input-tools-Tool" + } + ], + "inputs": { + "selectedAssistant": "", + "tools": ["{{calculator_0.data.instance}}", "{{serper_0.data.instance}}", "{{customTool_0.data.instance}}"] + }, + "outputAnchors": [ + { + "id": "openAIAssistant_0-output-openAIAssistant-OpenAIAssistant", + "name": "openAIAssistant", + "label": "OpenAIAssistant", + "type": "OpenAIAssistant" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 895.3722263184736, + "y": 118.50795801755544 + } + }, + { + "width": 300, + "height": 143, + "id": "calculator_0", + "position": { + "x": 454.74423492660145, + "y": -56.08375600705064 + }, + "type": "customNode", + "data": { + "id": "calculator_0", + "label": "Calculator", + "version": 1, + "name": "calculator", + "type": "Calculator", + "baseClasses": ["Calculator", "Tool", "StructuredTool", "Runnable"], + "category": "Tools", + "description": "Perform calculations on response", + "inputParams": [], + "inputAnchors": [], + "inputs": {}, + "outputAnchors": [ + { + "id": "calculator_0-output-calculator-Calculator|Tool|StructuredTool|Runnable", + "name": "calculator", + "label": "Calculator", + "type": "Calculator | Tool | StructuredTool | Runnable" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "positionAbsolute": { + "x": 454.74423492660145, + "y": -56.08375600705064 + }, + "dragging": false + }, + { + "width": 300, + "height": 277, + "id": "customTool_0", + "position": { + "x": 454.43871855431365, + "y": 401.2171774551178 + }, + "type": "customNode", + "data": { + "id": "customTool_0", + "label": "Custom Tool", + "version": 1, + "name": "customTool", + "type": "CustomTool", + "baseClasses": ["CustomTool", "Tool", "StructuredTool", "Runnable"], + "category": "Tools", + "description": "Use custom tool you've created in Flowise within chatflow", + "inputParams": [ + { + "label": "Select Tool", + "name": "selectedTool", + "type": "asyncOptions", + "loadMethod": "listTools", + "id": "customTool_0-input-selectedTool-asyncOptions" + } + ], + "inputAnchors": [], + "inputs": { + "selectedTool": "" + }, + "outputAnchors": [ + { + "id": "customTool_0-output-customTool-CustomTool|Tool|StructuredTool|Runnable", + "name": "customTool", + "label": "CustomTool", + "type": "CustomTool | Tool | StructuredTool | Runnable" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "positionAbsolute": { + "x": 454.43871855431365, + "y": 401.2171774551178 + }, + "dragging": false + }, + { + "width": 300, + "height": 277, + "id": "serper_0", + "position": { + "x": 452.2514874331948, + "y": 99.6087116015905 + }, + "type": "customNode", + "data": { + "id": "serper_0", + "label": "Serper", + "version": 1, + "name": "serper", + "type": "Serper", + "baseClasses": ["Serper", "Tool", "StructuredTool", "Runnable"], + "category": "Tools", + "description": "Wrapper around Serper.dev - Google Search API", + "inputParams": [ + { + "label": "Connect Credential", + "name": "credential", + "type": "credential", + "credentialNames": ["serperApi"], + "id": "serper_0-input-credential-credential" + } + ], + "inputAnchors": [], + "inputs": {}, + "outputAnchors": [ + { + "id": "serper_0-output-serper-Serper|Tool|StructuredTool|Runnable", + "name": "serper", + "label": "Serper", + "type": "Serper | Tool | StructuredTool | Runnable" + } + ], + "outputs": {}, + "selected": false + }, + "selected": false, + "positionAbsolute": { + "x": 452.2514874331948, + "y": 99.6087116015905 + }, + "dragging": false + } + ], + "edges": [ + { + "source": "calculator_0", + "sourceHandle": "calculator_0-output-calculator-Calculator|Tool|StructuredTool|Runnable", + "target": "openAIAssistant_0", + "targetHandle": "openAIAssistant_0-input-tools-Tool", + "type": "buttonedge", + "id": "calculator_0-calculator_0-output-calculator-Calculator|Tool|StructuredTool|Runnable-openAIAssistant_0-openAIAssistant_0-input-tools-Tool", + "data": { + "label": "" + } + }, + { + "source": "serper_0", + "sourceHandle": "serper_0-output-serper-Serper|Tool|StructuredTool|Runnable", + "target": "openAIAssistant_0", + "targetHandle": "openAIAssistant_0-input-tools-Tool", + "type": "buttonedge", + "id": "serper_0-serper_0-output-serper-Serper|Tool|StructuredTool|Runnable-openAIAssistant_0-openAIAssistant_0-input-tools-Tool", + "data": { + "label": "" + } + }, + { + "source": "customTool_0", + "sourceHandle": "customTool_0-output-customTool-CustomTool|Tool|StructuredTool|Runnable", + "target": "openAIAssistant_0", + "targetHandle": "openAIAssistant_0-input-tools-Tool", + "type": "buttonedge", + "id": "customTool_0-customTool_0-output-customTool-CustomTool|Tool|StructuredTool|Runnable-openAIAssistant_0-openAIAssistant_0-input-tools-Tool", + "data": { + "label": "" + } + } + ] +} diff --git a/packages/server/marketplaces/chatflows/Prompt Chaining with VectorStore.json b/packages/server/marketplaces/chatflows/Prompt Chaining with VectorStore.json index bca8db04..29f7e7aa 100644 --- a/packages/server/marketplaces/chatflows/Prompt Chaining with VectorStore.json +++ b/packages/server/marketplaces/chatflows/Prompt Chaining with VectorStore.json @@ -1,5 +1,6 @@ { "description": "Use chat history to rephrase user question, and answer the rephrased question using retrieved docs from vector store", + "badge": "POPULAR", "nodes": [ { "width": 300, diff --git a/packages/server/marketplaces/chatflows/Simple Conversation Chain.json b/packages/server/marketplaces/chatflows/Simple Conversation Chain.json index 57ff348a..f5fac38e 100644 --- a/packages/server/marketplaces/chatflows/Simple Conversation Chain.json +++ b/packages/server/marketplaces/chatflows/Simple Conversation Chain.json @@ -1,5 +1,6 @@ { "description": "Basic example of Conversation Chain with built-in memory - works exactly like ChatGPT", + "badge": "POPULAR", "nodes": [ { "width": 300, diff --git a/packages/server/marketplaces/chatflows/Structured Output Parser.json b/packages/server/marketplaces/chatflows/Structured Output Parser.json index 38947f93..77a8bbfd 100644 --- a/packages/server/marketplaces/chatflows/Structured Output Parser.json +++ b/packages/server/marketplaces/chatflows/Structured Output Parser.json @@ -1,5 +1,6 @@ { "description": "Return response as a specified JSON structure instead of a string/text", + "badge": "NEW", "nodes": [ { "width": 300, diff --git a/packages/server/marketplaces/chatflows/WebPage QnA.json b/packages/server/marketplaces/chatflows/WebPage QnA.json index da21cb2d..c4bbc22d 100644 --- a/packages/server/marketplaces/chatflows/WebPage QnA.json +++ b/packages/server/marketplaces/chatflows/WebPage QnA.json @@ -1,5 +1,6 @@ { "description": "Scrape web pages for QnA with long term memory Motorhead and return source documents", + "badge": "POPULAR", "nodes": [ { "width": 300, diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 8968c3d4..d10c2903 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -1074,6 +1074,7 @@ export class App { id: index, name: file.split('.json')[0], flowData: fileData.toString(), + badge: fileDataObj?.badge, description: fileDataObj?.description || '' } templates.push(template) diff --git a/packages/ui/src/views/marketplaces/index.js b/packages/ui/src/views/marketplaces/index.js index 49c692db..665341c4 100644 --- a/packages/ui/src/views/marketplaces/index.js +++ b/packages/ui/src/views/marketplaces/index.js @@ -4,7 +4,7 @@ import { useSelector } from 'react-redux' import PropTypes from 'prop-types' // material-ui -import { Grid, Box, Stack, Tabs, Tab } from '@mui/material' +import { Grid, Box, Stack, Tabs, Tab, Badge } from '@mui/material' import { useTheme } from '@mui/material/styles' import { IconHierarchy, IconTool } from '@tabler/icons' @@ -157,7 +157,22 @@ const Marketplace = () => { getAllChatflowsMarketplacesApi.data && getAllChatflowsMarketplacesApi.data.map((data, index) => ( - goToCanvas(data)} data={data} images={images[data.id]} /> + {data.badge && ( + + goToCanvas(data)} data={data} images={images[data.id]} /> + + )} + {!data.badge && ( + goToCanvas(data)} data={data} images={images[data.id]} /> + )} ))} @@ -168,7 +183,20 @@ const Marketplace = () => { getAllToolsMarketplacesApi.data && getAllToolsMarketplacesApi.data.map((data, index) => ( - goToTool(data)} /> + {data.badge && ( + + goToTool(data)} /> + + )} + {!data.badge && goToTool(data)} />} ))}