A minimal and intuitive library for working with OpenAI's function calling API
Project description
OpenAI Toolchain
A Python library for working with OpenAI's function calling API, making it easier to create and manage tools that can be used with OpenAI's chat models.
Features
- 🛠️ Simple function registration with
@tooldecorator - 🤖 Automatic tool schema generation
- 🔄 Seamless integration with OpenAI's API
- ⚡ Support for both sync and async operations
- 📚 Clean and intuitive API
Installation
pip install openai-toolchain
Quick Start
- Define your tools using the
@tooldecorator:
from openai_toolchain import tool, OpenAIClient
@tool
def get_weather(location: str, unit: str = "celsius") -> str:
"""Get the current weather in a given location.
Args:
location: The city to get the weather for
unit: The unit of temperature (celsius or fahrenheit)
"""
return f"The weather in {location} is 22 {unit}"
@tool("get_forecast")
def get_forecast_function(location: str, days: int = 1) -> str:
"""Get a weather forecast for a location.
Args:
location: The city to get the forecast for
days: Number of days to forecast (1-5)
"""
return f"{days}-day forecast for {location}: Sunny"
- Use the tools with OpenAI:
# Initialize the client with your API key
client = OpenAIClient(api_key="your-api-key")
# Use the client
response = client.chat_with_tools(
messages=[{"role": "user", "content": "What's the weather in Toronto?"}]
)
print(response)
Documentation
For detailed documentation, including API reference and examples, please visit:
Or run the documentation locally:
pip install -e ".[docs]"
mkdocs serve
Contributing
Contributions are welcome! Please see our Contributing Guide for details.
Pre-commit Hooks
This project uses pre-commit to ensure code quality and style consistency. To set it up:
-
Install pre-commit:
pip install pre-commit
-
Install the git hook scripts:
pre-commit install -
(Optional) Run against all files:
pre-commit run --all-files
The hooks will now run automatically on every commit. To skip the pre-commit checks, use:
git commit --no-verify -m "Your commit message"
License
This project is licensed under the MIT License - see the LICENSE file for details.
Initialize the client with your API key
client = OpenAIClient(api_key="your-api-key")
Chat with automatic tool calling
response = client.chat_with_tools( messages=[{"role": "user", "content": "What's the weather in Toronto?"}], tools=["get_weather"] # Optional: specify which tools to use )
print(response)
## Features
### 1. Tool Registration
Use the `@tool` decorator to register functions as tools:
```python
from openai_toolchain import tool
@tool
def search_web(query: str) -> str:
"""Search the web for information."""
return f"Search results for: {query}"
2. Chat with Automatic Tool Calling
The chat_with_tools method handles tool calls automatically:
client = OpenAIClient(api_key="your-api-key")
response = client.chat_with_tools(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Search for the latest Python news"}
],
tools=["search_web"],
model="gpt-4" # Optional: specify a different model
)
3. Accessing Registered Tools
You can access registered tools directly:
from openai_toolchain import tool_registry
# Get all registered tools
tools = tool_registry.get_openai_tools()
# Call a tool directly
result = tool_registry.call_tool("get_weather", {"location": "Paris", "unit": "fahrenheit"})
API Reference
@tool decorator
Register a function as a tool:
from openai_toolchain import tool
@tool
def my_function(param: str) -> str:
"""Function documentation."""
return f"Result for {param}"
tool_registry
The global registry instance with these methods:
register(func, **kwargs): Register a function as a toolget_tool(name): Get a registered tool by namecall_tool(name, arguments): Call a registered tool by name with argumentsget_openai_tools(): Get all tools in OpenAI format
Development
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
License
MIT
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_toolchain-0.2.0.tar.gz.
File metadata
- Download URL: openai_toolchain-0.2.0.tar.gz
- Upload date:
- Size: 28.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1aff20c49c08389a3cc77c8a748258d12f50443919275f55f71004be823d540d
|
|
| MD5 |
788dce71e8854b5c99e4581309ec0810
|
|
| BLAKE2b-256 |
e0698e6d11f8076f89a2f85f3745eb181000d7d2c02aa23d3e4dce881f20005c
|
File details
Details for the file openai_toolchain-0.2.0-py3-none-any.whl.
File metadata
- Download URL: openai_toolchain-0.2.0-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74123996597d9c8614eb7990a425f3d5b9a445acc472c1c0b3e5bef66b0c51d1
|
|
| MD5 |
5154f13c6a81aec13f00d9a2b67c9921
|
|
| BLAKE2b-256 |
c5ba6243072feb63659f5d79a840997c9901c7feb191067b49bd01ab1e446bcb
|