Marketplace : Added categories to chatflows

This commit is contained in:
vinodkiran
2024-02-05 15:09:44 -05:00
parent cc6a1f04c6
commit 8990b78e10
46 changed files with 67 additions and 38 deletions
@@ -1,5 +1,6 @@
{ {
"description": "Use OpenAI Function Agent and Chain to automatically decide which API to call, generating url and body request from conversation", "description": "Use OpenAI Function Agent and Chain to automatically decide which API to call, generating url and body request from conversation",
"categories": "Buffer Memory,ChainTool,API Chain,ChatOpenAI,OpenAI Function Agent,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Given API docs, agent automatically decide which API to call, generating url and body request from conversation", "description": "Given API docs, agent automatically decide which API to call, generating url and body request from conversation",
"categories": "Buffer Memory,ChainTool,API Chain,ChatOpenAI,Conversational Agent,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Output antonym of given user input using few-shot prompt template built with examples", "description": "Output antonym of given user input using few-shot prompt template built with examples",
"categories": "Few Shot Prompt,ChatOpenAI,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Use AutoGPT - Autonomous agent with chain of thoughts for self-guided task completion", "description": "Use AutoGPT - Autonomous agent with chain of thoughts for self-guided task completion",
"categories": "AutoGPT,SERP Tool,File Read/Write,ChatOpenAI,Pinecone,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Use BabyAGI to create tasks and reprioritize for a given objective", "description": "Use BabyAGI to create tasks and reprioritize for a given objective",
"categories": "BabyAGI,ChatOpenAI,Pinecone,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Analyse and summarize CSV data", "description": "Analyse and summarize CSV data",
"categories": "CSV Agent,ChatOpenAI,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Engage with data sources such as YouTube Transcripts, Google, and more through intelligent Q&A interactions", "description": "Engage with data sources such as YouTube Transcripts, Google, and more through intelligent Q&A interactions",
"categories": "Memory Vector Store,SearchAPI,ChatOpenAI,Conversational Retrieval QA Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Use ChatGPT Plugins within LangChain abstractions with GET and POST Tools", "description": "Use ChatGPT Plugins within LangChain abstractions with GET and POST Tools",
"categories": "ChatGPT Plugin,HTTP GET/POST,ChatOpenAI,MRKL Agent,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Use Anthropic Claude with 200k context window to ingest whole document for QnA", "description": "Use Anthropic Claude with 200k context window to ingest whole document for QnA",
"categories": "Buffer Memory,Prompt Template,Conversation Chain,ChatAnthropic,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Answer question based on retrieved documents (context) with built-in memory to remember conversation using LlamaIndex", "description": "Answer question based on retrieved documents (context) with built-in memory to remember conversation using LlamaIndex",
"categories": "Text File,Prompt Template,ChatOpenAI,Conversation Chain,Pinecone,LlamaIndex,Redis",
"badge": "NEW", "badge": "NEW",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "A conversational agent for a chat model which utilize chat specific prompts", "description": "A conversational agent for a chat model which utilize chat specific prompts",
"categories": "Calculator Tool,Buffer Memory,SerpAPI,ChatOpenAI,Conversational Agent,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Agent optimized for vector retrieval during conversation and answering questions based on previous dialogue.", "description": "Agent optimized for vector retrieval during conversation and answering questions based on previous dialogue.",
"categories": "Retriever Tool,Buffer Memory,ChatOpenAI,Conversational Retrieval Agent, Pinecone,Langchain",
"badge": "POPULAR", "badge": "POPULAR",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Text file QnA using conversational retrieval QA chain", "description": "Text file QnA using conversational retrieval QA chain",
"categories": "TextFile,ChatOpenAI,Conversational Retrieval QA Chain,Pinecone,Langchain",
"badge": "POPULAR", "badge": "POPULAR",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Flowise Docs Github QnA using conversational retrieval QA chain", "description": "Flowise Docs Github QnA using conversational retrieval QA chain",
"categories": "Memory Vector Store,Github Loader,ChatOpenAI,Conversational Retrieval QA Chain,Langchain",
"badge": "POPULAR", "badge": "POPULAR",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Simple LLM Chain using HuggingFace Inference API on falcon-7b-instruct model", "description": "Simple LLM Chain using HuggingFace Inference API on falcon-7b-instruct model",
"categories": "HuggingFace,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Split flows based on if else condition", "description": "Split flows based on if else condition",
"categories": "IfElse Function,ChatOpenAI,OpenAI,LLM Chain,Langchain",
"badge": "new", "badge": "new",
"nodes": [ "nodes": [
{ {
@@ -1,6 +1,7 @@
{ {
"description": "Generate image using Replicate Stability text-to-image generative AI model", "description": "Generate image using Replicate Stability text-to-image generative AI model",
"badge": "NEW", "badge": "NEW",
"categories": "Replicate,ChatOpenAI,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,6 +1,7 @@
{ {
"description": "Detect text that could generate harmful output and prevent it from being sent to the language model", "description": "Detect text that could generate harmful output and prevent it from being sent to the language model",
"badge": "NEW", "badge": "NEW",
"categories": "Moderation,ChatOpenAI,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,6 +1,7 @@
{ {
"description": "Return response as a list (array) instead of a string/text", "description": "Return response as a list (array) instead of a string/text",
"badge": "NEW", "badge": "NEW",
"categories": "CSV Output Parser,ChatOpenAI,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,6 +1,7 @@
{ {
"description": "QnA chain using Ollama local LLM, LocalAI embedding model, and Faiss local vector store", "description": "QnA chain using Ollama local LLM, LocalAI embedding model, and Faiss local vector store",
"badge": "POPULAR", "badge": "POPULAR",
"categories": "Text File,ChatOllama,Conversational Retrieval QA Chain,Faiss,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Use long term memory like Zep to differentiate conversations between users with sessionId", "description": "Use long term memory like Zep to differentiate conversations between users with sessionId",
"categories": "ChatOpenAI,Conversational Retrieval QA Chain,Zep Memory,Qdrant,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Upsert multiple files with metadata and filter by it using conversational retrieval QA chain", "description": "Upsert multiple files with metadata and filter by it using conversational retrieval QA chain",
"categories": "Text File,PDF File,ChatOpenAI,Conversational Retrieval QA Chain,Pinecone,Langchain",
"badge": "POPULAR", "badge": "POPULAR",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "A chain that automatically picks an appropriate prompt from multiple prompts", "description": "A chain that automatically picks an appropriate prompt from multiple prompts",
"categories": "ChatOpenAI,Multi Prompt Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "A chain that automatically picks an appropriate retriever from multiple different vector databases", "description": "A chain that automatically picks an appropriate retriever from multiple different vector databases",
"categories": "ChatOpenAI,Multi Retrieval QA Chain,Pinecone,Chroma,Supabase,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Use the agent to choose between multiple different vector databases, with the ability to use other tools", "description": "Use the agent to choose between multiple different vector databases, with the ability to use other tools",
"categories": "Buffer Memory,ChatOpenAI,Chain Tool,Retrieval QA Chain,Redis,Faiss,Conversational Agent,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "An agent that uses OpenAI's Function Calling functionality to pick the tool and args to call", "description": "An agent that uses OpenAI's Function Calling functionality to pick the tool and args to call",
"categories": "Buffer Memory,Custom Tool, SerpAPI,OpenAI Function,Calculator Tool,ChatOpenAI,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "OpenAI Assistant that has instructions and can leverage models, tools, and knowledge to respond to user queries", "description": "OpenAI Assistant that has instructions and can leverage models, tools, and knowledge to respond to user queries",
"categories": "Custom Tool, SerpAPI,OpenAI Assistant,Calculator Tool,Langchain",
"badge": "NEW", "badge": "NEW",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Use chat history to rephrase user question, and answer the rephrased question using retrieved docs from vector store", "description": "Use chat history to rephrase user question, and answer the rephrased question using retrieved docs from vector store",
"categories": "ChatOpenAI,LLM Chain,SingleStore,Langchain",
"badge": "POPULAR", "badge": "POPULAR",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Use output from a chain as prompt for another chain", "description": "Use output from a chain as prompt for another chain",
"categories": "Custom Tool,OpenAI,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Stateless query engine designed to answer question over your data using LlamaIndex", "description": "Stateless query engine designed to answer question over your data using LlamaIndex",
"categories": "ChatAnthropic,Compact and Refine,Pinecone,LlamaIndex",
"badge": "NEW", "badge": "NEW",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "An agent that uses ReAct logic to decide what action to take", "description": "An agent that uses ReAct logic to decide what action to take",
"categories": "Calculator Tool,SerpAPI,ChatOpenAI,MRKL Agent,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Use Replicate API that runs Llama 13b v2 model with LLMChain", "description": "Use Replicate API that runs Llama 13b v2 model with LLMChain",
"categories": "Replicate,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Answer questions over a SQL database", "description": "Answer questions over a SQL database",
"categories": "ChatOpenAI,Sql Database Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Manually construct prompts to query a SQL database", "description": "Manually construct prompts to query a SQL database",
"categories": "IfElse Function,Variable Set/Get,Custom JS Function,ChatOpenAI,LLM Chain,Langchain",
"badge": "new", "badge": "new",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Simple chat engine to handle back and forth conversations using LlamaIndex", "description": "Simple chat engine to handle back and forth conversations using LlamaIndex",
"categories": "BufferMemory,AzureChatOpenAI,LlamaIndex",
"badge": "NEW", "badge": "NEW",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Basic example of Conversation Chain with built-in memory - works exactly like ChatGPT", "description": "Basic example of Conversation Chain with built-in memory - works exactly like ChatGPT",
"categories": "Buffer Memory,ChatOpenAI,Conversation Chain,Langchain",
"badge": "POPULAR", "badge": "POPULAR",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Basic example of stateless (no memory) LLM Chain with a Prompt Template and LLM Model", "description": "Basic example of stateless (no memory) LLM Chain with a Prompt Template and LLM Model",
"categories": "OpenAI,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Return response as a specified JSON structure instead of a string/text", "description": "Return response as a specified JSON structure instead of a string/text",
"categories": "Structured Output Parser,ChatOpenAI,LLM Chain,Langchain",
"badge": "NEW", "badge": "NEW",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Breaks down query into sub questions for each relevant data source, then combine into final response", "description": "Breaks down query into sub questions for each relevant data source, then combine into final response",
"categories": "Sub Question Query Engine,Sticky Note,QueryEngine Tool,Compact and Refine,ChatOpenAI,Pinecone,LlamaIndex",
"badge": "NEW", "badge": "NEW",
"nodes": [ "nodes": [
{ {
@@ -1,5 +1,6 @@
{ {
"description": "Language translation using LLM Chain with a Chat Prompt Template and Chat Model", "description": "Language translation using LLM Chain with a Chat Prompt Template and Chat Model",
"categories": "Chat Prompt Template,ChatOpenAI,LLM Chain,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,4 +1,6 @@
{ {
"description": "QA chain for Vectara",
"categories": "Vectara QA Chain,Vectara,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Conversational Agent with ability to visit a website and extract information", "description": "Conversational Agent with ability to visit a website and extract information",
"categories": "Buffer Memory,Web Browser,ChatOpenAI,Conversational Agent,Langchain",
"nodes": [ "nodes": [
{ {
"width": 300, "width": 300,
@@ -1,5 +1,6 @@
{ {
"description": "Scrape web pages for QnA with long term memory Motorhead and return source documents", "description": "Scrape web pages for QnA with long term memory Motorhead and return source documents",
"categories": "HtmlToMarkdown,Cheerio Web Scraper,ChatOpenAI,Redis,Pinecone,Langchain",
"badge": "POPULAR", "badge": "POPULAR",
"nodes": [ "nodes": [
{ {
+2
View File
@@ -1237,6 +1237,7 @@ export class App {
templateName: file.split('.json')[0], templateName: file.split('.json')[0],
flowData: fileData.toString(), flowData: fileData.toString(),
badge: fileDataObj?.badge, badge: fileDataObj?.badge,
categories: fileDataObj?.categories,
type: 'Chatflow', type: 'Chatflow',
description: fileDataObj?.description || '' description: fileDataObj?.description || ''
} }
@@ -1253,6 +1254,7 @@ export class App {
...fileDataObj, ...fileDataObj,
id: index, id: index,
type: 'Tool', type: 'Tool',
categories: '',
templateName: file.split('.json')[0] templateName: file.split('.json')[0]
} }
templates.push(template) templates.push(template)
@@ -103,45 +103,27 @@ export const MarketplaceTable = ({ data, images, filterFunction, filterByBadge,
</Typography> </Typography>
</TableCell> </TableCell>
<TableCell key='2'> <TableCell key='2'>
{row.type === 'Chatflow' && images[row.id] && ( <div
<div style={{
style={{ display: 'flex',
display: 'flex', flexDirection: 'row',
flexDirection: 'row', flexWrap: 'wrap',
flexWrap: 'wrap', marginTop: 5
marginTop: 5 }}
}} >
> {row.categories &&
{images[row.id] row.categories
.slice(0, images[row.id].length > 5 ? 5 : images[row.id].length) .split(',')
.map((img) => ( .map((tag, index) => (
<div <Chip
key={img} variant='outlined'
style={{ key={index}
width: 35, size='small'
height: 35, label={tag.toUpperCase()}
marginRight: 5, style={{ marginRight: 3, marginBottom: 3 }}
borderRadius: '50%', />
backgroundColor: 'white',
marginTop: 5
}}
>
<img
style={{ width: '100%', height: '100%', padding: 5, objectFit: 'contain' }}
alt=''
src={img}
/>
</div>
))} ))}
{images[row.id].length > 5 && ( </div>
<Typography
sx={{ alignItems: 'center', display: 'flex', fontSize: '.8rem', fontWeight: 200 }}
>
+ {images[row.id].length - 5} More
</Typography>
)}
</div>
)}
</TableCell> </TableCell>
<TableCell key='3'> <TableCell key='3'>
<Typography> <Typography>
@@ -129,6 +129,7 @@ const Marketplace = () => {
function filterFlows(data) { function filterFlows(data) {
return ( return (
data.categories?.toLowerCase().indexOf(search.toLowerCase()) > -1 ||
data.templateName.toLowerCase().indexOf(search.toLowerCase()) > -1 || data.templateName.toLowerCase().indexOf(search.toLowerCase()) > -1 ||
(data.description && data.description.toLowerCase().indexOf(search.toLowerCase()) > -1) (data.description && data.description.toLowerCase().indexOf(search.toLowerCase()) > -1)
) )