Skip to main content

Fabricatio Logo

MIT License Python Versions PyPI Version Ask DeepWiki PyPI Downloads (Week) PyPI Downloads Bindings: PyO3 Build Tool: uv + maturin

Build Package Ruff Lint Tests Coverage Status Documentation Status GitHub Issues GitHub Pull Requests GitHub Stars


Overview

Fabricatio is a streamlined Python library for building LLM applications using an event-based agent structure. It leverages Rust for performance-critical tasks, Handlebars for templating, and PyO3 for Python bindings.

Features

  • Event-Driven Architecture: Robust task management through an EventEmitter pattern.
  • LLM Integration & Templating: Seamlessly interact with large language models and dynamic content generation.
  • Async & Extensible: Fully asynchronous execution with easy extension via custom actions and workflows.

Installation

# install fabricatio with full capabilities.
pip install fabricatio[full]

# or with uv

uv add fabricatio[full]


# install fabricatio with only rag and rule capabilities.
pip install fabricatio[rag,rule]

# or with uv

uv add fabricatio[rag,rule]

You can download the templates from the github release manually and extract them to the work directory.

curl -L https://github.com/Whth/fabricatio/releases/download/v0.19.1/templates.tar.gz | tar -xz

Or you can use the cli tdown bundled with fabricatio to achieve the same result.

tdown download --verbose -o ./

Note: fabricatio performs template discovery across multiple sources with filename-based identification. Template resolution follows a priority hierarchy where working directory templates override templates located in <ROAMING>/fabricatio/templates.

Usage

Basic Example

"""Example of a simple hello world program using fabricatio."""

from typing import Any

# Import necessary classes from the namespace package.
from fabricatio import Action, Event, Role, Task, WorkFlow, logger


# Create an action.
class Hello(Action):
    """Action that says hello."""

    output_key: str = "task_output"

    async def _execute(self, **_) -> Any:
        ret = "Hello fabricatio!"
        logger.info("executing talk action")
        return ret


# Create the role and register the workflow.
(Role(name="talker")
 .subscribe(Event.quick_instantiate("talk"), WorkFlow(name="talk", steps=(Hello,)))
 .dispatch())

# Make a task and delegate it to the workflow registered above.
assert Task(name="say hello").delegate_blocking("talk") == "Hello fabricatio!"

Examples

For various usage scenarios, refer to the following examples:

  • Simple Chat
  • Structured Output
  • Extraction
  • Content Improvement
  • Retrieval-Augmented Generation (RAG)
  • Article Extraction
  • Propose Task
  • Code Review
  • Write Outline

(For full example details, see Examples)

Configuration

Fabricatio supports flexible configuration through multiple sources, with the following priority order: Call Arguments > ./.env > Environment Variables > ./fabricatio.toml > ./pyproject.toml > <ROMANING>/fabricatio/fabricatio.toml > Builtin Defaults.

Below is a unified view of the same configuration expressed in different formats:

Environment variables or dotenv file

FABRICATIO_LLM__SEND_TO=openai/gpt-3.5-turbo
FABRICATIO_LLM__TEMPERATURE=1.0
FABRICATIO_LLM__TOP_P=0.35
FABRICATIO_LLM__STREAM=false
FABRICATIO_LLM__MAX_COMPLETION_TOKENS=8192
FABRICATIO_DEBUG__LOG_LEVEL=INFO

fabricatio.toml file

[debug]
log_level = "DEBUG"


[llm]
send_to = "base" # send req to `base` group by default
max_completion_tokens = 32000
stream = false
temperature = 1.0
top_p = 0.35


[routing]
providers = [
    { ptype = "OpenAICompatible", key = "sk-...", name = "mm", base_url = "https://api.example.com/v1/" }
]

completion_deployments = [
    { id = "mm/a-completion-model", group = 'base', tpm = 100_000, rpm = 1000 }
]
cache_database_path = "path/to/.cache.db"

pyproject.toml file

[tool.fabricatio.debug]
log_level = "DEBUG"


[tool.fabricatio.llm]
send_to = "base" # send req to `base` group by default
max_completion_tokens = 32000
stream = false
temperature = 1.0
top_p = 0.35


