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

Uploaded CPython 3.14Windows x86-64

fabricatio-0.33.0-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.0-cp314-cp314-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

fabricatio-0.33.0-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.0-cp313-cp313-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

fabricatio-0.33.0-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.0-cp312-cp312-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

fabricatio-0.33.0-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.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f1019bfae67fb22da9748038a60d6d94c967f7cb26d5bcbaf2d85b6c47d6cbe3
MD5 12298c6f64a1bc47b03427425fb3d152
BLAKE2b-256 9e1ed609a57d15d7ffb58778bce605d85c58ab9138502a8a09ff978b6f12c99e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0b359379f60081889e91ddc0464ab19fa3e6d3bd1947e53972ea500fffd542ab
MD5 60b21b34ef02f3c0ea44cbbde00ce33d
BLAKE2b-256 5be813cca53c7c0b9b1fd416906e8e51271ccfc55b816a8ef6bcca9f42e78b9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 97d0f14fb9758844437ff5b7769121d5a4bcb83c248505f30a21c69c112ec131
MD5 488f57ec67e10a3a83bfe62258e10dba
BLAKE2b-256 268eea29be699f18b19d8b849d7cb921853e0900a75eec737381dde2e06a7584

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 19791305e3b49da18c5388c0e9a33ed0ba8ac0f1a25cc93c73ecafb3cd4276cb
MD5 28e3591d0cb9e7d50fd40f95a2a04ada
BLAKE2b-256 3244f4f0b742a453bd12f71908e4269d0a4b360cb3b9c1e802adc3ec4ef65755

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 771105f5f82f09702434b86a4f900762ba47f71a95af832e432347daac6c45a3
MD5 39b6f9920daecd9ef4a106af1f94c02f
BLAKE2b-256 443b95380b40a9d7705312e0b8147dae82626d89af912c2cef1f08b437eda3ea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3191b4fb60461d50463423a67e54587fdee7f55ca69c63dcf39db47c9e456ee6
MD5 b4026d4f9369c549756344fbda27f9c8
BLAKE2b-256 e6b902082e1f1886cb9044dd77951d01742f1ce130f43382224abf15d893f370

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0eab8e5fdffecfc67c02b9775eea2ae802a8a3132cbc8a432d1842e2cc4ee9f9
MD5 26a2f9a0e3aa066c621c8d8dcbfd8cb6
BLAKE2b-256 a90c6986efdd43b630d0fac19bb2906eab89d2313f05909bc6c434ea9d377aa2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd74e3949a5c5765cbf4d50762f71c45232fddabeb9bd2d77f7a3ea7582206bf
MD5 e52df3cd7e25700caac08070670698b4
BLAKE2b-256 6b38ed9ff5e27aca9e045a556e8dff8eaaa16ada2d8761c27120d49253d0baf4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f2d157aaf7c64b6e3ba9ff6efa58463e81ae68d4e3149ef72835106d2de28371
MD5 72de4335e924c2ca98264972c3b6b958
BLAKE2b-256 f2d666cc94b3de082c35558e020d010253c6d048ba409aa5506c4fbf96865db5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f8ecf9ac430c4d10b9737a478f384fbf49c85760851f72b8c5684e22085a7107
MD5 1769a7f15949796a53de4188a2378be9
BLAKE2b-256 5273cc4b55f41c3ccc4f02c33dd269758eeceac67b95deefedc87d1e2c4d9f82

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 080a7b661c1e26e5f3621ea3513f62771d95e7d148e87fb732821ae36aca3c26
MD5 f8adef66e1517af86b753844d0816052
BLAKE2b-256 bd9f45b3185febd56b7da1620ac433ad5d27e2995c43af6494d24e2447682ac1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.0-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.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 53f088a88490c3f6f9793a83dd2cf7a95c0bcf0e037579a06b132fbeb4963842
MD5 089c4ad8f59b879ec6f920d405bd1836
BLAKE2b-256 f672f18ba6d520d799f1df440911ac66303612ea954ba8c29fdcd306e3dd49d9

See more details on using hashes here.

Release history Release notifications | RSS feed

0.33.1

12 files

This release

0.33.0 This release

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