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.3-cp314-cp314-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14Windows x86-64

fabricatio-0.33.3-cp314-cp314-manylinux_2_34_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

fabricatio-0.33.3-cp314-cp314-manylinux_2_34_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

fabricatio-0.33.3-cp314-cp314-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

fabricatio-0.33.3-cp313-cp313-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13Windows x86-64

fabricatio-0.33.3-cp313-cp313-manylinux_2_34_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

fabricatio-0.33.3-cp313-cp313-manylinux_2_34_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

fabricatio-0.33.3-cp313-cp313-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fabricatio-0.33.3-cp312-cp312-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.12Windows x86-64

fabricatio-0.33.3-cp312-cp312-manylinux_2_34_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

fabricatio-0.33.3-cp312-cp312-manylinux_2_34_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

fabricatio-0.33.3-cp312-cp312-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.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.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ac205b7a562abd01e9bae2a4130c0e752783b4a89ed4b2562c27369b7d11ebb4
MD5 e9b99bada03d5741baf001abf81db66c
BLAKE2b-256 384e5ccac4eaacdfe28d75f4f0be1d24f6713a7c0df526af9e6cd5e63802ade7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp314-cp314-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 2.7 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.3-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2810c42ca905ed527b961d5c3851cecd0be0d25dae4b54ccc9551dc0d4a58cd0
MD5 8c4b6b0fed99d781aab66136e7f34076
BLAKE2b-256 32ea12799250e67805116a74342842f2c69dcf8992dbc414a94e02e3d122083d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp314-cp314-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 2.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.3-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 677a5cc0d066e72d4fd5ea1af06f6c688a47de304555d9c5e94c2793c92e8292
MD5 9382a5ba2fc12c639e9fbf25512ed759
BLAKE2b-256 ed5590f1779cf1514c6aa8e58154a07f2ca150d3ac351affbcc1e1d38e55a738

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.4 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.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a29f51b588c15a224af5eee00a621028d599963ec8fb2377658735515b82517
MD5 0111833de28538246cbfc51346b00ce2
BLAKE2b-256 8239ea0b79a3312f3dfe0d1cd076ec821ec9265bc721492a6fb285ccfeddcdcb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d0dcf9389db98de1e2f9fbc4a20c86cde186c9cade528d0f7c3d29b724d25614
MD5 eaa5273291452084fc1c44e93785fe3e
BLAKE2b-256 9c5546d08d2e1b98fa6cdd37d0908c7d3bea997a461204edcefcb3e1100d9a51

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp313-cp313-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 2.7 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.3-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2e58f8c96923d2f02fe519eb62327f3e0afcfff882d5c6eda45317e339f97660
MD5 4ea8dede86c08ecbde706e1ce624597a
BLAKE2b-256 8d193338a47f0d2a68918f7100a8208b36d3f9478f763b43ffaa72d0759c9f0d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp313-cp313-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 2.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.3-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 cf93a6049cf9f9ef2a387ce21677c1b59579439533719ad277bc3c333ab1d1e5
MD5 f00aee94b59b09b74d78449265f386dd
BLAKE2b-256 f40bef6c7648eca163b90537ff02f60fac8dfe8d39ee16cc1fcb8039629e2518

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.4 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.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21f77974b15c0be0dfd33843718ec8848bc76f98355107d82a8f525e97b609c7
MD5 87fb78468c6cddb4679f417b13c3d814
BLAKE2b-256 41c7c156b2b037fa593795b733095446543b5b4edfce51c7b406aab347e0032f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c5769264620760fd8764607aa55d0ab50520c064350f6da6a3b9fe3d8fb40406
MD5 cf2b691ecf56475fedb1c87692391886
BLAKE2b-256 430c50474381da371ffd266506ce3cc51b3ad38a31829a2f3382881f84eae509

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp312-cp312-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 2.7 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.3-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c4ed6c5b4b955bd128c630164f57c13aaecfcfcc602e9844d846da67e5d76efc
MD5 0929fcda3b4ea55156c04d133bf5e79b
BLAKE2b-256 7f1c1e9e43b390346d73c7e9be21d1278a78d71949406f42ef1775425e405225

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp312-cp312-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 2.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.3-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 c6c7fd6b2d0522350c8a8b011a4715446a494335b6d89861354083824ce066c3
MD5 afd919f755809d95183e6083e4a6c570
BLAKE2b-256 85b7de48b3d9006d4e486d639805fe2fb78671fe659bc77317f0752068dea254

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.3-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.4 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.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f321514b11ed21b182a5ba4cebe77328f7bfa971f1bed891a2e06897710e98a4
MD5 d5c146cbcac05402989699c3234e6f49
BLAKE2b-256 a46b614e8d3edf2f7317e7a8c3a06c9b2b5f4bcbad4b4834663384b78b95357b

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.33.3 This release

12 files

0.33.2

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