In the previous post, we discussed ideas on building the `fury` engine. In this post, I want to discuss how we can achieve this architecture, specifically the chain-building capabilities.
Basics
Here's the image we showed previously:
We have now refined it further, the core idea remains the same that users still build agents via a drag-and-drop interface. However, instead of the UI that looks like the above image, the agent, models, and memories are hidden from the UI, and there is an assumption that this is what the user is building. Rather a lot of effort will be put into the chain components.
Action (`Node`)
Here's what an "Action" (`node`) means:
`node` is the drag and drop element on the UI.
`node` has "up to a model" but "many memories."
`node` can be a "program" (like calling an API), or it can be "AI-powered" (summarizing text).
`node` can be fetched from DB / ChainFury components / proprietary sources.
`Node` is a `callable` type that incentivizes functional patterns.
`NodeType` is a way to extend Node functionally and UI wise.
The user only builds nodes, and the backend composes the nodes into agents.
Example UI
In the above flow, you can see a programmatic action called `call_api` and a model-powered action called `convert_to_table`. The action takes in `page_text` and loads something from the "redis" database with var `data_rows`. Each node can access a model, here "openai_completion", and user-configurable `prompt`. The output is again stored in the "redis" database.
Reasoning Engine
Users will be able to access many actions prebuilt and created by other users. UI will be powerful enough to build AI-Actions while all the Prog-Actions will be loaded from the `server/components` submodule. Eventually, Prog-Actions can also be built; currently it's not a priority and moreover I would like to stay away from Python's `exec/eval`.
All the AI-Actions will be stored in the DB since the current format really is prompting and passing inputs to a model. This can enable a powerful paradigm where certain AI-Actions can build their own AI-Actions, thus giving them exploration capabilities.
What's next?
Sometime in the future, we can also connect it with plugins so users can connect to their proprietary Actions.
The fury Manifesto
A manifesto is an important document that outlines the principles, beliefs, and goals of a project. It serves as a guiding framework that helps align a product at the intersection of technology and humanities. Manifestos have played a critical role in providing a sense of direction to art, shaping cultural movements, and moving humans forward.
Some of the greatest human pursuits started as a blank piece of paper:
Written By
Yash Bonde
Head of Research