README.md

# Tiktoken

Elixir bindings for OpenAI's [Tiktoken](https://github.com/openai/tiktoken).

Built on [@zurawiki](https://github.com/zurawiki)'s [tiktoken-rs](https://github.com/zurawiki/tiktoken-rs).

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `tiktoken` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:tiktoken, "~> 0.3"}
  ]
end
```

## Required dependencies to compile the shared library

You will need to have a `Rust` compiler and `Python` installed.

For example on `debian`/`ubuntu` this means:

```bash
apt install cargo libpython3-dev
```

To install more up-to-date versions of `Rust` check [rustup](https://rustup.rs/).

The libraries the bindings are built on use `PyO3` so you may need to set the `PyO3` flag before compiling:

```bash
export PYO3_PYTHON=python
# or depending on your OS
export PYO3_PYTHON=python3
```

## Force compilation of the shared library

If the precompiled shared library are not available, you can force
`rustler_precompiled` to compile it by adding the following to you `config.exs`:

```elixir
config :rustler_precompiled, :force_build, tiktoken: true
```

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at <https://hexdocs.pm/tiktoken>.