Packages
openai_ex
0.9.19
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/conversations.ex
defmodule OpenaiEx.Conversations do
@moduledoc """
This module provides an implementation of the OpenAI Conversations API. The API reference can be found at https://platform.openai.com/docs/api-reference/conversations.
"""
alias OpenaiEx.Http
@api_fields [
:metadata,
:items
]
defp ep_url(conversation_id \\ nil) do
"/conversations" <>
if(is_nil(conversation_id), do: "", else: "/#{conversation_id}")
end
@doc """
Creates a new conversation request with the given arguments.
## Examples
iex> OpenaiEx.Conversations.new(metadata: %{"user_id" => "123"})
%{metadata: %{"user_id" => "123"}}
iex> OpenaiEx.Conversations.new(items: [%{type: "message", role: "user", content: [%{type: "input_text", text: "Hello"}]}])
%{items: [%{type: "message", role: "user", content: [%{type: "input_text", text: "Hello"}]}]}
iex> OpenaiEx.Conversations.new([])
%{}
"""
def new(args) when is_list(args) do
args |> Enum.into(%{}) |> new()
end
def new(args) when is_map(args) do
args |> Map.take(@api_fields)
end
@doc """
Creates a new conversation.
See https://platform.openai.com/docs/api-reference/conversations/create
"""
def create!(openai = %OpenaiEx{}, request \\ %{}) do
openai |> create(request) |> Http.bang_it!()
end
def create(openai = %OpenaiEx{}, request \\ %{}) do
openai |> Http.post(ep_url(), json: request)
end
@doc """
Retrieves a specific conversation by ID.
See https://platform.openai.com/docs/api-reference/conversations/retrieve
"""
def retrieve!(openai = %OpenaiEx{}, conversation_id) do
openai |> retrieve(conversation_id) |> Http.bang_it!()
end
def retrieve(openai = %OpenaiEx{}, conversation_id) do
openai |> Http.get(ep_url(conversation_id))
end
@doc """
Updates a conversation's metadata.
See https://platform.openai.com/docs/api-reference/conversations/update
"""
def update!(openai = %OpenaiEx{}, conversation_id, request) do
openai |> update(conversation_id, request) |> Http.bang_it!()
end
def update(openai = %OpenaiEx{}, conversation_id, request) do
openai |> Http.post(ep_url(conversation_id), json: request)
end
@doc """
Deletes a conversation.
See https://platform.openai.com/docs/api-reference/conversations/delete
"""
def delete!(openai = %OpenaiEx{}, conversation_id) do
openai |> delete(conversation_id) |> Http.bang_it!()
end
def delete(openai = %OpenaiEx{}, conversation_id) do
openai |> Http.delete(ep_url(conversation_id))
end
end