Skip to main content

Python module, that provides a simple way to create and manage ChatGPT tools by python decorators

Project description

openai_tools_decorator

A lightweight Python library that streamlines creating and invoking “tools” (functions) in your OpenAI ChatCompletion-based projects. It lets you register and call both synchronous and asynchronous functions via decorators.

Installation

pip install openai_tools_decorator

Quick Start

1. Import and Initialization

from openai_tools_decorator import OpenAIT

client = OpenAIT()

2. Adding Tools

@client.add_tool(
    {
        "description": "Get current weather for a city",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "The city name in English"}
            },
            "required": ["city"]
        },
    }
)
def get_weather(city: str):
    return f"Weather in {city}: 25°C"

3. Using Tools with Chat

user_input = "How cold is it in Moscow right now?"
response = await client.run_with_tool(
    user_input,
    messages=[],
    model="gpt-4o"
)
print(response)  # The assistant’s response, possibly including a tool call

4. Removing Tools

To remove a tool, use remove_tool with function's name as an argument:

client.remove_tool("get_weather")

If the tool is not found, remove_tool will raise ValueError.

Example

import asyncio
import aiohttp
from openai_tools_decorator import OpenAIT

client = OpenAIT()
api_key = "<YOUR_API_KEY>"

async def fetch_url(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            return await resp.text()

@client.add_tool(
    {
        "description": "Fetch weather from an API",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string",
                    "description": "The city name in English"
                }
            },
            "required": ["city"]
        },
    }
)
async def get_weather(city: str):
    url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
    return await fetch_url(url)

async def main():
    question = "What's the temperature in London?"
    result = await client.run_with_tool(question, messages=[])
    print("Assistant says:", result)

asyncio.run(main())

Key Points

  • You can register **sync and async ** functions.
  • Tools are automatically registered and described for the OpenAI model.
  • The model decides whether to call a tool during the dialogue.
  • You can quickly remove unnecessary tools using remove_tool.

License

Distributed under MIT or any other license of your choice. Contributions and feedback are always welcome!

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

openai_tools_decorator-1.0.3.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openai_tools_decorator-1.0.3-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file openai_tools_decorator-1.0.3.tar.gz.

File metadata

  • Download URL: openai_tools_decorator-1.0.3.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.6

File hashes

Hashes for openai_tools_decorator-1.0.3.tar.gz
Algorithm Hash digest
SHA256 45421a1371b36b2da94d2bbfd40584b7b22205741c10543964d2dad70291d0bd
MD5 b0ab0e2e8251fa13246ee81c610290ca
BLAKE2b-256 99a163977a62ca72cca44aad5e43b740fc445829ff7de2d95f857955167a759d

See more details on using hashes here.

File details

Details for the file openai_tools_decorator-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for openai_tools_decorator-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2e2e92a531e17e754106b4a415cdef17210a1a2ca31d5c42b01de960e641f0d1
MD5 26594e8c3be6d11adc239929cefb2082
BLAKE2b-256 dd0def8e5792dbd84a5558f14c19c1fcae74e23a215a76f2a94607a006a0843a

See more details on using hashes here.

Supported by

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