Skip to main content

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.

Tests Coverage Status License: MIT PyPI version Documentation Status

Installation

You can install openai-functions from PyPI using pip:

pip install openai-functions

Usage

  1. Import the necessary modules and provide your API key:
import enum
import openai
from openai_functions import Conversation

openai.api_key = "<YOUR_API_KEY>"
  1. Create a Conversation instance:
conversation = Conversation()
  1. 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"],
    }
  1. 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

  1. 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>"
  1. Define your data container using the @nlp decorator:
@nlp
@dataclass
class Person:
    """Extract personal info"""

    name: str
    age: int
  1. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openai_functions-1.0.2.tar.gz (19.6 kB view details)

Uploaded Source

Built Distribution

openai_functions-1.0.2-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

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

Hashes for openai_functions-1.0.2.tar.gz
Algorithm Hash digest
SHA256 fc1ee6d578cd2f30d2ea5f9ec9c083cd4804cdae0aa3649b0358a9b6a6a553e8
MD5 41c4c75ba4a053c2f3ac34c198e40dcc
BLAKE2b-256 f168155642bd0ed69746bacf1dc548a2b4492df7f0b3c4f190da898d4e614bde

See more details on using hashes here.

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

Hashes for openai_functions-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 693c68a5dbb3199334c520a8c18e55634e1980ecf26b2f49912e1cb996ece138
MD5 64669cd393a7eff3e8b1a9a31a32dab5
BLAKE2b-256 18766a4ca5760420e69707b2055d1387fb80948bb750f772b3881cb516bcb4e5

See more details on using hashes here.

Supported by

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