/openai_ex

Community maintained Elixir library for OpenAI API

Primary LanguageElixirApache License 2.0Apache-2.0

README

License: Apache-2 hex.pm badge

OpenaiEx is an Elixir library that provides a community-maintained OpenAI API client especially for Livebook development.

The library closely follows the naming / structure of the official OpenAI API client library for Python, making it easy to understand and reuse existing documentation.

All API endpoints and features (as of Nov 15, 2023) are supported, including the Assistants API Beta, DALL-E-3, Text-To-Speech, the tools support in chat completions, and the streaming version of the completion and chat completion endpoints.

Discussion and announcements are on this thread in Elixir Forum

Installation and Usage

For installation instructions and detailed usage examples, please look at the User Guide on hexdocs. The guide is a Livebook, and you can run all of the code in it without creating a new project. Practically every API call has a running example in the User Guide.

There are also Livebook examples for

These are hosted on hexdocs and can be used as inspiration / starters for your own projects.

Development

The following section is only for developers that want to contribute to this repository.

This library was developed using a Livebook docker image that runs inside a VS Code devcontainer. The .devcontainer folder contains all of the relevant files.

To get started, clone the repository to your local machine and open it in VS Code. Follow the prompts to open it in a container.

After the container is up and running in VS Code, you can access livebook at http://localhost:8080. However, you'll need to enter a password that's stored in the environment variable LIVEBOOK_PASSWORD. This variable needs to be defined in the .devcontainer/.env file, which is explained below.

Environment Variables and Secrets

To set environment variables for devcontainer development, you can create a .env file in the .devcontainer folder. Any secrets, such as OPENAI_API_KEY and LIVEBOOK_PASSWORD, can be defined in this file as environment variables. Note that this .env file should not be included in version control, and it is already included in the .gitignore file for this reason.

You can find a sample env file in the same folder, which you can use as a template for your own .env file. These variables will be passed to Livebook via docker-compose.yml.