Vulcan v1.2.0 Explainability Reports are Here!
In this release, we're excited to announce Vulcan's latest feature: explainability reporting! 🎉
Vulcan's explainability features allow AI application developers and operators deeper insight into how their AI-powered systems make decisions. Instead of using large complex prompts with opaque LLM models, Vulcan's approach combines rule-based logic with LLM microprompts, allowing for vastly improved traceability in AI-powered decision-making processes.
Enabling explainability reporting is easy! First, create your Facts and Rule definitions:
engine = RuleEngine()
engine.rule(
name="Order more apples if delicious",
when=condition(f"Are {Inventory.apple_kind} considered delicious by most people?"),
then=action(partial(QueuedOrder, apples=50)),
)
Then set your initial Fact state and evaluate your rules with auditing enabled. A report will be available when the evaluation completes.
engine.fact(Inventory(apples=5, apple_kind="fuji"))
engine.evaluate(audit=True)
engine.yaml_report()
report:
iterations:
- id: 0
timestamp: '2025-07-14T16:07:14.742891Z'
elapsed: 2.441
matches:
- rule: 205a7ab3:Order more apples if delicious
timestamp: '2025-07-14T16:07:14.742920Z'
elapsed: 2.441
evaluation: True = Are {Inventory.apple_kind|fuji|} considered delicious by most people?
consequences:
QueuedOrder.apples: 50
rationale: Fuji apples are generally considered delicious by most people due to their sweetness and crisp texture.
Congratulations! 🎉
With Vulcan, you just took your first step towards better AI repeatability and explainability!
→ Learn more about Vulcan Explainability Reports
In addition to new features, several bug and performance improvements coincide with this release. Below is the complete list of changes:
What's Changed
- Fix for KeyError if some facts are missing by @segfly in #62
- Fix for AICondition inversion error by @segfly in #69
- Improved resliency of lambda parsing and argument extraction by @segfly in #70
- Improve internal prompting techniques for AI rules by @segfly in #72
- New explainability reporting feature by @segfly in #75
- Prevent rules interfering with one another in the same iteration by @segfly in #77
Full Changelog: v1.1.5...v1.2.0