README.md

# Alchemind OpenAI

OpenAI provider implementation for the Alchemind project.

> [!WARNING]  
> This project is currently in early development and should not be used in production environments.

## Overview

This package implements the Alchemind interfaces for OpenAI's API, allowing you to interact with OpenAI models using the consistent Alchemind API. It provides access to OpenAI's chat completion, speech-to-text, and text-to-speech capabilities.

Under the hood, this package uses the rust crate [async-openai](https://github.com/64bit/async-openai).

## Features

| Feature | Support |
|---------|:-------:|
| Chat Completions |  |
|     Create chat completion | ✅ |
|     Streaming | ✅ |
| Audio |  |
|     Create Speech | ✅ |
|     Create Transcription | ✅ |

## Installation

The package can be installed by adding `alchemind_openai` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:alchemind, "~> 0.1.0-rc1"},
    {:alchemind_openai, "~> 0.1.0-rc.1"}
  ]
end
```

## Development

You can run tests specifically for this package with:

```bash
cd apps/alchemind_openai
mix test
```

## License

See the [LICENSE](LICENSE) file for details.

## Release Process

This package utilizes precompiled Rust NIFs managed by [`rustler_precompiled`](https://hexdocs.pm/rustler_precompiled/). The release process involves GitHub Actions for building the NIFs and a manual step for preparing the Hex package.

**Steps:**

1. Push changes to [mirror repository](https://github.com/bradleygolden/alchemind-openai): `git subtree push --prefix=apps/alchemind_openai openai-mirror <branch_name>`
2. Wait for NIFs to be built
3. Tag the release in the mirror repository
4. Wait for NIFs to be built
5. Run `mix rustler_precompiled.download Alchemind.OpenAI --all` to generate a `checksum-*.exs`
6. Release package to Hex.pm via `mix hex.publish`