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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45421a1371b36b2da94d2bbfd40584b7b22205741c10543964d2dad70291d0bd
|
|
| MD5 |
b0ab0e2e8251fa13246ee81c610290ca
|
|
| BLAKE2b-256 |
99a163977a62ca72cca44aad5e43b740fc445829ff7de2d95f857955167a759d
|
File details
Details for the file openai_tools_decorator-1.0.3-py3-none-any.whl.
File metadata
- Download URL: openai_tools_decorator-1.0.3-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e2e92a531e17e754106b4a415cdef17210a1a2ca31d5c42b01de960e641f0d1
|
|
| MD5 |
26594e8c3be6d11adc239929cefb2082
|
|
| BLAKE2b-256 |
dd0def8e5792dbd84a5558f14c19c1fcae74e23a215a76f2a94607a006a0843a
|