[tool.fabricatio.routing]
providers = [
    { ptype = "OpenAICompatible", key = "sk-...", name = "mm", base_url = "https://api.example.com/v1/" }
]

completion_deployments = [
    { id = "mm/a-completion-model", group = 'base', tpm = 100_000, rpm = 1000 }
]
cache_database_path = "path/to/.cache.db"

Contributing

We welcome contributions from everyone! Before contributing, please read our Contributing Guide and Code of Conduct.

License

Fabricatio is licensed under the MIT License. See LICENSE for details.

Acknowledgments

Special thanks to the contributors and maintainers of:

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

fabricatio-0.33.2-cp314-cp314-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.14Windows x86-64

fabricatio-0.33.2-cp314-cp314-manylinux_2_34_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

fabricatio-0.33.2-cp314-cp314-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

fabricatio-0.33.2-cp314-cp314-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

fabricatio-0.33.2-cp313-cp313-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.13Windows x86-64

fabricatio-0.33.2-cp313-cp313-manylinux_2_34_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

fabricatio-0.33.2-cp313-cp313-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

fabricatio-0.33.2-cp313-cp313-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fabricatio-0.33.2-cp312-cp312-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.12Windows x86-64

fabricatio-0.33.2-cp312-cp312-manylinux_2_34_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

fabricatio-0.33.2-cp312-cp312-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

fabricatio-0.33.2-cp312-cp312-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file fabricatio-0.33.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7b767eb3f09876a3cafe0c9cda0a7ecd8b2693c8ebe86a06ac576a64945a841c
MD5 9c9d56224e18db3d04fa8ecc3103a313
BLAKE2b-256 d822a75d155704ca359bb95026810052c38e96dea2e0dca465f519fab8ea5504

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp314-cp314-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ff2831a213a07c5155ead8cc04e0b71cf6a8accf896470e1bf831b84f70b2eac
MD5 2db91a3421266ba8f5e34094afe82d6d
BLAKE2b-256 f3622b67d937b0b06845d05296be51a7534c4939005f01726dba3a8281f96805

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp314-cp314-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 5ad75e90ecdecaade4461f76da28bd452a44eb0da99c89d2e6d8303a4f8a5a9d
MD5 f2136ec0ea0ac45088511a47d4eafede
BLAKE2b-256 b7528c2a2603819891d47ddd49328473cc28750931abb49e0559025fba99868b

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41c97266968d61884eb2adc5ec196c47a736039ba8bbc22415d501fe6f3576ce
MD5 b3582a63ea36156624575b1cd2a467fd
BLAKE2b-256 9c4532765267068ce843c82c872e2681b3093ae45916c555977e42ed156f30bb

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 81ad0e0f6ba0a761dcb9fe2c6b65b44eb5b6f04961ca0488901f8f62174463e0
MD5 598fc75cec13b2b0cda5cf2d0aeaa434
BLAKE2b-256 900a24cfd85364637144725a0bab2342e7c8c0a99d57c05f5412ad533119d944

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp313-cp313-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4d61346a48ad8a054be2684ac857bf2cebb6711a8310491a6276e09e5a3d24d6
MD5 396877c8ead2829b833594b7586b2921
BLAKE2b-256 8637ee33864dda63964764f23318b83f4f85a047474f1c99be2af7b405cafcc0

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp313-cp313-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 6813196fdf0183c6cb4eb90ad602f604c0e26baf318a12ef46b66a82d7e829cd
MD5 09c0b6a0380df8f4a49a9b98693503e2
BLAKE2b-256 dc8a79d25a2f33b2014e103cbd7e4d6001542d99227baf21296a4aa1b43591ab

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d22f52a27088854d32199f1278cee621501f8785ce04ff516952ce675a3a5c7
MD5 5606d9704894c6e4fff0cb4fbb203646
BLAKE2b-256 0dfe72196babd0f1ac5dc4adab22f9f10af8b880f65b86f735526a93bb43b5f8

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7d947e1c90e40dbb7cec7b22f942bf3a53c6002cc3566c47e640ffe0aa47f6bf
MD5 da238c56103f41421e4d29b732b9dca1
BLAKE2b-256 9aead00c9e92e8ef383ea8bf8e402eb0dcaa54b9503e7d22ca78f31a68cf0fe8

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp312-cp312-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ac0d7bfa06b061b562154d227cfd600dd624b030617da10d6867e0afb1dcb467
MD5 623a4b96893260a5c04b040dd4b2c10d
BLAKE2b-256 0d065a911d3e098bb09ccfd714a7d0b3e7191d1158fcea647383b4929df6bff2

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp312-cp312-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 fda5c190202c9ea6e08bed4b7a52c16406a1de386546cfd675f7bd1b45d14d66
MD5 aaa0d3b7954cad08cad4f2fa6efdfc63
BLAKE2b-256 7fc34f7b84b1f272dc36649fffe0885beaa478d21c10d426e47e4cb08967f38c

