Packages
openai_ex
0.1.1
0.9.21
0.9.20
0.9.19
0.9.18
0.9.17
0.9.16
0.9.15
0.9.14
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.2
0.4.1
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Community maintained Elixir library for OpenAI API
Current section
Files
Jump to
Current section
Files
lib/openai_ex.ex
defmodule OpenaiEx do
@moduledoc """
`OpenaiEx` is an Elixir library that provides a community-maintained client for the OpenAI API.
The library closely follows the structure of the [official OpenAI API client libraries](https://platform.openai.com/docs/api-reference)
for [Python](https://github.com/openai/openai-python)
and [JavaScript](https://github.com/openai/openai-node),
making it easy to understand and reuse existing documentation and code.
"""
@enforce_keys [:token]
defstruct token: nil, organization: nil
@doc """
Creates a new OpenaiEx struct with the specified token and organization.
See https://platform.openai.com/docs/api-reference/authentication for details.
"""
def new(token, organization \\ nil) do
%OpenaiEx{
token: token,
organization: organization
}
end
defp req(openai = %OpenaiEx{}) do
options = [base_url: "https://api.openai.com/v1", auth: {:bearer, openai.token}]
if is_nil(openai.organization) do
options
else
options ++ [headers: ["OpenAI-Organization", openai.organization]]
end
|> Req.new()
end
@doc """
Sends a POST request to the specified OpenAI API URL endpoint with the specified JSON body.
"""
def post(openai = %OpenaiEx{}, url, json) do
openai
|> req()
|> Req.post!(url: url, json: json)
|> Map.get(:body)
end
@doc """
Sends a GET request to the specified OpenAI API URL endpoint.
"""
def get(openai = %OpenaiEx{}, url) do
openai
|> req()
|> Req.get!(url: url)
|> Map.get(:body)
end
end