Open-Source Visual AI Programming Environment: Meet Rivet
Rivet is well-suited for constructing intricate agents using LLM prompts, and it was recently made available as an open-source tool.
In essence, Rivet serves as a user-friendly interface for prompt chaining, ranging from no code to low code, with a primary emphasis on constructing intricate workflows that have the capacity to split (execute processes concurrently) and then converge again.
Within the Rivet UI, a significant role is played by data management and transformation, in conjunction with vector stores. It employs various conditional nodes and conditions. Unlike some other platforms, Rivet refers to these workflows as graphs rather than chains, applications, or flows. It's worth noting that Rivet doesn't provide an extensive array of options when it comes to vector stores, LLMs (Large Language Models), and similar components.
Rivet's primary focus is to create complex, reusable flows that can be optimized for efficiency. However, it's important to highlight that Rivet does not include autonomous agent implementation tools like the ones found in the LangChain toolkit.
Existing LLM Frameworks Landscape
Rivet is becoming part of a growing cohort of open-source LLM-based visual flow builders, including platforms such as LangFlow, Flowise and Botpress. Additionally, there are several commercial alternatives available, such as Voiceflow, Stack, Dust, and several others.
What is the deal with Rivet?
Here is a matrix that outlines the different node categories and their respective sub-nodes within Rivet. Notably, Rivet places a strong emphasis on data handling, logic, and vector store capabilities.
Functionality
Split
In the settings section of each node, there's a toggle option that allows you to enable or disable the "Split" functionality for that node. This "Split" feature serves as a tool to facilitate parallel execution.
For instance, consider a scenario where a directory of files needs to be processed. Enabling the "Split" option allows these files to be read in parallel, rather than sequentially. Moreover, it's worth noting that this "Split" capability can also be extended to entire chains, enabling parallel processing and the creation of more intricate and efficient implementations.
Joining
Joining of multiple flows into one is also possible via the following nodes:
Chat Node, Extract Object Path, Pop Node and Code Node.
Trivet
I haven't delved into the specifics, but it appears that Trivet serves as a library designed for running tests on Rivet applications. These tests can be executed either through the graphical user interface (GUI) or programmatically.
Interestingly, there is a dedicated "Trivet" tab positioned at the top of the Rivet GUI
My Personal Opinions
It would be highly convenient if, when hovering over an input or output point for a node, a list of possible or commonly used nodes for connection were displayed. This feature is especially helpful considering that cost, along with latency, is a significant concern in many applications.
In contrast to other open-source solutions like LangFlow and Flowise, Rivet doesn't provide support for integrating third-party commercial products. For example, it doesn't offer a wide array of vector stores or access to external LLMs (Large Language Models).
Rivet utilizes OpenAI's LLMs as the foundational building block for generative applications, and it incorporates Pinecone as both a vector store and a KNN node. As the user base grows, it's likely that more features and plugins will be introduced.
Currently, Rivet includes built-in plugins such as Anthropic, AssemblyAI, and Autoevals. However, it's worth noting that certain areas of the documentation may not be fully populated.
Rivet appears to position itself as a tool that can challenge more basic workflow builders like Vellum, although it may not offer the same level of feature richness found in GUI builders based on the LangChain framework.
A noteworthy feature of Rivet is its subgraph functionality, which allows a graph to be used as a function within another graph. This concept is akin to functions or sub-dialogs in VoiceXML 2.0, enabling modularity and reusability in the design of complex workflows.
👉 If you need help building LLM applications, feel free to drop me a message on my LinkedIn
❤️🔥 If you've found my Substack helpful, please consider giving it a heart and subscribing. Your support definitely means a lot! ✍