# Welcome to Tailwinds

Tailwinds is the "UI for AI" platform designed to simplify the creation of AI-powered applications, workflows, chatbots, and APIs.

**Tailwinds is perfect for:**

* Small business
* Startup's
* Enterprise's who are looking to innovate

Tailwinds provides a **flexible, fully-managed solution** that keeps pace with the rapidly evolving AI landscape without the traditional barriers of extensive coding knowledge, high costs, or complex system management.

{% @supademo/embed demoId="clytl9yp812ofz9kdy0l3w8f3" url="<https://app.supademo.com/demo/clytl9yp812ofz9kdy0l3w8f3>" %}

## New to GenAI and don't know where to start? :point\_down:

[Demos and Use-cases](/demos) - Review dozens of use cases and demos

[GenAI University](/genai-university/syllabus) - Learn the basics to advanced techniques

## How does Tailwinds work?

Tailwinds operates on a user-friendly, visual interface that guides you through the process of building AI-powered solutions:

1. **Visual Workflow Builder**: Our intuitive drag-and-drop interface allows you to design complex AI workflows without writing a single line of code.
2. **Integration of Popular AI Tools**: Tailwinds leverages industry-standard solutions like LangChain and LlamaIndex, ensuring flexibility and compatibility with a wide range of AI technologies.
3. **Low-Code Wizards**: Step-by-step wizards help you configure your AI applications, from chatbots to custom APIs, making the process accessible even to those new to AI development.
4. **Customizable Templates**: Start with pre-built templates and customize them to fit your specific needs, accelerating your development process.
5. **Seamless Deployment**: Once your application is ready, Tailwinds handles the deployment, scaling, and management, allowing you to focus on your business objectives.

## Tailwinds' Superpower

1. **Accessibility**: Tailwinds breaks down the barriers to AI adoption, making it possible for organizations of all sizes to leverage cutting-edge AI technology without a massive upfront investment or specialized expertise.
2. **Flexibility**: As the AI landscape evolves, so does Tailwinds. Our platform is designed to integrate new AI solutions seamlessly, ensuring your applications remain at the forefront of technology.
3. **Fully Managed**: Say goodbye to the headaches of system management. Tailwinds takes care of the underlying infrastructure, updates, and scaling, allowing you to focus on creating value for your business.
4. **Rapid Prototyping and Deployment**: Turn your AI ideas into reality in days, not months. Tailwinds accelerates the development cycle, allowing you to quickly iterate and deploy AI-powered solutions.

