Skip to main content

Your personal AI server and Python package to do anything - like a magical genie

Project description

Genie Bottle logo Genie Bottle

Your personal AI server and Python package to do anything - like a magical genie.


⚠️ Work in Progress: This project is currently under active development. Features and APIs may change.

Genie Bottle is a simple python package and your personal server for doing just about anything with machine learning.

In the worst-to-best order I could think of, Genie Bottle can be used for

text generation,

GIF making inference with one of these models in one line of code

image generation,

GIF making inference with one of these models in one line of code

speech-to-text and text-to-speech,

GIF making inference with one of these models in one line of code

easily generating complicated interactive experiences like a Dungeons and Dragons game,

GIF of generating a dungeons and dragons game with Genie Bottle

making a virtual company of employees,

GIF of generating a team of ai employees to do a task for you

building and running code,

GIF writing and executing code

automating your work as an assistant (interacting with any app on your computer)

GIF automating work as an assistant

and anything else you can think up (read the docs).

Models

Simply, privately and with fun magic analogies, run one of over X models from open and closed-source libraries and services, including:

  • Huggingface (e.g. with Llama2, Wav2Vec2 and Speech2Text2),

  • OpenAI (e.g., with ChatGPT, DALL-E and Whisper) and

  • Stability AI (e.g., with Stable diffusion).

Use it

Genie Bottle can be used from its pre-built app,

Mac | Linux | Windows

GIF using the prebuilt server

the web,

GIF of the Genie Bottle scroll

the terminal,

GIF of coding in the terminal

be integrated into your python applications,

from geniebottle import Magic
from geniebottle.spells import Local, OpenAI

magic = Magic()

magic.add(Local().get('Llama2'))
magic.add(OpenAI().get('DALL-E'))

magic.cast('Can you draw me a cat with a wizards hat?')

GIF coding and running the above code with python

or used to build your own personalised server automagically

from geniebottle import Magic
from geniebottle.spellbooks import Local, OpenAI

magic = Magic()

magic.add(Local.get('Llama2'))
magic.add(OpenAI.get('DALL-E'))

app = magic.FastAPI_app

served using uvicorn

uvicorn main:app --reload

or gunicorn

gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

GIF building the above server in the command line

Perhaps most importantly, you can host your server from home and connect to it from anywhere!

Connect via Tailscale VPN | Connect via local Wifi

Run models locally

DEPLOYMENT VIA HUGGINGFACE TRANSFORMERS wrappers

GIF using models locally

  • or with any AI API service: by integrating with services like OpenAI, Huggingface Endpoints and Stability AI.

GIF using OpenAI and Huggingface APIs with tokens copied from the web browser.

from geniebottle import Magic
from geniebottle.spellbooks import OpenAI, StabilityAI, HuggingfaceEndpoints

magic = Magic(openai_key='YOUR_OPENAI_API_KEY', stabilityai_key='YOUR_STABILITY_AI_API_KEY')

magic.add(OpenAI('Llama2'))
magic.add(StabilityAI('DALL-E'))

magic.cast('Can you draw me a cat with a wizards hat?')

Please contribute if you want to implement a new endpoint that you would like to share with the community.

Use with python 🐍

Genie Bottle is made almost entirely with python. That means, you can integrate it into your projects, or modify it with one of the easiest to read and beginner-friendly programming languages!

Want to contribute or develop locally? Check out the Development Guide to get started with the bottle CLI tool.

Installation

Install Genie Bottle via pip

pip install geniebottle

Add models to your python scripts

Adding new machine learning models is as easy as adding a new spell (quite literally). Using the add() method will automatically connect to and use that service for you.

from geniebottle import Magic
from geniebottle.spellbooks import Local

magic = Magic()

magic.add(Local().get('Llama2'))

magic.cast('Speak to me like a genie')

Make custom spells

You can make custom spells for unique behaviours, like our above Dungeons and Dragons example:

CODE REQUIRED
EXAMPLE USING Llama2 and DALL-E to generate a dungeons and dragons game with images updating what is happening

GIF adding a new model to the server via one line and then it generating both a Llama2 response and an image with DALL-E.

Contribute your custom spells to the community by sharing a spellbook.

Join the Magic

Genie Bottle is licensed under the Mozilla Public License 2.0 (see the LICENSE for specifics, read the FAQ and see NOTICE for the copyright notice). It ensures your work benefits the whole world and remains free. The MPL only creates obligations for you if you want to distribute the software outside your organization.

Parts of the system prompt in the dungeon master example are derived from material taken from the System Reference Document 5.1 ("SRD 5.1") by Wizards of the Coast LLC. The SRD 5.1 is licensed under the CC BY 4.0.

Genie Bottle is crafted with ❤ by Jake Manger, an entirely bootstrapped indie developer.

Support is never required but always appreciated. Join us in this magical journey of making machine learning accessible and enjoyable for everyone!

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

geniebottle-0.0.3.tar.gz (4.9 MB view details)

Uploaded Source

Built Distribution

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

geniebottle-0.0.3-py3-none-any.whl (73.8 kB view details)

Uploaded Python 3

File details

Details for the file geniebottle-0.0.3.tar.gz.

File metadata

  • Download URL: geniebottle-0.0.3.tar.gz
  • Upload date:
  • Size: 4.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.12

File hashes

Hashes for geniebottle-0.0.3.tar.gz
Algorithm Hash digest
SHA256 ca6c6f20ad3d27a4e62bb4dcd03e933b788f5d222612c3f3e5756ab7bb762eed
MD5 b722a9dd2024d60558f88c763cb75739
BLAKE2b-256 e49aeeefad1c310d093f597aacc32b2f8fb957b5f224e933bb6d0b6559457e47

See more details on using hashes here.

File details

Details for the file geniebottle-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: geniebottle-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 73.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.12

File hashes

Hashes for geniebottle-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d8cdcbd3bf588331e4d0a8d415a9060f749b9b60914f1a3d540f9c9ce067df7d
MD5 88cd54cc63c6c9f66151b438d78c21af
BLAKE2b-256 8df443d5679c958e76f2c97626165d8c31375d07efac9192d2b359e33320d78b

See more details on using hashes here.

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