fluxem-tools / README.md
hunterbown's picture
fix: correct HuggingFace URL
6f1a0ce verified
# FluxEM Tools
**210+ deterministic computation tools for LLM tool-calling.**
This is a **tool package**, not a fine-tuned model. Use with any capable LLM (GPT-4, Claude, Qwen, Llama, Gemini, etc.) that supports function/tool calling.
## Installation
```bash
pip install fluxem-tools
```
## Quick Start
```python
from fluxem_tools import get_registry, call_tool
# Get the tool registry
registry = get_registry()
print(f"Total tools: {len(registry)}") # 210+
# Call a tool directly
result = call_tool("arithmetic", "2 + 3 * 4")
print(result) # 14
# Physics calculation
ohms = call_tool("electrical_ohms_law", {"voltage": 12, "current": 2})
print(f"Resistance: {ohms} ohms") # 6.0
# List available domains
from fluxem_tools import list_domains
print(list_domains()) # ['arithmetic', 'physics', 'chemistry', ...]
```
## LLM Integration
### OpenAI
```python
from openai import OpenAI
from fluxem_tools import get_registry
client = OpenAI()
tools = get_registry().to_openai_tools()
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "What is 23 * 47?"}],
tools=tools
)
```
### Anthropic Claude
```python
import anthropic
from fluxem_tools import get_registry
client = anthropic.Anthropic()
tools = get_registry().to_anthropic_tools()
response = client.messages.create(
model="claude-3-opus-20240229",
messages=[{"role": "user", "content": "Calculate BMI for 70kg, 1.75m"}],
tools=tools
)
```
### HuggingFace Transformers
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from fluxem_tools import get_registry
model_id = "Qwen/Qwen3-4B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
tools = get_registry().to_openai_tools()
# Use with model's tool calling capabilities
```
## Tool Categories (40+ domains)
### Core Mathematics (30 tools)
- **arithmetic**: Basic operations, expressions
- **number_theory**: Primes, GCD, LCM, factorization
- **combinatorics**: Factorial, permutations, combinations
- **statistics**: Mean, median, variance, correlation
- **probability**: Distributions, Bayes' rule
- **calculus**: Derivatives, integrals
### Science & Engineering (60+ tools)
- **physics**: Unit conversion, dimensional analysis
- **chemistry**: Molecular weight, balancing equations
- **biology**: DNA/RNA analysis, protein calculations
- **electrical**: Ohm's law, circuits, power
- **thermodynamics**: Heat transfer, gas laws, Carnot efficiency
- **acoustics**: Decibels, Doppler effect, wavelength
- **astronomy**: Orbital mechanics, parallax, moon phase
- **optics**: Lenses, refraction, diffraction
- **fluid_dynamics**: Reynolds number, Bernoulli, drag
- **nuclear**: Radioactive decay, binding energy
### Advanced Mathematics (25 tools)
- **math_advanced**: Vectors, matrices, complex numbers
- **geometry**: Distance, rotation, transformations
- **graphs**: Shortest path, connectivity
- **sets**: Union, intersection, complement
- **logic**: Tautology checking
- **geometric_algebra**: Clifford algebra Cl(3,0)
### Data & Information (20 tools)
- **data**: Array operations, records
- **information_theory**: Entropy, KL divergence
- **signal_processing**: Convolution, DFT, filters
- **text**: Levenshtein distance, readability metrics
### Finance & Economics (15 tools)
- **finance**: Compound interest, NPV, loan payments
- **currency**: Exchange rates, inflation adjustment
### Everyday Practical (50+ tools)
- **cooking**: Recipe scaling, unit conversion
- **fitness**: BMI, BMR, heart rate zones
- **travel**: Timezone conversion, fuel consumption
- **diy**: Paint area, tile count, lumber calculation
- **photography**: Exposure, depth of field, focal length
- **gardening**: Soil volume, water needs, spacing
- **security**: RBAC permission checking
### Music & Time (10 tools)
- **music**: Chord analysis, transposition
- **temporal**: Date arithmetic, day of week
## Tool Reference
Every tool is deterministic - same input always produces same output.
### Example Tools
| Tool | Description | Example |
|------|-------------|---------|
| `arithmetic` | Evaluate math expression | `"2 + 3 * 4"` β†’ `14` |
| `electrical_ohms_law` | V = I Γ— R | `{V:12, I:2}` β†’ `6.0` |
| `chemistry_mw` | Molecular weight | `"H2O"` β†’ `18.015` |
| `fitness_bmi` | Body Mass Index | `{weight:70, height:1.75}` β†’ `22.86` |
| `geo_distance` | Haversine distance | NYC to LA β†’ `3935746 m` |
| `acoustics_db_add` | Add decibels | `{60, 60}` β†’ `63.01` |
| `photo_depth_of_field` | DoF calculation | Near/far limits |
## Export Formats
```python
from fluxem_tools import get_registry
registry = get_registry()
# OpenAI format
openai_tools = registry.to_openai_tools()
# Anthropic format
anthropic_tools = registry.to_anthropic_tools()
# Full JSON export
registry.export_json("tools.json")
# JSON Schema
schema = registry.to_json_schema()
```
## Search and Filter
```python
from fluxem_tools import search_tools, list_domains
# Search by keyword
voltage_tools = search_tools("voltage")
for tool in voltage_tools:
print(f"{tool.name}: {tool.description}")
# Get tools by domain
domains = list_domains()
registry = get_registry()
electrical_tools = registry.get_domain_tools("electrical")
```
## Why Deterministic Tools?
LLMs are powerful but unreliable at precise computation. FluxEM Tools provides:
1. **Accuracy**: Deterministic computation, not stochastic generation
2. **Consistency**: Same input always produces same output
3. **Speed**: Direct calculation, no inference needed
4. **Coverage**: 210+ tools across 40+ domains
5. **Integration**: Works with any LLM that supports tool calling
## Benchmarks
Using base Qwen3-4B-Instruct (no fine-tuning):
- **Tool Selection Accuracy**: 91.7%
- **Argument Parsing Accuracy**: 94.2%
- **End-to-End Accuracy**: 89.3%
The tools themselves are 100% accurate - they're deterministic computations.
## Adding Custom Tools
```python
from fluxem_tools import ToolSpec, get_registry
# Create a custom tool
custom_tool = ToolSpec(
name="my_custom_tool",
function=lambda args: args["x"] ** 2,
description="Square a number",
parameters={
"type": "object",
"properties": {
"x": {"type": "number", "description": "Number to square"}
},
"required": ["x"]
},
domain="custom",
tags=["math", "square"]
)
registry = get_registry()
registry.register(custom_tool)
```
## License
MIT License
## Links
- [GitHub Repository](https://github.com/Hmbown/FluxEM)
- [PyPI Package](https://pypi.org/project/fluxem-tools/)
- [HuggingFace](https://huggingface.co/hunterbown/fluxem-tools)
## Citation
```bibtex
@software{fluxem_tools,
author = {Hunter Bown},
title = {FluxEM Tools: Deterministic Computation Tools for LLM Tool-Calling},
year = {2026},
url = {https://github.com/Hmbown/FluxEM}
}
```