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)} />}
))}