Unofficial Async Python client library for the OpenAI API based on Documented Specs
-
Asyncio based with Sync and Async Support with
httpx
-
Supports all API endpoints
-
Strongly typed validation of requests and responses with
Pydantic
Models with transparent access to the raw response and object-based results. -
Handles Retries automatically through
backoff
-
Supports Local and Remote Cloud Object Storage File Handling Asyncronously through
file-io
-
Supports
S3
:s3://bucket/path/to/file.txt
-
Supports
GCS
:gs://bucket/path/to/file.txt
-
Supports
Minio
:minio://bucket/path/to/file.txt
-
-
Supports
limited
cost tracking forCompletions
andEdits
requests (when stream is not enabled)
# Install from stable
pip install async-openai
# Install from dev/latest
pip install git+https://github.com/GrowthEngineAI/async-openai.git
import asyncio
from async_openai import OpenAI, settings, CompletionResponse
# Environment variables should pick up the defaults
# however, you can also set them explicitly.
# `api_key` - Your OpenAI API key. Env: [`OPENAI_API_KEY`]
# `url` - The URL of the OpenAI API. Env: [`OPENAI_URL`]
# `api_type` - The OpenAI API type. Env: [`OPENAI_API_TYPE`]
# `api_version` - The OpenAI API version. Env: [`OPENAI_API_VERSION`]
# `organization` - The OpenAI organization. Env: [`OPENAI_ORGANIZATION`]
# `proxies` - A dictionary of proxies to be used. Env: [`OPENAI_PROXIES`]
# `timeout` - The timeout in seconds to be used. Env: [`OPENAI_TIMEOUT`]
# `max_retries` - The number of retries to be used. Env: [`OPENAI_MAX_RETRIES`]
OpenAI.configure(
api_key = "sk-XXXX",
organization = "org-XXXX",
debug_enabled = False,
)
# Alternatively you can configure the settings through environment variables
# settings.configure(
# api_key = "sk-XXXX",
# organization = "org-XXXX",
# )
# [Sync] create a completion
# Results return a CompletionResult object
result: CompletionResponse = OpenAI.completions.create(
prompt = 'say this is a test',
max_tokens = 4,
stream = True
)
# print the completion text
# which are concatenated together from the result['choices'][n]['text']
print(result.text)
# print the number of choices returned
print(len(result))
# get the cost consumption for the request
print(result.consumption)
# [Async] create a completion
# All async methods are generally prefixed with `async_`
result: CompletionResponse = asyncio.run(
OpenAI.completions.async_create(
prompt = 'say this is a test',
max_tokens = 4,
stream = True
)
)
The aim of this library is to be as lightweight as possible. It is built on top of the following libraries: