tiny_fnc_engine
tiny_fnc_engine is a minimal python library (one file, 212 lines of code) that provides a flexible engine for calling functions extracted from LLM (Large Language Model) outputs in JSON format. The engine stores functions and their outputs in memory, allowing for chained function calls and parameter referencing. It also supports using Pydantic models for type safety and validation.
Features
- Add and call functions dynamically
- Parse function calls from JSON or string format
- Chain multiple function calls
- Store and reference function outputs
- Support for Pydantic models as function parameters and return values
- Reset session to clear stored outputs
- Parse & call functions from OpenAI compatible "tool_calls" format
Documentation
The documentation is available at https://atakantekparmak.github.io/tiny_fnc_engine/.
Warning
Users are responsible for the functions they load in the interpreter.
Project Structure
tiny_fnc_engine/
│
├── tiny_fnc_engine/
│ ├── __init__.py
│ └── engine.py
├── tests/
│ ├── __init__.py
│ └── test_engine.py
├── main.py
├── requirements.txt
├── package_requirements.txt
├── Makefile
└── LICENSE
Requirements
- Python 3.10 or later
Installation and Usage
1. Install from PyPI
- The package is available on PyPI. You can install it using pip:
pip install tiny_fnc_engine
- Then you can use it in your project as follows:
from tiny_fnc_engine import FunctionCallingEngine
from pydantic import BaseModel
# Define a Pydantic model (optional)
class User(BaseModel):
name: str
age: int
def get_user() -> User:
return User(name="Alice", age=30)
def greet_user(user: User) -> str:
return f"Hello, {user.name}!"
# Initialize the engine and load functions
engine = FunctionCallingEngine()
engine.add_functions([get_user, greet_user])
# Optionally, you can load functions from a file
# engine.add_functions_from_file('path/to/functions.py')
# Parse and call functions from an example model response
example_response = """
[
{
"name": "get_user",
"parameters": {},
"returns": [{"name": "user", "type": "User"}]
},
{
"name": "greet_user",
"parameters": {"user": "user"},
"returns": [{"name": "greeting", "type": "str"}]
}
]
"""
results = engine.parse_and_call_functions(example_response, verbose=True)
# Print the results
print(results)
# Reset the session if needed
engine.reset_session()
2. Just grab the code
Since all the code in the library is located in a single file, you can just download it and use it in your project as follows:
curl -o tiny_fnc_engine.py https://raw.githubusercontent.com/AtakanTekparmak/tiny_fnc_engine/main/tiny_fnc_engine/engine.py
and then use it the same way as in the PyPI installation.
3. Build from Source
-
Clone the repository:
git clone https://github.com/yourusername/tiny_fnc_engine.git cd tiny_fnc_engine -
Install dependencies:
make install -
Run the main script:
make run -
Run the tests:
make run_tests
License
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Metadata
Release files for tiny-fnc-engine 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tiny_fnc_engine-0.2.1.tar.gz | 12.6 kB | Without provenance | Details for tiny_fnc_engine-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tiny_fnc_engine-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for tiny_fnc_engine-0.2.1-py3-none-any.whl |
Total release size: 26.7 kB
Release files / tiny_fnc_engine-0.2.1.tar.gz
| Download URL | tiny_fnc_engine-0.2.1.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cbfe5d5e14162a2be9a1edf4c1d221da0492dfb954c0d031afde7f47c30e1134
|
|
BLAKE2b-256 checksum How to use checksums |
45af67c3b4df9a48bb723ea8617a4a00b97865ebff696dacf2a07f5ba3e9019e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.4
|
Release files / tiny_fnc_engine-0.2.1-py3-none-any.whl
| Download URL | tiny_fnc_engine-0.2.1-py3-none-any.whl |
|---|---|
| Size | 14.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
caf903eb6960a2db7899c7ebb585b707c3006b06320c94ecede8ce9ef46150e6
|
|
BLAKE2b-256 checksum How to use checksums |
fec6c864bcd35128830d81887bb8185c8bc5453e2f52f27683243124cd49317a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.4
|
Security for tiny-fnc-engine 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.