For support and further discussion, head over to our website [Tailwinds](https://innovativesol.com/contact/).


# Chatflows


# LangChain

LangChain Agent Nodes

***

By themselves, language models can't take actions - they just output text.

Agents are systems that use an LLM as a reasoning enginer to determine which actions to take and what the inputs to those actions should be. The results of those actions can then be fed back into the agent and it determine whether more actions are needed, or whether it is okay to finish.

### Agent Nodes:

* [Airtable Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/airtable-agent.md)
* [AutoGPT](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/autogpt.md)
* [BabyAGI](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/babyagi.md)
* [CSV Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/csv-agent.md)
* [Conversational Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/conversational-agent.md)
* [Conversational Retrieval Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/broken-reference/README.md)
* [MistralAI Tool Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/broken-reference/README.md)
* [OpenAI Assistant](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/openai-assistant/README.md)
* [OpenAI Function Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/broken-reference/README.md)
* [OpenAI Tool Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/llamaindex/agents/openai-tool-agent.md)
* [ReAct Agent Chat](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/react-agent-chat.md)
* [ReAct Agent LLM](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/react-agent-llm.md)
* [Tool Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/tool-agent.md)
* [XML Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/xml-agent.md)


# Agents

LangChain Agent Nodes

***

By themselves, language models can't take actions - they just output text.

Agents are systems that use an LLM as a reasoning enginer to determine which actions to take and what the inputs to those actions should be. The results of those actions can then be fed back into the agent and it determine whether more actions are needed, or whether it is okay to finish.

### Agent Nodes:

* [Airtable Agent](/readme/chatflows/langchain/agents/airtable-agent)
* [AutoGPT](/readme/chatflows/langchain/agents/autogpt)
* [BabyAGI](/readme/chatflows/langchain/agents/babyagi)
* [CSV Agent](/readme/chatflows/langchain/agents/csv-agent)
* [Conversational Agent](/readme/chatflows/langchain/agents/conversational-agent)
* [Conversational Retrieval Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/agents/broken-reference/README.md)
* [MistralAI Tool Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/agents/broken-reference/README.md)
* [OpenAI Assistant](/readme/chatflows/langchain/agents/openai-assistant)
* [OpenAI Function Agent](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/agents/broken-reference/README.md)
* [OpenAI Tool Agent](/readme/chatflows/llamaindex/agents/openai-tool-agent)
* [ReAct Agent Chat](/readme/chatflows/langchain/agents/react-agent-chat)
* [ReAct Agent LLM](/readme/chatflows/langchain/agents/react-agent-llm)
* [Tool Agent](/readme/chatflows/langchain/agents/tool-agent)
* [XML Agent](/readme/chatflows/langchain/agents/xml-agent)


# Airtable Agent

Agent used to to answer queries on Airtable table.

<figure><img src="/files/VMpgbU7UbRCwDkaYD7q4" alt="" width="271"><figcaption><p>Airtable Agent Node</p></figcaption></figure>


# AutoGPT

Autonomous agent with chain of thoughts for self-guided task completion.

<figure><img src="/files/Ej8rEsMesskhIFgMG7s8" alt="" width="277"><figcaption><p>AutoGPT Node</p></figcaption></figure>


# BabyAGI

Task Driven Autonomous Agent which creates new task and reprioritizes task list based on objective

<figure><img src="/files/G46kUl0FaOYVeu54n345" alt="" width="275"><figcaption><p>BabyAGI Node</p></figcaption></figure>


# CSV Agent

Agent used to answer queries on CSV data.

<figure><img src="/files/brqtnEZF8oMd77KxNDeF" alt="" width="273"><figcaption><p>CSV Agent Node</p></figcaption></figure>


# Conversational Agent

Conversational agent for a chat model. It will utilize chat specific prompts.

<figure><img src="/files/4e4F7kNBVvZqQXv2siJg" alt="" width="271"><figcaption><p>Conversational Agent Node</p></figcaption></figure>


# OpenAI Assistant

An agent that uses OpenAI Assistant API to pick the tool and args to call.

<figure><img src="/files/OtOFEqtTl8obrMqh1mOv" alt="" width="272"><figcaption><p>OpenAI Assistant</p></figcaption></figure>


# Threads

[Threads](https://platform.openai.com/docs/assistants/how-it-works/managing-threads-and-messages) is only used when an OpenAI Assistant is being used. It is a conversation session between an Assistant and a user. Threads store messages and automatically handle truncation to fit content into a model’s context.

<figure><img src="/files/XhBwuh73oM0Kf3HpvryB" alt=""><figcaption></figcaption></figure>

## Separate conversations for multiple users

### UI & Embedded Chat

By default, UI and Embedded Chat will automatically separate threads for multiple users conversations. This is done by generating a unique **`chatId`** for each new interaction. That logic is handled under the hood by Tailwinds.

### Prediction API

POST /`api/v1/prediction/{your-chatflowid}`, specify the **`chatId`** . Same thread will be used for the same chatId.

```json
{
    "question": "hello!",
    "chatId": "user1"
}
```

### Message API

* GET `/api/v1/chatmessage/{your-chatflowid}`
* DELETE `/api/v1/chatmessage/{your-chatflowid}`

You can also filter via **`chatId` -** `/api/v1/chatmessage/{your-chatflowid}?chatId={your-chatid}`

All conversations can be visualized and managed from UI as well:

<figure><img src="/files/AKRDQraA3oxfM0wbDTor" alt=""><figcaption></figcaption></figure>


# ReAct Agent Chat

Agent that uses the [ReAct](https://react-lm.github.io/) (Reasoning and Acting) logic to decide what action to take, optimized to be used with Chat Models.

<figure><img src="/files/GAMUF6fQW5LituD9Xynr" alt="" width="325"><figcaption></figcaption></figure>

<figure><img src="/files/KpHjCehl8RgrF2b9MwU7" alt="" width="336"><figcaption><p>ReAct Agent Chat Node</p></figcaption></figure>


# ReAct Agent LLM

Agent that uses the [ReAct](https://react-lm.github.io/) (Reasoning and Acting) logic to decide what action to take, optimized to be used with Non Chat Models.

<figure><img src="/files/YisQE1EhAIvXrPOvLbwD" alt="" width="325"><figcaption></figcaption></figure>

<figure><img src="/files/QX555yljauDjmaUXqyPR" alt="" width="335"><figcaption><p>ReAct Agent LLM Node</p></figcaption></figure>


# Tool Agent

Agent that uses Function Calling to pick the tools and args to call.

<figure><img src="/files/vtN6dmIYp4fLKUO6dmLL" alt="" width="337"><figcaption><p>Tool Agent Node</p></figcaption></figure>


# XML Agent

Agent that is designed for LLMs that are good for reasoning/writing XML (e.g: Anthropic Claude).

<figure><img src="/files/9McnofPmtFcdiGWXnb9A" alt="" width="335"><figcaption><p>XML Agent Node</p></figcaption></figure>


# Cache

LangChain Cache Nodes

***

Caching can save you money by reducing the number of API calls you make to the LLM provider, if you're often requesting the same completion multiple times. It can speed up your application by reducing the number of API calls you make to the LLM provider.

### Cache Nodes:

* [InMemory Cache](/readme/chatflows/langchain/cache/in-memory-cache)
* [InMemory Embedding Cache](/readme/chatflows/langchain/cache/inmemory-embedding-cache)
* [Momento Cache](/readme/chatflows/langchain/cache/momento-cache)
* [Redis Cache](/readme/chatflows/langchain/cache/redis-cache)
* [Redis Embeddings Cache](/readme/chatflows/langchain/cache/redis-embeddings-cache)
* [Upstash Redis Cache](/readme/chatflows/langchain/cache/upstash-redis-cache)


# InMemory Cache

Caches LLM response in local memory, will be cleared when app is restarted.

<figure><img src="/files/TFX0z66ZnQgtJQuuCvhk" alt="" width="344"><figcaption><p>InMemory Cache Node</p></figcaption></figure>


# InMemory Embedding Cache

Cache generated Embeddings in memory to avoid needing to recompute them.

<figure><img src="/files/ifHVTPTtt00nEWBmZObf" alt="" width="340"><figcaption><p>InMemory Embedding Cache Node</p></figcaption></figure>


# Momento Cache

Cache LLM response using Momento, a distributed, serverless cache.

<figure><img src="/files/L8SesvPKFAoTonfNDMeh" alt="" width="331"><figcaption><p>Momento Cache Node</p></figcaption></figure>


# Redis Cache

Cache LLM response in Redis, useful for sharing cache across multiple processes or servers.

<figure><img src="/files/7je5vRNWnG4gxSxEMuWM" alt="" width="331"><figcaption><p>Redis Cache Node</p></figcaption></figure>


# Redis Embeddings Cache

Cache LLM response in Redis, useful for sharing cache across multiple processes or servers.

<figure><img src="/files/6PWyEl0T4IzVqWMN8Epp" alt="" width="280"><figcaption><p>Redis Embeddings Cache Node</p></figcaption></figure>


# Upstash Redis Cache

Cache LLM response in Upstash Redis, serverless data for Redis and Kafka.

<figure><img src="/files/NpkYaFCm1Xrwmf9zMyZW" alt="" width="328"><figcaption><p>Upstash Redis Cache Node</p></figcaption></figure>


# Chains

LangChain Chain Nodes

***

In the context of chatbots and large language models, "chains" typically refer to sequences of text or conversation turns. These chains are used to store and manage the conversation history and context for the chatbot or language model. Chains help the model understand the ongoing conversation and provide coherent and contextually relevant responses.

Here's how chains work:

1. **Conversation History**: When a user interacts with a chatbot or language model, the conversation is often represented as a series of text messages or conversation turns. Each message from the user and the model is stored in chronological order to maintain the context of the conversation.
2. **Input and Output**: Each chain consists of both user input and model output. The user's input is usually referred to as the "input chain," while the model's responses are stored in the "output chain." This allows the model to refer back to previous messages in the conversation.
3. **Contextual Understanding**: By preserving the entire conversation history in these chains, the model can understand the context and refer to earlier messages to provide coherent and contextually relevant responses. This is crucial for maintaining a natural and meaningful conversation with users.
4. **Maximum Length**: Chains have a maximum length to manage memory usage and computational resources. When a chain becomes too long, older messages may be removed or truncated to make room for new messages. This can potentially lead to loss of context if important conversation details are removed.
5. **Continuation of Conversation**: In a real-time chatbot or language model interaction, the input chain is continually updated with the user's new messages, and the output chain is updated with the model's responses. This allows the model to keep track of the ongoing conversation and respond appropriately.

Chains are a fundamental concept in building and maintaining chatbot and language model conversations. They ensure that the model has access to the context it needs to generate meaningful and context-aware responses, making the interaction more engaging and useful for users.

### Chain Nodes:

* [GET API Chain](/readme/chatflows/langchain/chains/get-api-chain)
* [OpenAPI Chain](/readme/chatflows/langchain/chains/openapi-chain)
* [POST API Chain](/readme/chatflows/langchain/chains/post-api-chain)
* [Conversation Chain](/readme/chatflows/langchain/chains/conversation-chain)
* [Conversational Retrieval QA Chain](/readme/chatflows/langchain/chains/conversational-retrieval-qa-chain)
* [LLM Chain](/readme/chatflows/langchain/chains/llm-chain)
* [Multi Prompt Chain](/readme/chatflows/langchain/chains/multi-prompt-chain)
* [Multi Retrieval QA Chain](/readme/chatflows/langchain/chains/multi-retrieval-qa-chain)
* [Retrieval QA Chain](/readme/chatflows/langchain/chains/retrieval-qa-chain)
* [Sql Database Chain](/readme/chatflows/langchain/chains/sql-database-chain)
* [Vectara QA Chain](/readme/chatflows/langchain/chains/vectara-chain)
* [VectorDB QA Chain](/readme/chatflows/langchain/chains/vectordb-qa-chain)


# GET API Chain

Chain to run queries against GET API.

<figure><img src="/files/APSNjf4RLrztJcuebzAl" alt="" width="337"><figcaption><p>GET API Chain Node</p></figcaption></figure>


# OpenAPI Chain

Chain that automatically select and call APIs based only on an OpenAPI spec.

<figure><img src="/files/lPcmQTnmXLpFAjcZPQZB" alt="" width="335"><figcaption><p>OpenAPI Chain Node</p></figcaption></figure>


# POST API Chain

Chain to run queries against POST API.

<figure><img src="/files/kwwQwcirdOC762eYdxs5" alt="" width="337"><figcaption><p>POST API Chain Node</p></figcaption></figure>


# Conversation Chain

Chat models specific conversational chain with memory.

<figure><img src="/files/48lmQqlFx0tTOP5jNBgO" alt="" width="332"><figcaption><p>Conversation Chain Node</p></figcaption></figure>


# Conversational Retrieval QA Chain

A chain for performing question-answering tasks with a retrieval component.

<figure><img src="/files/14BBjHTMtXBz6w50ZJVX" alt=""><figcaption></figcaption></figure>

## Definitions

**A retrieval-based question-answering chain**, which integrates with a retrieval component and allows you to configure input parameters and perform question-answering tasks.\
**Retrieval-Based Chatbots:** Retrieval-based chatbots are chatbots that generate responses by selecting pre-defined responses from a database or a set of possible responses. They "retrieve" the most appropriate response based on the input from the user.\
**QA (Question Answering):** QA systems are designed to answer questions posed in natural language. They typically involve understanding the question and searching for or generating an appropriate answer.

## Inputs

* [Language Model](/readme/chatflows/langchain/chat-models)
* [Vector Store Retriever](/readme/chatflows/langchain/vector-stores)
* [Memory (optional)](/readme/chatflows/langchain/memory)

## Parameters

| Name                    | Description                                                                                                                                               |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Return Source Documents | To return citations/sources that were used to build up the response                                                                                       |
| System Message          | An instruction for LLM on how to answer query                                                                                                             |
| Chain Option            | Method on how to summarize, answer questions, and extract information from documents. Read [more](https://js.langchain.com/docs/modules/chains/document/) |

## Outputs

| Name                           | Description                   |
| ------------------------------ | ----------------------------- |
| ConversationalRetrievalQAChain | Final node to return response |


# LLM Chain

Chain to run queries against LLMs.

<figure><img src="/files/1EBEOo4dLMWM5l9Wes2c" alt="" width="341"><figcaption><p>LLM Chain Node</p></figcaption></figure>


# Multi Prompt Chain

Chain automatically picks an appropriate prompt from multiple prompt templates.

<figure><img src="/files/QF5yfHjyrA6djhJdRf4m" alt="" width="334"><figcaption><p>Multi Prompt Chain Node</p></figcaption></figure>


# Multi Retrieval QA Chain

QA Chain that automatically picks an appropriate vector store from multiple retrievers.

<figure><img src="/files/l0dQgHEaDh5wyhloyoLE" alt="" width="333"><figcaption><p>Multi Retrieval QA Chain Node</p></figcaption></figure>


# Retrieval QA Chain

QA chain to answer a question based on the retrieved documents.

<figure><img src="/files/wKRNy1rySHOWRu06jS4W" alt="" width="337"><figcaption><p>Retrieval QA Chain Node</p></figcaption></figure>


# Sql Database Chain

Answer questions over a SQL database.

<figure><img src="/files/ZdSi1EVs459TN5tF9xVA" alt="" width="332"><figcaption><p>Sql Database Chain Node</p></figcaption></figure>


# Vectara QA Chain

A chain for performing question-answering tasks with Vectara.

<figure><img src="/files/Qf58Oxzg4leRKpN0e3dB" alt=""><figcaption></figcaption></figure>

## Definitions

**A retrieval-based question-answering chain**, which integrates with a Vectara retrieval component and allows you to configure input parameters and perform question-answering tasks.

## Inputs

* [Vectara Store](/readme/chatflows/langchain/vector-stores/vectara)

## Parameters

| Name                   | Description                                                   |
| ---------------------- | ------------------------------------------------------------- |
| Summarizer Prompt Name | model to be used in generating the summary                    |
| Response Language      | desired language for the response                             |
| Max Summarized Results | number of top results to use in summarization (defaults to 7) |

## Outputs

| Name           | Description                   |
| -------------- | ----------------------------- |
| VectaraQAChain | Final node to return response |


# VectorDB QA Chain

QA chain for vector databases.

<figure><img src="/files/8sXYOoyq4xV3f8Px31HL" alt="" width="339"><figcaption><p>VectorDB QA Chain Node</p></figcaption></figure>


# Chat Models

LangChain Chat Model Nodes

***

Chat models take a list of messages as input and return a model-generated message as output. These models such as **gpt-3.5-turbo** or **gpt4** are powerful and cheaper than its predecessor Completions models such as **text-davincii-003**.

### Chat Model Nodes:

* [AWS ChatBedrock](/readme/chatflows/langchain/chat-models/aws-chatbedrock)
* [Azure ChatOpenAI](/readme/chatflows/llamaindex/chat-models/azurechatopenai)
* [NIBittensorChat](/readme/chatflows/langchain/chat-models/nibittensorchat)
* [ChatAnthropic](/readme/chatflows/langchain/chat-models/chatanthropic)
* [ChatCohere](/readme/chatflows/langchain/chat-models/chatcohere)
* [Chat Fireworks](/readme/chatflows/langchain/chat-models/chat-fireworks)
* [ChatGoogleGenerativeAI](/readme/chatflows/langchain/chat-models/google-ai)
* [ChatGooglePaLM](/readme/chatflows/langchain/chat-models/chatgooglepalm)
* [Google VertexAI](/readme/chatflows/langchain/chat-models/google-vertexai)
* [ChatHuggingFace](/readme/chatflows/langchain/chat-models/chathuggingface)
* [ChatLocalAI](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/chat-models/broken-reference/README.md)
* [ChatMistralAI](/readme/chatflows/langchain/chat-models/mistral-ai)
* [ChatOllama](/readme/chatflows/langchain/chat-models/chatollama)
* [ChatOllama Funtion](/readme/chatflows/langchain/chat-models/chatollama-funtion)
* [ChatOpenAI](/readme/chatflows/langchain/chat-models/azure-chatopenai)
* [ChatOpenAI Custom](/readme/chatflows/langchain/chat-models/chatopenai-custom)
* [ChatTogetherAI](/readme/chatflows/langchain/chat-models/chattogetherai)
* [GroqChat](/readme/chatflows/langchain/chat-models/groqchat)


# AWS ChatBedrock

Wrapper around AWS Bedrock large language models that use the Chat endpoint.

<figure><img src="/files/52Ga6nLXRMkD1qOa3pAM" alt="" width="265"><figcaption><p>AWS ChatBedrock</p></figcaption></figure>


# Azure ChatOpenAI

## Prerequisite

1. [Log in](https://portal.azure.com/) or [sign up](https://azure.microsoft.com/en-us/free/) to Azure
2. [Create](https://portal.azure.com/#create/Microsoft.CognitiveServicesOpenAI) your Azure OpenAI and wait for approval approximately 10 business days
3. Your API key will be available at **Azure OpenAI** > click **name\_azure\_openai** > click **Click here to manage keys**

<figure><img src="/files/oxGzK3GrSvdIBjExuJXl" alt=""><figcaption></figcaption></figure>

## Setup

### Azure ChatOpenAI

1. Click **Go to Azure OpenaAI Studio**

<figure><img src="/files/HVV1AF3d2OcSIHxVTafG" alt=""><figcaption></figcaption></figure>

2. Click **Deployments**

<figure><img src="/files/mrg8czQHQL7pmgbYzovS" alt=""><figcaption></figcaption></figure>

3. Click **Create new deployment**

<figure><img src="/files/GZhhEQ9F0qiL1q9CetpQ" alt=""><figcaption></figcaption></figure>

4. Select as shown below and click **Create**

<figure><img src="/files/h4KiRmn2YMO8qXEDImKo" alt="" width="558"><figcaption></figcaption></figure>

5. Successfully created **Azure ChatOpenAI**

* Deployment name: `gpt-35-turbo`
* Instance name: `top right conner`

<figure><img src="/files/tlLZrde0VY8z63FlGdC3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/HVV1AF3d2OcSIHxVTafG" alt=""><figcaption></figcaption></figure>

### Tailwinds

1. **Chat Models** > drag **Azure ChatOpenAI** node

<figure><img src="/files/fy7fsrn09TwgruJlErFK" alt="" width="563"><figcaption></figcaption></figure>

2. **Connect Credential** > click **Create New**

<figure><img src="/files/99QMpVLgZcgrnaeCVJ8n" alt="" width="421"><figcaption></figcaption></figure>

3. Copy & Paste each details (API Key, Instance & Deployment name, [API Version](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions)) into **Azure ChatOpenAI** credential

<figure><img src="/files/FetB5U4lmZ18SjGreauV" alt="" width="563"><figcaption></figcaption></figure>

4. Voila [🎉](https://emojipedia.org/party-popper/), you have created **Azure ChatOpenAI node** in Tailwinds

<figure><img src="/files/W53TmmWWXT5LwR2wXFXc" alt=""><figcaption></figcaption></figure>

## Resources

* [LangChain JS Azure ChatOpenAI](https://js.langchain.com/docs/modules/model_io/models/chat/integrations/azure)
* [Azure OpenAI Service REST API reference](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference)


# NIBittensorChat

Wrapper around Bittensor subnet 1 large language models.

<figure><img src="/files/XneiFwtOzdgxzbvVYurl" alt="" width="269"><figcaption><p>NIBittensorChat Node</p></figcaption></figure>


# ChatAnthropic

Wrapper around ChatAnthropic large language models that use the Chat endpoint.

<figure><img src="/files/DzFe16BtdOO3Ec4Oz1Pl" alt="" width="265"><figcaption><p>ChatAnthropic Node</p></figcaption></figure>


# ChatCohere

Wrapper around Cohere Chat Endpoints.

<figure><img src="/files/cRA3V8EjjwNX5O574Kpu" alt="" width="263"><figcaption><p>ChatCohere Node</p></figcaption></figure>


# Chat Fireworks

Wrapper around Fireworks Chat Endpoints.

<figure><img src="/files/uFRtVo9SvurAcSinRoNR" alt="" width="350"><figcaption><p>Chat Fireworks Node</p></figcaption></figure>


# ChatGoogleGenerativeAI

## Prerequisite

1. Register a [Google](https://accounts.google.com/InteractiveLogin) account
2. Create an [API key](https://aistudio.google.com/app/apikey)

## Setup

1. **Chat Models** > drag **ChatGoogleGenerativeAI** node

<figure><img src="/files/XRd4BxzThZh5l1BEr1sW" alt="" width="563"><figcaption></figcaption></figure>

2. **Connect Credential** > click **Create New**

<figure><img src="/files/mH1dCPbvbb45J4IP72oL" alt="" width="278"><figcaption></figcaption></figure>

3. Fill in the **Google AI** credential

<figure><img src="/files/UoE7PlMgGuGNOWmUCSm8" alt="" width="563"><figcaption></figcaption></figure>

4. Voila [🎉](https://emojipedia.org/party-popper/), you can now use **ChatGoogleGenerativeAI node** in Tailwinds

<figure><img src="/files/wLRVUFnI9OSdnpI9nNuX" alt=""><figcaption></figcaption></figure>

## Safety Attributes Configuration

1. Click **Additonal Parameters**

<figure><img src="/files/0zjmOgJKhVTTicENnpNg" alt="" width="563"><figcaption></figcaption></figure>

* When configuring **Safety Attributes**, the amount of selection in **Harm Category** & **Harm Block Threshold** should be the same amount. If not it will throw an error `Harm Category & Harm Block Threshold are not the same length`
* The combination of **Safety Attributes** below will result in `Dangerous` is set to `Low and Above` and `Harassment` is set to `Medium and Above`

<figure><img src="/files/DDAMpoucSOPmYLMz43Y7" alt="" width="563"><figcaption></figcaption></figure>

## Resources

* [LangChain JS ChatGoogleGenerativeAI](https://js.langchain.com/docs/integrations/chat/google_generativeai)
* [Google AI for Developers](https://ai.google.dev/)
* [Gemini API Docs](https://ai.google.dev/docs)


# ChatGooglePaLM

Wrapper around Google MakerSuite PaLM large language models using the Chat endpoint.

<figure><img src="/files/c17A0p0HFSoH6sd1GRUU" alt="" width="265"><figcaption><p>ChatGooglePaLM</p></figcaption></figure>


# Google VertexAI

## Prerequisites

1. [Start your GCP](https://cloud.google.com/docs/get-started)
2. Install the [Google Cloud CLI](https://cloud.google.com/sdk/docs/install-sdk)

## Setup

### Enable vertex AI API

1. Go to Vertex AI on GCP and click **"ENABLE ALL RECOMMENDED API"**

<figure><img src="/files/c5sgkZ7HXLeEXmvZ3wUK" alt="" width="563"><figcaption></figcaption></figure>

## Create credential file *(Optional)*

There are 2 ways to create credential file

### No. 1 : Use GCP CLI

1. Open terminal and run the following command

```bash
gcloud auth application-default login
```

2. Login to your GCP account
3. Check your credential file. You can find your credential file in `~/.config/gcloud/application_default_credentials.json`

### No. 2 : Use GCP console

1. Go to GCP console and click **"CREATE CREDENTIALS"**

<figure><img src="/files/kgDdpVu4jae5S1HtkuHi" alt="" width="563"><figcaption></figcaption></figure>

2. Create service account

<figure><img src="/files/gVQnuasf8aXa6dQEH02o" alt="" width="563"><figcaption></figcaption></figure>

3. Fill in the form of Service account details and click **"CREATE AND CONTINUE"**
4. Select proper role (for example Vertex AI User) and click **"DONE"**

<figure><img src="/files/lrkcEdi2Hj781hZCoHT3" alt=""><figcaption></figcaption></figure>

5. Click service account that you created and click **"ADD KEY" -> "Create new key"**

<figure><img src="/files/eZoITTYn16bz6GIveJR5" alt="" width="563"><figcaption></figcaption></figure>

6. Select JSON and click **"CREATE"** then you can download your credential file

<figure><img src="/files/YWtICFu1PIMUjJD0wqtA" alt="" width="563"><figcaption></figcaption></figure>

## Tailwinds

<figure><img src="/files/sZyQLWkibPYOnlV89Bla" alt=""><figcaption></figcaption></figure>

### Without credential file

If you are using a GCP service like Cloud Run, or if you have installed default credentials on your local machine, you do not need to set this credential.

### With credential file

1. Go to Credential page on Tailwinds and click **"Add credential"**
2. Click Google Vertex Auth

<figure><img src="/files/r3Opi0AYbP97NUQfAvrd" alt="" width="563"><figcaption></figcaption></figure>

3. Register your credential file. There are 2 ways to register your credential file.

<figure><img src="/files/mZfSr9fmg86u4tLgUwQz" alt="" width="563"><figcaption></figcaption></figure>

* **Option 1 : Enter path of your credential file**
  * If you have credential file on your machine, you can enter the path of your credential file into `Google Application Credential File Path`
* **Option 2 : Paste text of your credential file**
  * Or you can copy all text in the credential file and paste it into `Google Credential JSON Object`

4. Finally, click "Add" button.
5. **🎉**You can now use ChatGoogleVertexAI with the credential in Tailwinds now!

### Resources

* [LangChain JS GoogleVertexAI](https://js.langchain.com/docs/api/llms_googlevertexai/classes/GoogleVertexAI)
* [Google Service accounts overview](https://cloud.google.com/iam/docs/service-account-overview?)


# ChatHuggingFace

Wrapper around HuggingFace large language models.

<figure><img src="/files/WbfxU8PwMnjTHbFNeDrE" alt="" width="259"><figcaption><p>ChatHuggingFace Node</p></figcaption></figure>


# ChatMistralAI

## Prerequisite

1. Register a [Mistral AI](https://mistral.ai/) account
2. Create an [API key](https://console.mistral.ai/user/api-keys/)

## Setup

1. **Chat Models** > drag **ChatMistralAI** node

<figure><img src="/files/RxD1vP6W7XlINmgZNmCe" alt="" width="563"><figcaption></figcaption></figure>

2. **Connect Credential** > click **Create New**

<figure><img src="/files/GENVYhGCzg622bx6clWe" alt="" width="278"><figcaption></figcaption></figure>

3. Fill in the **Mistral AI** credential

<figure><img src="/files/ow4pwEHcYhUeTFGFISM6" alt="" width="563"><figcaption></figcaption></figure>

4. Voila [🎉](https://emojipedia.org/party-popper/), you can now use **ChatMistralAI node** in Tailwinds

<figure><img src="/files/HZUh7wCVCCAxvLYRUq3v" alt=""><figcaption></figcaption></figure>

## Resources

* [LangChain JS ChatMistralAI](https://js.langchain.com/docs/integrations/chat/mistral)
* [Mistral AI](https://mistral.ai/)
* [Mistral AI Docs](https://docs.mistral.ai/)


# ChatOllama

## Prerequisite

1. Download [Ollama](https://github.com/ollama/ollama) or run it on [Docker.](https://hub.docker.com/r/ollama/ollama)
2. For example, you can use the following command to spin up a Docker instance with llama3

   ```bash
   docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
   docker exec -it ollama ollama run llama3
   ```

## Setup

1. **Chat Models** > drag **ChatOllama** node

<figure><img src="/files/lr5nTCq4K1kqg86icA7J" alt="" width="563"><figcaption></figcaption></figure>

2. Fill in the model that is running on Ollama. For example: `llama2`. You can also use additional parameters:

<figure><img src="/files/Gl0R88JaBqUuXCJVe29B" alt=""><figcaption></figcaption></figure>

3. Voila [🎉](https://emojipedia.org/party-popper/), you can now use **ChatOllama node** in Tailwinds

<figure><img src="/files/QBugc9dDjeDG5JSob0aq" alt=""><figcaption></figcaption></figure>

### Additional

If you are running both Flowise and Ollama on docker. You'll have to change the Base URL for ChatOllama.

For Windows and MacOS Operating Systems specify [http://host.docker.internal:8000](http://host.docker.internal:8000/). For Linux based systems the default docker gateway should be used since host.docker.internal is not available: [http://172.17.0.1:8000](http://172.17.0.1:8000/)

<figure><img src="/files/BIYESwiUcEfPBWGN2lvN" alt="" width="292"><figcaption></figcaption></figure>

## Resources

* [LangchainJS ChatOllama](https://js.langchain.com/docs/integrations/chat/ollama)
* [Ollama](https://github.com/ollama/ollama)


# ChatOllama Funtion

Run open-source function-calling compatible LLM on Ollama.

<figure><img src="/files/en23Su8uBS2jy1ZVazb9" alt="" width="347"><figcaption><p>ChatOllama Funtion Node</p></figcaption></figure>


# ChatOpenAI

## Prerequisite

1. An [OpenAI](https://openai.com/) account
2. Create an [API key](https://platform.openai.com/api-keys)

## Setup

1. **Chat Models** > drag **ChatOpenAI** node

<figure><img src="/files/zYI1hZohD12qhp6p7C2F" alt="" width="563"><figcaption></figcaption></figure>

2. **Connect Credential** > click **Create New**

<figure><img src="/files/AxbyJ5KifWosIwGlAmKn" alt="" width="278"><figcaption></figcaption></figure>

2. Fill in the **ChatOpenAI** credential

<figure><img src="/files/Pl6v5rkrQkhhL2hFbXgF" alt="" width="563"><figcaption></figcaption></figure>

4. Voila [🎉](https://emojipedia.org/party-popper/), you can now use **ChatOpenAI node** in Tailwinds

<figure><img src="/files/SUKN1oZz5S7QrcwaoKG2" alt=""><figcaption></figcaption></figure>

## Custom base URL and headers

Tailwinds supports using custom base URL and headers for Chat OpenAI. Users can easily use integrations like OpenRouter, TogetherAI and others that support OpenAI API compatibility.

### TogetherAI

1. Refer to official [docs](https://docs.together.ai/docs/openai-api-compatibility#nodejs) from TogetherAI
2. Create a new credential with TogetherAI API key
3. Click **Additional Parameters** on ChatOpenAI node.
4. Change the Base Path:

<figure><img src="/files/nuuZJGvQUT1EJcAG4DMF" alt="" width="563"><figcaption></figcaption></figure>

### Open Router

1. Refer to official [docs](https://openrouter.ai/docs#quick-start) from OpenRouter
2. Create a new credential with OpenRouter API key
3. Click Additional Parameters on ChatOpenAI node
4. Change the Base Path and Base Options:

<figure><img src="/files/OCb7jCbLzqbVIokaGVt2" alt="" width="563"><figcaption></figcaption></figure>

## Custom Model

For models that are not supported on ChatOpenAI node, you can use ChatOpenAI Custom for that. This allow users to fill in model name such as `mistralai/Mixtral-8x7B-Instruct-v0.1`

<figure><img src="/files/tDZuVk80dma1Bnf1YzTA" alt=""><figcaption></figcaption></figure>

## Image Upload

You can also allow images to be uploaded and analyzed by LLM. Under the hood, Tailwinds will use [OpenAI Vison ](https://platform.openai.com/docs/guides/vision)model to process the image. Only works with LLMChain, Conversation Chain, ReAct Agent, and Conversational Agent.

<figure><img src="/files/OpZZrnPzIzHmhMpZoUP7" alt="" width="332"><figcaption></figcaption></figure>

From the chat interface, you will now see a new image upload button:

<figure><img src="/files/WzjG0ovT6RJpJBed51HC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/YzAuSRfdhvr5AA7sDpPk" alt=""><figcaption></figcaption></figure>


# ChatOpenAI Custom

Custom/FineTuned model using OpenAI Chat compatible API.

<figure><img src="/files/y4Yvy47vZvyzZcR3IE7e" alt="" width="268"><figcaption><p>ChatOpenAI Custom Node</p></figcaption></figure>


# ChatTogetherAI

Wrapper around TogetherAI large language models

<figure><img src="/files/xcyS52lZSc6BkUWCFqrb" alt="" width="266"><figcaption><p>ChatTogetherAI Node</p></figcaption></figure>


# GroqChat

Wrapper around Groq API with LPU Inference Engine.

<figure><img src="/files/vGZTmCPGtGDs2xaoGIxK" alt="" width="262"><figcaption><p>GroqChat Node</p></figcaption></figure>


# Document Loaders

LangChain Document Loader Nodes

***

Document loaders allow you to load documents from different sources like PDF, TXT, CSV, Notion, Confluence etc. They are often used together with [Vector Stores](/readme/chatflows/langchain/vector-stores) to be upserted as embeddings, which can then retrieved upon query.

### Document Loader Nodes:

* [API Loader](/readme/chatflows/langchain/document-loaders/api-loader)
* [Airtable](/readme/chatflows/langchain/document-loaders/airtable)
* [Apify Website Content Crawler](/readme/chatflows/langchain/document-loaders/apify-website-content-crawler)
* [Cheerio Web Scraper](/readme/chatflows/langchain/document-loaders/cheerio-web-scraper)
* [Confluence](/readme/chatflows/langchain/document-loaders/confluence)
* [Csv File](/readme/chatflows/langchain/document-loaders/csv-file)
* [Custom Document Loader](/readme/chatflows/langchain/document-loaders/custom-document-loader)
* [Document Store](/readme/chatflows/langchain/document-loaders/document-store)
* [Docx File](/readme/chatflows/langchain/document-loaders/docx-file)
* [Figma](/readme/chatflows/langchain/document-loaders/figma)
* [FireCrawl](/readme/chatflows/langchain/document-loaders/firecrawl)
* [Folder with Files](/readme/chatflows/langchain/document-loaders/folder-with-files)
* [GitBook](/readme/chatflows/langchain/document-loaders/gitbook)
* [Github](/readme/chatflows/langchain/document-loaders/github)
* [Json File](/readme/chatflows/langchain/document-loaders/json-file)
* [Json Lines File](/readme/chatflows/langchain/document-loaders/json-lines-file)
* [Notion Database](/readme/chatflows/langchain/document-loaders/notion-database)
* [Notion Folder](/readme/chatflows/langchain/document-loaders/notion-folder)
* [Notion Page](/readme/chatflows/langchain/document-loaders/notion-page)
* [PDF Files](/readme/chatflows/langchain/document-loaders/pdf-file)
* [Plain Text](/readme/chatflows/langchain/document-loaders/plain-text)
* [Playwright Web Scraper](/readme/chatflows/langchain/document-loaders/playwright-web-scraper)
* [Puppeteer Web Scraper](/readme/chatflows/langchain/document-loaders/puppeteer-web-scraper)
* [S3 File Loader](/readme/chatflows/langchain/document-loaders/s3-file-loader)
* [SearchApi For Web Search](/readme/chatflows/langchain/document-loaders/searchapi-for-web-search)
* Spider
* [SerpApi For Web Search](/readme/chatflows/langchain/document-loaders/serpapi-for-web-search)
* [Text File](/readme/chatflows/langchain/document-loaders/text-file)
* [Unstructured File Loader](/readme/chatflows/langchain/document-loaders/unstructured-file-loader)
* [Unstructured Folder Loader](/readme/chatflows/langchain/document-loaders/unstructured-folder-loader)
* [VectorStore To Document](/readme/chatflows/langchain/document-loaders/vectorstore-to-document)


# API Loader

Load data from an API.

<figure><img src="/files/SmkYhIxN4KZzyIeyUzA9" alt="" width="273"><figcaption><p>API Loader Node</p></figcaption></figure>


# Airtable

Load data from Airtable table.

<figure><img src="/files/DH43cR8QHOsr2xu2xNAl" alt="" width="271"><figcaption><p>Airtable Node</p></figcaption></figure>


# Apify Website Content Crawler

Load data from Apify Website Content Crawler.

[Apify](https://apify.com/) is a web scraping and data extraction platform that provides an app store with more than a thousand ready-made cloud tools called Actors.

The [Website Content Crawler](https://apify.com/apify/website-content-crawler) Actor can deeply crawl websites, clean their HTML by removing a cookies modals, footers, or navigation, and then transform the HTML into Markdown. This Markdown can then be stored in a vector database for semantic search or Retrieval-Augmented Generation (RAG).

<figure><img src="/files/ydRD4BOcHDfp20T8ZJbK" alt="" width="266"><figcaption><p>Apify Website Content Crawler Node</p></figcaption></figure>

## Crawl Entire Website

1. *(Optional)* Connect [**Text Splitter**](/readme/chatflows/langchain/text-splitters).
2. Connect Apify API (create a new credential with your [Apify API token](https://my.apify.com/account#/integrations)).
3. Input one or more URLs (separated by commas) where the crawler will start, e.g `https://innovativesol.com/`.
4. Select the crawler type. Refer to [Website Content Crawler documentation for more information](https://apify.com/apify/website-content-crawler/input-schema#crawlerType).
5. *(Optional)* Specify additional parameters such as maximum crawling depth and the maximum number of pages to crawl.

## Output

Loads website content as a Document.

## Resources

* [Website Content Crawler](https://apify.com/apify/website-content-crawler)


# Cheerio Web Scraper

Cheerio is lightweight and doesn't require a full browser environment like some other scraping tools. Keep in mind that when scraping websites, **you should always review and comply with the website's terms of service and policies to ensure ethical and legal use of the data**.

## Scrape One URL

1. *(Optional)* Connect [**Text Splitter**](/readme/chatflows/langchain/text-splitters).
2. Input desired URL to be scraped.

## Crawl & Scrape Multiple URLs

Visit [**Web Crawl**](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/use-cases/web-crawl.md) guide to allow scaping of multiple pages.

## Output

Loads URL content as Document

## Resources

* [LangChain JS Cheerio](https://js.langchain.com/docs/integrations/document_loaders/web_loaders/web_cheerio)
* [Cheerio](https://cheerio.js.org/)


# Confluence

Load data from a Confluence Document

<figure><img src="/files/YTLJKtgDvhkL2b7MyYMJ" alt="" width="263"><figcaption><p>Confluence Node</p></figcaption></figure>


# Csv File

Load data from CSV files.

<figure><img src="/files/TPzZxfkG4blY47cC2oxH" alt="" width="271"><figcaption><p>Csv File Node</p></figcaption></figure>


# Custom Document Loader

Custom function for loading documents.

<figure><img src="/files/dWSbeJruzlPhCehaJhLR" alt="" width="269"><figcaption><p>Custom Document Loader Node</p></figcaption></figure>


# Document Store

Load data from pre-configured document stores.

<figure><img src="/files/Gn6wyfqMuKBKYzMJSEwj" alt="" width="278"><figcaption><p>Document Store Node</p></figcaption></figure>


# Docx File

Load data from DOCX files.

<figure><img src="/files/gSxUFogHNGHyROw5Kmcq" alt="" width="269"><figcaption><p>Docx File Node</p></figcaption></figure>


# Figma

Load data from a Figma file.

<figure><img src="/files/MQeUehPqRnUm9DQBRQRH" alt="" width="264"><figcaption><p>Figma Node</p></figcaption></figure>


# FireCrawl

Load data from URL using FireCrawl.

<figure><img src="/files/pAEDvu4gnniCcIvvVElO" alt="" width="347"><figcaption><p>FireCrawl Node</p></figcaption></figure>


# Folder with Files

Load data from folder with multiple files.

<figure><img src="/files/B1jDXQjtjYSV8rkcAqpG" alt="" width="262"><figcaption><p>Folder with Files Node</p></figcaption></figure>


# GitBook

Load data from GitBook.

<figure><img src="/files/7rrAqE0F4uu3GhUOGemi" alt="" width="270"><figcaption><p>GitBook Node</p></figcaption></figure>


# Github

Load data from a GitHub repository.

<figure><img src="/files/rjrYPvUFsUZJAwEno81I" alt="" width="260"><figcaption><p>Github Node</p></figcaption></figure>


# Json File

Load data from JSON files.

<figure><img src="/files/0Juijfb3TxAt9REznH7k" alt="" width="259"><figcaption><p>Json File Node</p></figcaption></figure>


# Json Lines File

Load data from JSON Lines files.

<figure><img src="/files/hK5Sxoiw1qAveKVj6vE2" alt="" width="256"><figcaption><p>Json Lines File Node</p></figcaption></figure>


# Notion Database

Load data from Notion Database (each row is a separate document with all properties as metadata).

<figure><img src="/files/5ycRb7FPZzNUjifYB8Tq" alt="" width="260"><figcaption><p>Notion Database Node</p></figcaption></figure>


# Notion Folder

Load data from the exported and unzipped Notion folder.

<figure><img src="/files/37hQBTPH08O7Qggz8uxq" alt="" width="259"><figcaption><p>Notion Folder Node</p></figcaption></figure>


# Notion Page

Load data from Notion Page (including child pages all as separate documents).

<figure><img src="/files/8nsXnyeODhyhths0RprR" alt="" width="262"><figcaption><p>Notion Page Node</p></figcaption></figure>


# PDF Files

Portable Document Format (PDF), standardized as ISO 32000, is a file format developed by Adobe in 1992 to present documents, including text formatting and images, in a manner independent of application software, hardware, and operating systems.\
**The Pdf File module decodes the base64-encoded data from the PDF document and then loads the PDF content.**\
If a textSplitter is provided, it uses it to split the text content.

## Inputs

**Text Splitter** (optional)\
**PDF File**\
**Usage**\
One Document per Page OR One Document per File\\

## Output

loads PDF content


# Plain Text

Load data from plain text.

<figure><img src="/files/4XF2vcQLdSOU7JuVZgNo" alt="" width="263"><figcaption><p>Plain Text Node</p></figcaption></figure>


# Playwright Web Scraper

Playwright is a Node.js library that allows automation of web browsers for web scraping. It was developed by Microsoft and supports multiple browsers, including Chromium. Keep in mind that when scraping websites, **you should always review and comply with the website's terms of service and policies to ensure ethical and legal use of the data**.

## Scrape One URL

1. *(Optional)* Connect [**Text Splitter**](/readme/chatflows/langchain/text-splitters).
2. Input desired URL to be scraped.

## Crawl & Scrape Multiple URLs

Visit [**Web Crawl**](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/use-cases/web-crawl.md) guide to allow scraping of multiple pages.

## Output

Loads URL content as Document

## Resources

* [LangChain JS Playwright](https://js.langchain.com/docs/integrations/document_loaders/web_loaders/web_playwright)
* [Playwright](https://playwright.dev/)


# Puppeteer Web Scraper

Puppeteer is a Node.js library, controls Chrome/Chromium through the DevTools Protocol in headless mode. Keep in mind that when scraping websites, **you should always review and comply with the website's terms of service and policies to ensure ethical and legal use of the data**.

## Scrape One URL

1. *(Optional)* Connect [**Text Splitter**](/readme/chatflows/langchain/text-splitters).
2. Input desired URL to be scraped.

## Crawl & Scrape Multiple URLs

Visit [**Web Crawl**](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/use-cases/web-crawl.md) guide to allow scraping of multiple pages.

## Output

Loads URL content as Document

## Resources

* [LangChain JS Puppeteer](https://js.langchain.com/docs/integrations/document_loaders/web_loaders/web_puppeteer)
* [Puppeteer](https://pptr.dev/)


# AWS S3 File Loader

S3 File Loader allows you to retrieve a file from s3, and use [Unstructured](https://unstructured.io/) to preprocess into a structured Document object that is ready to be converted into vector embeddings. Unstructured is being used to cater for wide range of different file types. Regardless if your file on s3 is PDF, XML, DOCX, CSV, it can be processed by Unstructured. See [here](https://unstructured-io.github.io/unstructured/api.html#supported-file-types) for supported file types.

## Unstructured Setup

You can either use the hosted API or running locally via Docker.

* [Hosted API](https://unstructured-io.github.io/unstructured/api.html)
* Docker: `docker run -p 8000:8000 -d --rm --name unstructured-api quay.io/unstructured-io/unstructured-api:latest --port 8000 --host 0.0.0.0`

## S3 File Loader Setup

1\. Drag and drop S3 file loader onto canvas:

<figure><img src="/files/JBRQ6asJYblpbLqmHJgq" alt="" width="234"><figcaption></figcaption></figure>

2\. AWS Credential: Create a new credential for your AWS account. You'll need the access and secret key. Remember to grant s3 bucket policy to the associated account. You can refer to the policy guide [here](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.html).

<figure><img src="/files/3vMGLynxRP3JLjOgQhDO" alt="" width="551"><figcaption></figcaption></figure>

3. Bucket: Login to your AWS console and navigate to S3. Get your bucket name:

<figure><img src="/files/CyhOrWBCaUdvtWnBxOg7" alt=""><figcaption></figcaption></figure>

4. Key: Click on the object you would like to use, and get the Key name:

<figure><img src="/files/aNCA8YrT6wBMBrR0pXdk" alt="" width="228"><figcaption></figcaption></figure>

5. Unstructured API URL: Depending on how you are using Unstructured, whether its through Hosted API or Docker, change the Unstructured API URL parameter. If you are using Hosted API, you'll need the API key as well.
6. You can then start chatting with your file from S3. You don't have to specify the text splitter for chunking down the document because thats handled by Unstructured automatically.

<figure><img src="/files/YYvwQgmjx92e4C7om1nP" alt=""><figcaption></figcaption></figure>


# SearchApi For Web Search

Load data from real-time search results.

<figure><img src="/files/xORogSbF7r5i7xbzpGkc" alt="" width="322"><figcaption><p>SearchApi For Web Search</p></figcaption></figure>


# SerpApi For Web Search

Load and process data from web search results.

<figure><img src="/files/K6vOQryLoovgRFWjWFZs" alt="" width="319"><figcaption><p>SerpApi For Web Search Node</p></figcaption></figure>


# Spider Web Scraper/Crawler

Scrape & Crawl the web with Spider.

<figure><img src="/files/gNHHnHbmjlFIUFk4HmCK" alt="" width="365"><figcaption><p>Spider Web Scraper/Crawler Node</p></figcaption></figure>


# Text File

Load data from text files.

<figure><img src="/files/PTEevu3HB6DOA3C7BuwE" alt="" width="322"><figcaption><p>Text File Node</p></figcaption></figure>


# Unstructured File Loader

Use Unstructured.io to load data from a file path.

<figure><img src="/files/R8BQp6jlhHQhxV4kfV60" alt="" width="332"><figcaption><p>Unstructured File Loader Node</p></figcaption></figure>


# Unstructured Folder Loader

Use Unstructured.io to load data from a folder. Note: Currently doesn't support .png and .heic until unstructured is updated.

<figure><img src="/files/QQHlzfnH08C27juzKz1H" alt="" width="320"><figcaption><p>Unstructured Folder Loader Node</p></figcaption></figure>


# VectorStore To Document

Search documents with scores from vector store.

<figure><img src="/files/B36tc5xuBv58jlq7fRLw" alt="" width="324"><figcaption><p>VectorStore To Document Node</p></figcaption></figure>


# Embeddings

LangChain Embedding Nodes

***

An embedding is a vector (list) of floating point numbers. The distance between two vectors measures their relatedness. Small distances suggest high relatedness and large distances suggest low relatedness.

Embeddings can be used to create a numerical representation of textual data. This numerical representation is useful because it can be used to find similar documents.

They are commonly used for:

* Search (where results are ranked by relevance to a query string)
* Clustering (where text strings are grouped by similarity)
* Recommendations (where items with related text strings are recommended)
* Anomaly detection (where outliers with little relatedness are identified)
* Diversity measurement (where similarity distributions are analyzed)
* Classification (where text strings are classified by their most similar label)

### Embedding Nodes:

* [AWS Bedrock Embeddings](/readme/chatflows/langchain/embeddings/aws-bedrock-embeddings)
* [Azure OpenAI Embeddings](/readme/chatflows/langchain/embeddings/azure-openai-embeddings)
* [Cohere Embeddings](/readme/chatflows/langchain/embeddings/cohere-embeddings)
* [Google GenerativeAI Embeddings](/readme/chatflows/langchain/embeddings/googlegenerativeai-embeddings)
* [Google PaLM Embeddings](/readme/chatflows/langchain/embeddings/google-palm-embeddings)
* [Google VertexAI Embeddings](/readme/chatflows/langchain/embeddings/googlevertexai-embeddings)
* [HuggingFace Inference Embeddings](/readme/chatflows/langchain/embeddings/huggingface-inference-embeddings)
* [LocalAI Embeddings](https://github.com/innovativeSol/tailwinds-docs/blob/main/integrations/langchain/embeddings/broken-reference/README.md)
* [MistralAI Embeddings](/readme/chatflows/langchain/embeddings/mistralai-embeddings)
* [Ollama Embeddings](/readme/chatflows/langchain/embeddings/ollama-embeddings)
* [OpenAI Embeddings](/readme/chatflows/langchain/embeddings/openai-embeddings)
* [OpenAI Embeddings Custom](/readme/chatflows/langchain/embeddings/openai-embeddings-custom)
* [TogetherAI Embedding](/readme/chatflows/langchain/embeddings/togetherai-embedding)
* [VoyageAI Embeddings](/readme/chatflows/langchain/embeddings/voyageai-embeddings)


# AWS Bedrock Embeddings

AWSBedrock embedding models to generate embeddings for a given text.

<figure><img src="/files/zz0VwIhXxJqfdq3ks9pb" alt="" width="301"><figcaption><p>AWS Bedrock Embeddings Node</p></figcaption></figure>


# Azure OpenAI Embeddings

## Prerequisite

1. [Log in](https://portal.azure.com/) or [sign up](https://azure.microsoft.com/en-us/free/) to Azure
2. [Create](https://portal.azure.com/#create/Microsoft.CognitiveServicesOpenAI) your Azure OpenAI and wait for approval approximately 10 business days
3. Your API key will be available at **Azure OpenAI** > click **name\_azure\_openai** > click **Click here to manage keys**

<figure><img src="/files/oxGzK3GrSvdIBjExuJXl" alt=""><figcaption></figcaption></figure>

## Setup

### Azure OpenAI Embeddings

1. Click **Go to Azure OpenaAI Studio**

<figure><img src="/files/HVV1AF3d2OcSIHxVTafG" alt=""><figcaption></figcaption></figure>

2. Click **Deployments**

<figure><img src="/files/mrg8czQHQL7pmgbYzovS" alt=""><figcaption></figcaption></figure>

3. Click **Create new deployment**

<figure><img src="/files/GZhhEQ9F0qiL1q9CetpQ" alt=""><figcaption></figcaption></figure>

4. Select as shown below and click **Create**

<figure><img src="/files/kw2NqCxMvIToCxzy2CEu" alt="" width="559"><figcaption></figcaption></figure>

5. Successfully created **Azure OpenAI Embeddings**

* Deployment name: `text-embedding-ada-002`
* Instance name: `top right conner`

<figure><img src="/files/2GTH6RkvjqpCQewSWnDW" alt=""><figcaption></figcaption></figure>

### Tailwinds

1. **Embeddings** > drag **Azure OpenAI Embeddings** node

<figure><img src="/files/3HUdOyAXhHTfFaGwSLHH" alt="" width="563"><figcaption></figcaption></figure>

2. **Connect Credential** > click **Create New**

<figure><img src="/files/W0vcLLsW6fVdBsA81Tic" alt="" width="386"><figcaption></figcaption></figure>

3. Copy & Paste each details (API Key, Instance & Deployment name, [API Version](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions)) into **Azure OpenAI Embeddings** credential

<figure><img src="/files/jSqYIcTVMaT7HZEFxPSP" alt="" width="554"><figcaption></figcaption></figure>

4. Voila [🎉](https://emojipedia.org/party-popper/), you have created **Azure OpenAI Embeddings node** in Tailwinds

<figure><img src="/files/W53TmmWWXT5LwR2wXFXc" alt=""><figcaption></figcaption></figure>

## Resources

* [LangChain JS Azure OpenAI Embeddings](https://js.langchain.com/docs/modules/data_connection/text_embedding/integrations/azure_openai)
* [Azure OpenAI Service REST API reference](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference)


# Cohere Embeddings

Cohere API to generate embeddings for a given text

<figure><img src="/files/RLhonm66YJQB5F8ZgIQy" alt="" width="306"><figcaption><p>Cohere Embeddings Node</p></figcaption></figure>


# Google GenerativeAI Embeddings

Google Generative API to generate embeddings for a given text.

<figure><img src="/files/RoYUajBNvZfTUINYYdeA" alt="" width="302"><figcaption><p>Google GenerativeAI Embeddings Node</p></figcaption></figure>


# Google PaLM Embeddings

Google MakerSuite PaLM API to generate embeddings for a given text.

<figure><img src="/files/xsLvmbiMS3iEGrR3Nk2N" alt="" width="304"><figcaption><p>Google PaLM Embeddings Node</p></figcaption></figure>


# Google VertexAI Embeddings

Google vertexAI API to generate embeddings for a given text.

<figure><img src="/files/eo131JbKmEGK23ofezuv" alt="" width="301"><figcaption><p>Google VertexAI Embeddings Node</p></figcaption></figure>


# HuggingFace Inference Embeddings

HuggingFace Inference API to generate embeddings for a given text.

<figure><img src="/files/48QglA8Zpa8sRKUSXtUF" alt="" width="297"><figcaption><p>HuggingFace Inference Embeddings Node</p></figcaption></figure>


# MistralAI Embeddings

MistralAI API to generate embeddings for a given text.

<figure><img src="/files/qZgMc0aiqigenmLEvOzA" alt="" width="295"><figcaption><p>MistralAI Embeddings Node</p></figcaption></figure>


# Ollama Embeddings

Generate embeddings for a given text using open source model on Ollama.

<figure><img src="/files/5YXwtNSqULSU8pO72vU9" alt="" width="299"><figcaption><p>Ollama Embeddings Node</p></figcaption></figure>


# OpenAI Embeddings

OpenAI API to generate embeddings for a given text.

<figure><img src="/files/iavibXij1tOVYTWsMiCO" alt="" width="305"><figcaption><p>OpenAI Embeddings Node</p></figcaption></figure>


# OpenAI Embeddings Custom

OpenAI API to generate embeddings for a given text.

<figure><img src="/files/hJsz5my11aObiNfhvNce" alt="" width="300"><figcaption><p>OpenAI Embeddings Custom Node</p></figcaption></figure>


# TogetherAI Embedding

TogetherAI Embedding models to generate embeddings for a given text.

<figure><img src="/files/jNb3qmqTmiV26JGzKUYB" alt="" width="301"><figcaption><p>TogetherAI Embedding Node</p></figcaption></figure>


# VoyageAI Embeddings

Voyage AI API to generate embeddings for a given text.

<figure><img src="/files/9fayUWmtGe77eTUhez6d" alt="" width="307"><figcaption><p>VoyageAI Embeddings Node</p></figcaption></figure>


# LLMs

LangChain LLM Nodes

***

A large language model, LLM for short, is a AI system trained on massive amounts of text data. This allows them to communicate and generate human-like text in response to a wide range of prompts and questions. In essence, they can understand and respond to complex language.

### LLM Nodes:

* [AWS Bedrock](/readme/chatflows/langchain/llms/aws-bedrock)
* [Azure OpenAI](/readme/chatflows/langchain/llms/azure-openai)
* [NIBittensorLLM](/readme/chatflows/langchain/llms/nibittensorllm)
* [Cohere](/readme/chatflows/langchain/llms/cohere)
* [GooglePaLM](/readme/chatflows/langchain/llms/googlepalm)
* [GoogleVertex AI](/readme/chatflows/langchain/llms/googlevertex-ai)
* [HuggingFace Inference](/readme/chatflows/langchain/llms/huggingface-inference)
* [Ollama](/readme/chatflows/langchain/llms/ollama)
* [OpenAI](/readme/chatflows/langchain/llms/openai)
* [Replicate](/readme/chatflows/langchain/llms/replicate)




---

[Next Page](/llms-full.txt/1)

