Simplifies the usage of OpenAI ChatGPT's function calling by generating the schemas and parsing OpenAI's responses for you.
Project description
OpenAI functions
The openai-functions
Python project simplifies the usage of OpenAI's ChatGPT function calling feature. It abstracts away the complexity of parsing function signatures and docstrings by providing developers with a clean and intuitive interface.
Installation
You can install openai-functions
from PyPI using pip:
pip install openai-functions
Usage
- Import the necessary modules and provide your API key:
import enum
import openai
from openai_functions import Conversation
openai.api_key = "<YOUR_API_KEY>"
- Create a
Conversation
instance:
conversation = Conversation()
- Define your functions using the
@conversation.add_function
decorator:
class Unit(enum.Enum):
FAHRENHEIT = "fahrenheit"
CELSIUS = "celsius"
@conversation.add_function()
def get_current_weather(location: str, unit: Unit = Unit.FAHRENHEIT) -> dict:
"""Get the current weather in a given location.
Args:
location (str): The city and state, e.g., San Francisco, CA
unit (Unit): The unit to use, e.g., fahrenheit or celsius
"""
return {
"location": location,
"temperature": "72",
"unit": unit.value,
"forecast": ["sunny", "windy"],
}
- Ask the AI a question:
response = conversation.ask("What's the weather in San Francisco?")
# Should return something like:
# The current weather in San Francisco is 72 degrees Fahrenheit and it is sunny and windy.
You can read more about how to use Conversation
here.
More barebones use - just schema generation and result parsing:
from openai_functions import FunctionWrapper
wrapper = FunctionWrapper(get_current_weather)
schema = wrapper.schema
result = wrapper({"location": "San Francisco, CA"})
Or you could use skills.
Another use case: data extraction
- Import the necessary modules and provide your API key:
from dataclasses import dataclass
import openai
from openai_functions import nlp
openai.api_key = "<YOUR_API_KEY>"
- Define your data container using the
@nlp
decorator:
@nlp
@dataclass
class Person:
"""Extract personal info"""
name: str
age: int
- Ask the AI for the extracted data:
person = Person.from_natural_language("I'm Jack and I'm 20 years old.")
You can read more about @nlp
here.
Note: mypy does not parse class decorators (#3135), so you might have trouble getting type checking when using it like this. Consider using something like nlp(Person).from_natural_language
to get proper type support.
How it Works
openai-functions
takes care of the following tasks:
- Parsing the function signatures (with type annotations) and docstrings.
- Sending the conversation and function descriptions to the OpenAI model.
- Deciding whether to call a function based on the model's response.
- Calling the appropriate function with the provided arguments.
- Updating the conversation with the function response.
- Repeating the process until the model generates a user-facing message.
This abstraction allows developers to focus on defining their functions and adding user messages without worrying about the details of function calling.
Note
Please note that openai-functions
is an unofficial project not maintained by OpenAI. Use it at your discretion.
Project details
Release history Release notifications | RSS feed
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 openai_functions-1.0.2.tar.gz
.
File metadata
- Download URL: openai_functions-1.0.2.tar.gz
- Upload date:
- Size: 19.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.11.5 Linux/6.4.12-zen1-1-zen
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc1ee6d578cd2f30d2ea5f9ec9c083cd4804cdae0aa3649b0358a9b6a6a553e8 |
|
MD5 | 41c4c75ba4a053c2f3ac34c198e40dcc |
|
BLAKE2b-256 | f168155642bd0ed69746bacf1dc548a2b4492df7f0b3c4f190da898d4e614bde |
File details
Details for the file openai_functions-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: openai_functions-1.0.2-py3-none-any.whl
- Upload date:
- Size: 29.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.11.5 Linux/6.4.12-zen1-1-zen
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 693c68a5dbb3199334c520a8c18e55634e1980ecf26b2f49912e1cb996ece138 |
|
MD5 | 64669cd393a7eff3e8b1a9a31a32dab5 |
|
BLAKE2b-256 | 18766a4ca5760420e69707b2055d1387fb80948bb750f772b3881cb516bcb4e5 |