Dynamically generate JSON Schema from Python code.
Project description
llmfuncs
llmfuncs
is a Python package for documenting, managing, and validating Python functions based on their signature and docstrings. It automatically generates JSON Schema for functions, and provides a way to validate function arguments against the schema.
Features
- Automatic generation of JSON Schema from Python function signature and docstrings.
- Support for Python built-in types and many typing module types.
- Use and validate functions with JSON arguments against their schema.
- Management of multiple functions through a ToolCollection object.
- Bulk addition of functions from a module, a package, or a glob pattern.
- Simple and intuitive API.
Installation
Install llmfuncs
using pip:
pip install llmfuncs
Usage
Tool
The Tool
class encapsulates a function and its associated schema.
from llmfuncs.tool import Tool
def greet(name: str) -> str:
"""Greet someone.
Args:
name: Name of the person to greet.
Returns:
A greeting message.
"""
return f"Hello, {name}!"
tool = Tool(greet)
print(tool.name()) # "greet"
print(tool.schema())
ToolCollection
The ToolCollection
class is a container for multiple Tool
objects. It provides methods to add tools and use them.
from llmfuncs.tool import Tool, ToolCollection
tool_collection = ToolCollection()
tool_collection.add_tool(tool)
print(len(tool_collection)) # 1
You can also add tools in bulk from a module, a package, or a glob pattern.
tool_collection.add_tools_from_module('some_module')
tool_collection.add_tools_from_package('some_package')
tool_collection.add_tools_from_glob('*.py')
And here's how to use a tool:
json_args = '{"name": "World"}'
result = tool_collection.use_tool("greet", json_args)
print(result) # "Hello, World!"
For more detailed usage and examples, please check the API documentation and the example scripts in the examples
folder.
Creating New Tools
If you have an existing module that you want to work with llmfuncs
, you can try passing it through an LLM
to generate the type hints and docstrings for any functions missing them. For example:
Please update this module to add type hints to all function parameters and Google style docstrings to each function.
Contribute
We welcome contributions to llmfuncs
!
License
This project is licensed under the terms of the MIT license. For more details, see the LICENSE file.
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
Built Distribution
File details
Details for the file llmfuncs-0.2.3.tar.gz
.
File metadata
- Download URL: llmfuncs-0.2.3.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9abcf56e526ef0c3cf42cd4e93b971c89436cc6d7ee29509bea34741a30c865a |
|
MD5 | 5b2f4d70b2cf7347bc18543dca41db8e |
|
BLAKE2b-256 | c767480e53299646f02379e49380df88b450964ebed266bb5fef8b69683ca4e7 |
File details
Details for the file llmfuncs-0.2.3-py3-none-any.whl
.
File metadata
- Download URL: llmfuncs-0.2.3-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e869240cfd54d97fffa500d3b56f473f42dc7cee92be0cc3530119fa39ff7f0 |
|
MD5 | 2476d8a647a5bafbe48dde4edeaa7e47 |
|
BLAKE2b-256 | 80d2a56d50af5bb71ec13f77f17d2c127e0aeacda8c31dbcb0775b057e5437a5 |