Skip to main content

Extremely lightweight and minimal function calling engine

Project description

tiny_fnc_engine

tiny_fnc_engine is a minimal python library (one file, 177 lines of code) that provides a flexible engine for calling functions extracted from LLM (Large Language Model) outputs in JSON format within an isolated environment. The engine stores functions and their outputs in memory, allowing for chained function calls and parameter referencing.

Features

  • Add and call functions dynamically
  • Parse function calls from JSON format
  • Chain multiple function calls
  • Store and reference function outputs
  • Isolated execution environment

Project Structure

tiny_fnc_engine/
│
├── src/
│   ├── __init__.py
│   └── engine.py
├── tests/
│   ├── __init__.py
│   └── test_engine.py
├── main.py
├── requirements.txt
├── Makefile
└── LICENSE

Installation and Usage

1. Install from PyPI

  1. The package is available on PyPI. You can install it using pip:
pip install tiny_fnc_engine
  1. Then you can use it in your project as follows:
from tiny_fnc_engine import FunctionCallingEngine

# Initialize the engine and load functions from a python file
engine = Engine()
engine.add_functions_from_file('path/to/functions.py')

# Parse and call functions from an example model response
example_response = """
[
    {
        'name': 'get_random_city',
        'parameters': {},
        'returns': [{'name': 'random_city', 'type': 'str'}]
    },
    {
        'name': 'get_weather_forecast',
        'parameters': {'city': 'random_city'},  # Use the output of get_random_city
        'returns': [{'name': 'forecast', 'type': 'dict'}]
    }
]
"""
results = engine.parse_and_call_functions(example_response)

# Print the results
print(results)

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/src/engine.py

and then use it the same way as in the PyPI installation.

3. Build from Source

  1. Clone the repository:

    git clone https://github.com/yourusername/tiny_fnc_engine.git
    cd tiny_fnc_engine
    
  2. Install dependencies:

    make install
    
  3. Run the main script:

    make run
    
  4. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tiny_fnc_engine-0.1.1.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

tiny_fnc_engine-0.1.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file tiny_fnc_engine-0.1.1.tar.gz.

File metadata

  • Download URL: tiny_fnc_engine-0.1.1.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.2

File hashes

Hashes for tiny_fnc_engine-0.1.1.tar.gz
Algorithm Hash digest
SHA256 47cc852bd1a58ea093cb98f3148487a0ac685eb85773a957670e2bb7492dc03c
MD5 10fa9584311aaac3c9e8b63ac47d7fda
BLAKE2b-256 72cc2860be0e56ae4f26165f30e5ac8d7b05cc81632dc55bf1091d11d6d1acb1

See more details on using hashes here.

File details

Details for the file tiny_fnc_engine-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for tiny_fnc_engine-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a2d2f2c6534b2c93be30256fc63343a498c16403e00ea4058921d94ddc81b96b
MD5 5fa18730a1645a76851d87c30110c8aa
BLAKE2b-256 57a835006c5133d2e99fc0231ed2cef3bbcc9b9fbd95552a35833bf88992278e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page