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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

fabricatio-0.33.1-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.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ccff2405773f8b16e8a6c3d1abb695aa608745083fc3ebe8e6ecd9694a37f0fa
MD5 4ceefd373ac7362c52b9f6e6c7264a18
BLAKE2b-256 d57c63fe79b7f50c5e5f0688be5c664c967e9e835a3fbecc856e35f75434b6a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3d93abb99dedd0fe76cfd1d1ba79149c67bea9dd7f995673029e63f8589dd9df
MD5 cf4e2e7f91a343405c8fa2572ae6fd21
BLAKE2b-256 a9aeacd7a71974d599886d6c5b02a750fc356dad81f3fe21618bc30fd54851a9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 b8c9596cc3c6e6de6e9469134eed6874a25b4d7092935cfaf5930a05a6acfcab
MD5 93d6ebcc8210c058b32fb24b6417bed8
BLAKE2b-256 ce3489efe63797e1af8249a54823875767e41ab74cc62c51f91fee4149d8e426

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fbf5fe0973c027275ec5a2b84b864ee58130a4a90a5e39e46d21ea8782562bc
MD5 4ddeb88582c5741f6367070988092fb1
BLAKE2b-256 1c19d667cc80a9b0c0a87213d673e9dea05ad760c5fe7dfb2d358df59809b837

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0cf89245808469794f618a2da0b7e27191d3260b4750acc43283a01b2d4065bf
MD5 ea03a793800d7af004272c3a064a4a64
BLAKE2b-256 a239d7aad90adad029d35a96ac607f6d92ba3d0859facdcdd2197572d660d663

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f1c20831fd8abe1dd957e9e9a7ae7d8779e46d1450dc92af7065e544c6ae8240
MD5 5d421f660e92e3eeb74df4db085b4761
BLAKE2b-256 4aa974bf30087e889167b2659cc4b84f1bf2d1f7c7784550ccbf5e53e6c7d587

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 379157923096f392bbcb1d170d6002b4f54a44f8adb546336d8c121635e812d3
MD5 f9b2ef757cd76828bd97d408cd42ac88
BLAKE2b-256 62b02f7ad0e676a7a601fc6c67432c925815bb2808c324c537e3c56f9f84a92f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84a800c5ce02fa7c409df91b886bcc937775b3722c1e6e12271aff869edd8e58
MD5 20cdd870aa274cbd6ef7519631fea9f3
BLAKE2b-256 f3a1686847e9b62f6c0e705804d9bc88c05c63bcc25e6346ae46e8986a1e404a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5473bdcb45992329d2998ca9becdde1e00d37a7cc9aaf7f0478273be8ecd9e99
MD5 b2df8c9e9166f3bcc6a103cc6508bd8f
BLAKE2b-256 35fc1dfbff15985b9c18f75a281d6e3557996db74147118151a248be636c309b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 71fec0e35b6c84665dd2a43c27b297e1434e64938a5369ea2b8d258260e5cf21
MD5 bd5442863fa3b1875047b9b92cd34833
BLAKE2b-256 f7f52b5e2a24a447d4a2cd9ac2f0ac3f0870743da003eb5231e2fcbaaafe7154

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 1911c2452538a9e1b31e4071a621967508447d1a2b05f29265806ca90932bb7d
MD5 ca3dd72e1df5319871ba4ff0f40dfda4
BLAKE2b-256 da7d4c83377f2efbca535674d21f632cc986443f38624ec85862160bb38442dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricatio-0.33.1-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.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c7b504cb37574c4886c2d29957156b0b672536f63ffcff949e210898184829d
MD5 5ac84eeb9fd73f2186d286b2930e86a4
BLAKE2b-256 4b94dca4032b1701839646feda2fd1b7c17d907217ebe43c5f31241f2c57828c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.33.1 This release

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