<!-- SPDX-License-Identifier: Apache-2.0 -->
<!-- Copyright 2025 Latchfield Technologies http://latchfield.com -->
<img alt="Vulcan Logo" src="https://latchfield.com/vulcan/assets/images/vulcan-logo.svg" height="100px">
# AI-Hybrid Rules Engine for Logical Reasoning
[](https://pypi.org/project/vulcan-core/)
Vulcan is an AI-hybrid rules engine designed for advanced automated reasoning. It combines the power of rule-based decision systems with LLMs (Large Language Models) for improved consistency and explainability in AI-powered systems.
Learn more about Vulcan at [https://latchfield.com/vulcan](https://latchfield.com/vulcan), or jump in with:
```bash
poetry add vulcan-core
# or
pip install vulcan-core
```
To gain your bearings, read the documentation for guides and API reference: [https://latchfield.com/vulcan/docs](https://latchfield.com/vulcan/docs).
## Why use Vulcan?
Vulcan strives to improve AI reliability and explainability by explicitly separating computational logic from LLM prediction through declarative rules and microprompting. Vulcan provides developers with a toolkit to create, manage, and execute rules with seamless integration with LLMs and vector databases.
### Features:
* **AI-Hybrid Rules** - Combine deterministic logic with LLMs and vector databases
* **Transparent Decision-Making** - Full explainability of how decisions are made
* **Developer-Friendly API** - Intuitive interfaces for rule creation and management
* **Platform Flexibility** - Works across various environments and integrates with existing tools
### Simple Example:
Turn your lengthy unpredictable prompts:
> As a bakery, I want to buy 10 apples if I have less than 10 in inventory, but only if my supplier has apples used for baking in stock. Given I have 9 apples, and my supplier has "Honeycrisp", how many apples should I order?
Into repeatable, consistent, and explainable rules:
```python
# Use natural language for prediction and data retrieval:
engine.rule(
when=condition(f"Are {Apple.kind} considered good for baking?"),
then=action(Apple(baking=True)),
)
# Use computed logic for operations that must be correct:
engine.rule(
when=condition(lambda: Apple.baking and Inventory.apples < 10),
then=action(Order(apples=10)),
)
# Intelligent on-demand rule evaluation:
engine.fact(Inventory(apples=9))
engine.fact(Apple(kind="Honeycrisp"))
```
## Get Involved!
We welcome contributions from the community to help make Vulcan even better:
* **Contribute Code** - Check out the [contribution guidelines](https://github.com/latchfield/vulcan/blob/main/CONTRIBUTING.md) for information on how to submit pull requests
* **Report Issues** - Found a bug or have a feature request? Open an issue on our [GitHub repository](https://github.com/latchfield/vulcan-core/issues/)
* **Join the Community** - Connect with other Vulcan users and developers on [GitHub Discussions](https://github.com/latchfield/vulcan-core/discussions)
## Additional Resources
Learn more about Vulcan:
* [Core Concepts](https://latchfield.com/vulcan/docs/concepts) - Understand the fundamental principles of Vulcan
* [Guides & Tutorials](https://latchfield.com/vulcan/docs/guides/quick-start/) - Step-by-step instructions for common use cases
* [API Reference](https://latchfield.com/vulcan/docs/) - Detailed information about the Vulcan API
Raw data
{
"_id": null,
"home_page": null,
"name": "vulcan-core",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": "rules, logic, reasoning, ai, artificial intelligence, RAG, LLM",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/81/96/8a2da9332c49754c3a096a24672c8711181b2aa0f06d83948290263bbdb7/vulcan_core-1.2.0.tar.gz",
"platform": null,
"description": "<!-- SPDX-License-Identifier: Apache-2.0 -->\n<!-- Copyright 2025 Latchfield Technologies http://latchfield.com -->\n<img alt=\"Vulcan Logo\" src=\"https://latchfield.com/vulcan/assets/images/vulcan-logo.svg\" height=\"100px\">\n\n# AI-Hybrid Rules Engine for Logical Reasoning\n[](https://pypi.org/project/vulcan-core/)\n\nVulcan is an AI-hybrid rules engine designed for advanced automated reasoning. It combines the power of rule-based decision systems with LLMs (Large Language Models) for improved consistency and explainability in AI-powered systems.\n\nLearn more about Vulcan at [https://latchfield.com/vulcan](https://latchfield.com/vulcan), or jump in with:\n\n```bash\npoetry add vulcan-core\n# or\npip install vulcan-core\n```\n\nTo gain your bearings, read the documentation for guides and API reference: [https://latchfield.com/vulcan/docs](https://latchfield.com/vulcan/docs).\n\n## Why use Vulcan?\nVulcan strives to improve AI reliability and explainability by explicitly separating computational logic from LLM prediction through declarative rules and microprompting. Vulcan provides developers with a toolkit to create, manage, and execute rules with seamless integration with LLMs and vector databases.\n\n### Features:\n* **AI-Hybrid Rules** - Combine deterministic logic with LLMs and vector databases\n* **Transparent Decision-Making** - Full explainability of how decisions are made\n* **Developer-Friendly API** - Intuitive interfaces for rule creation and management\n* **Platform Flexibility** - Works across various environments and integrates with existing tools\n\n### Simple Example:\nTurn your lengthy unpredictable prompts:\n\n> As a bakery, I want to buy 10 apples if I have less than 10 in inventory, but only if my supplier has apples used for baking in stock. Given I have 9 apples, and my supplier has \"Honeycrisp\", how many apples should I order?\n\nInto repeatable, consistent, and explainable rules:\n\n```python\n# Use natural language for prediction and data retrieval:\nengine.rule(\n when=condition(f\"Are {Apple.kind} considered good for baking?\"),\n then=action(Apple(baking=True)),\n)\n\n# Use computed logic for operations that must be correct:\nengine.rule(\n when=condition(lambda: Apple.baking and Inventory.apples < 10),\n then=action(Order(apples=10)),\n)\n\n# Intelligent on-demand rule evaluation:\nengine.fact(Inventory(apples=9))\nengine.fact(Apple(kind=\"Honeycrisp\"))\n```\n\n## Get Involved!\nWe welcome contributions from the community to help make Vulcan even better:\n\n* **Contribute Code** - Check out the [contribution guidelines](https://github.com/latchfield/vulcan/blob/main/CONTRIBUTING.md) for information on how to submit pull requests\n* **Report Issues** - Found a bug or have a feature request? Open an issue on our [GitHub repository](https://github.com/latchfield/vulcan-core/issues/)\n* **Join the Community** - Connect with other Vulcan users and developers on [GitHub Discussions](https://github.com/latchfield/vulcan-core/discussions)\n\n## Additional Resources\nLearn more about Vulcan:\n\n* [Core Concepts](https://latchfield.com/vulcan/docs/concepts) - Understand the fundamental principles of Vulcan\n* [Guides & Tutorials](https://latchfield.com/vulcan/docs/guides/quick-start/) - Step-by-step instructions for common use cases\n* [API Reference](https://latchfield.com/vulcan/docs/) - Detailed information about the Vulcan API\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "AI-Hybrid Rules Engine for Logical Reasoning.",
"version": "1.2.0",
"project_urls": {
"Documentation": "https://latchfield.com/vulcan/docs",
"Homepage": "https://latchfield.com/vulcan",
"Repository": "https://github.com/latchfield/vulcan-core"
},
"split_keywords": [
"rules",
" logic",
" reasoning",
" ai",
" artificial intelligence",
" rag",
" llm"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "576310fd690725cc41487dcb53dd13cd9b47c39ebeb7c019406959f9fd2e1cc0",
"md5": "4fd09933dc9fd4dfef0d3ddb090b36d2",
"sha256": "2da6bc5c9d759636ef776d6f83983b80b3bb59b74f903ff5cd031844e6a0b1a5"
},
"downloads": -1,
"filename": "vulcan_core-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4fd09933dc9fd4dfef0d3ddb090b36d2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 34352,
"upload_time": "2025-07-14T19:45:55",
"upload_time_iso_8601": "2025-07-14T19:45:55.305480Z",
"url": "https://files.pythonhosted.org/packages/57/63/10fd690725cc41487dcb53dd13cd9b47c39ebeb7c019406959f9fd2e1cc0/vulcan_core-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "81968a2da9332c49754c3a096a24672c8711181b2aa0f06d83948290263bbdb7",
"md5": "f1c7dd410f26deabda0231b6762b7f69",
"sha256": "640236afcbf8828897970910c4d6bd8093bd4ebefcf1ede8fe562900e93ba670"
},
"downloads": -1,
"filename": "vulcan_core-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "f1c7dd410f26deabda0231b6762b7f69",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 31128,
"upload_time": "2025-07-14T19:45:56",
"upload_time_iso_8601": "2025-07-14T19:45:56.598861Z",
"url": "https://files.pythonhosted.org/packages/81/96/8a2da9332c49754c3a096a24672c8711181b2aa0f06d83948290263bbdb7/vulcan_core-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-14 19:45:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "latchfield",
"github_project": "vulcan-core",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "vulcan-core"
}