Skip to main content

Lilypad

An open-source LLM engineering platform built on these principles:

  • Building with LLMs introduces non-determinisim to your code, which requires...
  • Tracking all input/output pairs and the exact version of the code that produced them so you can...
  • Continuously evaluate and optimize your code, which requires...
  • Involving business users and domain experts.

[!IMPORTANT] Lilypad is still in beta

This means that things like the user interface, database schemas, etc. are still subject to change. We do not yet recommend fully relying on this project in production, but we've found it works quite well in its current stage.

If you're interested in participating in the closed beta of Lilypad Pro, join our community and DM William Bakst :)

We also welcome contributions with open arms! If you're interested in contributing, just do it! We're here to help.

Quickstart

To get started with Lilypad:

  1. Create an account at https://app.lilypad.so. You can also run Lilypad locally if you'd prefer.
  2. Navigate to your organization settings
  3. Create a project, and then create an API key for that project. a. Save your LILYPAD_PROJECT_ID and LILYPAD_API_KEY (e.g. in a .env file).
  4. Install Lilypad: uv add "python-lilypad[openai]" # specify your provider of choice
  5. Run your first generation:
import os

import lilypad
from openai import OpenAI  # use your provider of choice

os.environ["LILYPAD_PROJECT_ID"] = "..."
os.environ["LILYPAD_API_KEY"] = "..."
os.environ["OPENAI_API_KEY"] = "..."

lilypad.configure()    # Automatically trace LLM API calls
client = OpenAI()


@lilypad.generation()  # Automatically version non-deterministic functions
def answer_question(question: str) -> str | None:
    completion = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": f"Answer this question: {question}"},
        ],
    )
    return completion.choices[0].message.content


answer = answer_question("What is the capital of France?")
print(answer)
# > The capital of France is Paris.

And that's it! Now you've versioned and traced your first non-deterministic function with Lilypad.

Usage

We are actively working on this library and it's documentation, which you can find here

Versioning

Lilypad uses Semantic Versioning

License

This project uses a dual-license model:

Open-Source License (MIT)

Except for the contents and code contained in any ee directory or sub-directory of this repository, which is covered by a commercial license (see below), all code in this repository is licensed under the terms of the MIT License.

Enterprise Edition (EE) License

The contents and code of any ee directory or sub-directory of this repository are licensed under the Enterprise Edition (EE) License. This content and code is only available to users using the Lilypad App or those with a valid Enterprise Edition (EE) License. See ee/LICENSE for the full terms.

Self-Hosting:

For those looking to self-host the Enterprise Edition (EE) of Lilypad, please reach out to sales@mirascope.com.

You can find more information about self-hosting here.

Metadata

Release files for python-lilypad 0.0.34

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-lilypad 0.0.34
File Size Uploaded
python_lilypad-0.0.34.tar.gz 828.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-lilypad 0.0.34
File Interpreter ABI Platform
python_lilypad-0.0.34-py3-none-any.whl Python 3 none any Details

Total release size: 2.5 MB

Release files / python_lilypad-0.0.34.tar.gz

Download URL python_lilypad-0.0.34.tar.gz
Size 828.0 kB
Tags Source
SHA-256 checksum
How to use checksums
abe7373cec6e00f1ef82aef3edfb16935ad4dc270ea7806689d6c9a3f47a96fe
BLAKE2b-256 checksum
How to use checksums
9fca0aa00c0cd8cdeda217fd8958a26635aeaa88a4f675820d04b33542af49ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.5.6

Release files / python_lilypad-0.0.34-py3-none-any.whl

Download URL python_lilypad-0.0.34-py3-none-any.whl
Size 1.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
0aebee4c138e7b5c430673fbbabb704d22abd9337f515d0372e0e5bdd1dbe14b
BLAKE2b-256 checksum
How to use checksums
a3ca3c941f0655dafec21be28f71728b4dca5a259ecf4b96d14dc8a7b0e25a56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.5.6
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page