See more details on using hashes here.

File details

Details for the file fabricatio-0.33.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio-0.33.2-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio-0.33.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cf888ad341fcf0622836f5f819a5942877452c4a7926dfd492b049546e397831
MD5 ef6f41395f367ad73ec1a681a868aec1
BLAKE2b-256 24f3e7aaf14bad44af93c73ef92f1f50dcb7a59611c0529201d347c08b23b6ad

See more details on using hashes here.

Release history Release notifications | RSS feed

0.33.3

12 files

This release

0.33.2 This release

12 files

0.33.1

12 files

0.33.0

12 files

0.32.3

11 files

0.32.2

12 files

0.32.1

12 files

0.32.0

12 files

0.31.3

12 files

0.30.4

12 files

0.30.3

12 files

0.30.2

12 files

0.30.1

12 files

0.30.0

12 files

0.29.2

12 files

0.29.1

12 files

0.29.0

12 files

0.28.0

12 files

0.27.1

12 files

0.27.0

12 files

0.26.3

12 files

0.26.2

12 files

0.26.1

12 files

0.26.0

12 files

0.24.2

12 files

0.24.1

12 files

0.24.0

12 files

0.23.1

12 files

0.23.0

12 files

0.22.2

12 files

0.22.1

12 files

0.22.0

12 files

0.21.3

12 files

0.21.1

12 files

0.21.0

12 files

0.20.10

12 files

0.20.8

8 files

0.20.6

8 files

0.20.5

8 files

0.20.4

8 files

0.20.3

8 files

0.20.2

8 files

0.20.1

8 files

0.19.8

8 files

0.19.7

8 files

0.19.6

8 files

0.19.5

8 files

0.19.4

8 files

0.19.3

8 files

0.19.2

8 files

0.19.1

8 files

0.19.0

8 files

0.18.1

8 files

0.18.0

8 files

0.17.2

8 files

0.17.1

8 files

0.17.0

8 files

0.16.2

8 files

0.16.1

8 files

0.16.0

6 files

0.15.1

6 files

0.15.0

8 files

0.14.5

8 files

0.14.4

8 files

0.14.3

8 files

0.14.2

8 files

0.14.1

8 files

0.14.0

8 files

0.13.0

8 files

0.12.0

8 files

0.11.0

8 files

0.10.1

8 files

0.10.0

8 files

0.9.4

4 files

0.9.1

4 files

0.9.0

4 files

0.8.3

4 files

0.8.1

4 files

0.8.0

3 files

0.7.0

3 files

0.6.7

3 files

0.6.6

3 files

0.6.4

5 files

0.6.2

5 files

0.6.1

3 files

0.6.0

5 files

0.5.0

5 files

0.4.4

5 files

0.4.0

2 files

0.3.14

5 files

0.3.13

3 files

0.2.12

3 files

0.2.11

3 files

0.2.10

3 files

0.2.9

3 files

0.2.8

3 files

0.2.7

3 files

0.2.6

3 files

0.2.5

3 files

0.2.4

3 files

0.2.3

3 files

0.2.2

3 files

0.2.1

3 files

0.2.0

3 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

Supported by

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