Skip to main content

Elysia is an open-source agentic platform for searching data. It is built with customisation in mind, allowing you to build agents and tools that are tailored to your specific use case. It uses Weaviate as the default retrieval tools, and can interface with your data stored in a Weaviate cluster.

Project description

Elysia: Agentic Framework Powered by Decision Trees

⚠️ Elysia is in beta!

If you encounter any issues, please open an issue on GitHub.

PyPI Downloads Demo

Elysia is an agentic platform designed to use tools in a decision tree. A decision agent decides which tools to use dynamically based on its environment and context. You can use custom tools or use the pre-built tools designed to retrieve your data in a Weaviate cluster.

Read the docs!

Installation is as simple as:

pip install elysia-ai

Get started (App)

Run the app via

elysia start

Then navigate to the settings page, add your required API keys, Weaviate cloud cluster details and specify your models.

Don't forget to check out the Github Repository for the Frontend!

Alternatively, we have created a demo version of Elysia (rate-limited, fixed datasets) to experiment with. Find it at: https://elysia.weaviate.io/

Get Started (Python)

To use Elysia, you need to either set up your models and API keys in your .env file, or specify them in the config. See the setup page to get started.

Elysia can be used very simply:

from elysia import tool, Tree

tree = Tree()

@tool(tree=tree)
async def add(x: int, y: int) -> int:
    return x + y

tree("What is the sum of 9009 and 6006?")

Elysia is pre-configured to be capable of connecting to and interacting with your Weaviate clusters!

import elysia
tree = elysia.Tree()
response, objects = tree(
    "What are the 10 most expensive items in the Ecommerce collection?",
    collection_names = ["Ecommerce"]
)

This will use the built-in open source query tool or aggregate tool to interact with your Weaviate collections. To get started connecting to Weaviate, see the setting up page in the docs.

Installation (bash) (Linux/MacOS)

PyPi (Recommended)

Elysia requires Python 3.12:

Optionally create a virtual environment via

python3.12 -m venv .venv
source .venv/bin/activate

Then simply run

pip install elysia-ai

to install straight away!

GitHub

To get the latest development version, you can clone the github repo by running

git clone https://github.com/weaviate/elysia

move to the working directory via

cd elysia

Create a virtual environment with Python (version 3.10 - 3.12)

python3.12 -m venv .venv
source .venv/bin/activate

and then install Elysia via pip

pip install -e .

Done! You can now use the Elysia python package

Configuring Settings

To use Elysia with Weaviate, i.e. for agentic searching and retrieval, you need to either have a locally running instance of Weaviate, or access to a Weaviate cloud cluster via an api key and URL. This can be specific in the app directly, or by creating a .env file with

WCD_URL=...
WCD_API_KEY=...
WEAVIATE_IS_LOCAL=... # True or False

Elysia will automatically detect these when running locally, and this will be the default Weaviate cluster for all users logging into the Elysia app. But these can be configured on a user-by-user basis through the config.

Whichever vectoriser you use for your Weaviate collection you will need to specify your corresponding API key, e.g.

OPENAI_API_KEY=...

These will automatically be added to the headers for the Weaviate client.

Same for whichever model you choose for the LLM in Elysia, so if you are using GPT-4o, for example, specify an OPENAI_API_KEY.

Elysia's recommended config is to use OpenRouter to give easy access to a variety of models. So this requires

OPENROUTER_API_KEY=...

FAQ

How do I use Elysia with my own data?

You can connect to your own Weaviate cloud cluster, which will automatically identify any collections that exist in the cluster.

Collections require being preprocessed for Elysia. In the app, you just click the 'analyze' button in the Data tab. In Python you can do:

from elysia.preprocessing.collection import preprocess

preprocess(collection_names=["YourCollectionName"])
Can I run Elysia completely locally? (Locally running Weaviate, local models)

Yes!

You can connect to a locally running Weaviate instance in Docker, and connect to Ollama for locally running language models. See the setup page to get started.

Help! My local model isn't working with Elysia. It's timing out or there are errors.

Elysia works with quite long context, so some smaller models will struggle with this - it will either take a very long time to complete or the model will error to output the correct structured response.

For a complete guide and troubleshooting, see this page of the documentation.

How do I clear all my Elysia data?

Everything Elysia doesn't store locally will be a collection in your Weaviate cluster. You can delete any collections that start with ELYSIA_ to reset all your Elysia data.

For example, in Python:

from elysia.util.client import ClientManager()
with ClientManager().connect_to_client() as client:
    for collection_name in client.collections.list_all():
        if collection_name.startswith("ELYSIA_"):
            client.collections.delete(collection_name)
Can I contribute to Elysia?

Elysia is fully open source, so yes of course you can! Clone and create a new branch of Elysia via

git clone https://github.com/weaviate/elysia
git checkout -b <branch_name>

Make your changes, push them to your branch, go to GitHub and submit a pull request.

Where is the best place I can start contributing?

There are no 'huge' new features we are planning for Elysia (for the moment). You could start with creating a new tool, or multiple new tools to create a custom workflow for something specific. Look for pain points you experience from your user journey and find what exactly is causing these. Then try to fix them or create an alternative way of doing things!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elysia_ai-0.2.7.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elysia_ai-0.2.7-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

Details for the file elysia_ai-0.2.7.tar.gz.

File metadata

  • Download URL: elysia_ai-0.2.7.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for elysia_ai-0.2.7.tar.gz
Algorithm Hash digest
SHA256 3087cbb4ff8c9b3db647de1381ef1f69b36aa8bc838facac02793424f280b4a6
MD5 e018a4789cf747c2e65ea7488ae56212
BLAKE2b-256 9b0911f3a9ecfe4e429c76150525f6c1386dffd8b57aa64e6b2b61709eda6520

See more details on using hashes here.

Provenance

The following attestation bundles were made for elysia_ai-0.2.7.tar.gz:

Publisher: pypi-release.yml on weaviate/elysia

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file elysia_ai-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: elysia_ai-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for elysia_ai-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 58f66a615e655d5201845b409e5bf79b9bcb8e8f37a49f71357f1f37af0ce77b
MD5 36754b19783f726e3e6fc8060c7f5782
BLAKE2b-256 f4a873ff6aad7fefe71f2ff8c70433d3a8bd3f928e11480e3b76a236e6306c82

See more details on using hashes here.

Provenance

The following attestation bundles were made for elysia_ai-0.2.7-py3-none-any.whl:

Publisher: pypi-release.yml on weaviate/elysia

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page