View Source OpenAI (openai.ex v0.6.2)
Provides API wrappers for OpenAI API See https://beta.openai.com/docs/api-reference/introduction for further info on REST endpoints
Link to this section Summary
Functions
Retrieves an assistant file by its id.
Attaches a previously uploaded file to the assistant.
Detaches a file from the assistant. The file itself is not automatically deleted.
Retrieves the list of files associated with a particular assistant.
Retrieves the list of assistants.
Creates a new assistant.
Deletes an assistant.
Modifies an existing assistant.
Generates audio from the input text.
Transcribes audio into the input language.
Translates audio into into English.
Creates a completion for the chat message
It returns one or more predicted completions given a prompt. The function accepts as arguments the "engine_id" and the set of parameters used by the Completions OpenAI api
It returns one or more predicted completions given a prompt. The function accepts as arguments the "engine_id" and the set of parameters used by the Completions OpenAI api
Creates a new edit for the provided input, instruction, and parameters
Creates an embedding vector representing the input text.
@deprecated: "use models instead" Get the list of available engines
Returns a list of files that belong to the user's organization.
delete a file
Upload a file that contains document(s) to be used across various endpoints/features. Currently, the size of all the files uploaded by one organization can be up to 1 GB. Please contact OpenAI if you need to increase the storage limit.
List your organization's fine-tuning jobs
Immediately cancel a fine-tune job.
Creates a job that fine-tunes a specified model from a given dataset.
Delete a fine-tuned model. You must have the Owner role in your organization.
Get fine-grained status updates for a fine-tune job.
alias of images_edits(file_path, params, request_options) - will be deprecated in future releases
alias of images_generations(params, request_options) - will be deprecated in future releases
alias of images_variations(file_path, params, request_options) - will be deprecated in future releases
This edits an image based on the given prompt. Image functions require some times to execute, and API may return a timeout error, if needed you can pass a configuration object with HTTPoison http_options as second argument of the function to increase the timeout.
This generates an image based on the given prompt. Image functions require some times to execute, and API may return a timeout error, if needed you can pass a configuration object with HTTPoison http_options as second argument of the function to increase the timeout.
Creates a variation of a given image. Image functions require some times to execute, and API may return a timeout error, if needed you can pass a configuration object with HTTPoison http_options as second argument of the function to increase the timeout.
Retrieve the list of available models
Classifies if text violates OpenAI's Content Policy
Callback implementation for Application.start/2
.
Retrieves a thread message by its id.
Creates a message within a thread.
Retrieves the message file object.
Retrieves the list of files associated with a particular message of a thread.
Modifies an existing thread message.
Retrieves the list of messages associated with a particular thread.
Retrieves a particular thread run by its id.
Cancels an in_progress
run.
Creates a run for a thread using a particular assistant.
Modifies an existing thread run.
Retrieves a thread run step by its id.
Retrieves the list of steps associated with a particular run of a thread.
When a run has the status: "requires_action" and required_action.type is submit_tool_outputs, this endpoint can be used to submit the outputs from the tool calls once they're all completed. All outputs must be submitted in a single request.
Retrieves the list of runs associated with a particular thread.
Retrieves the list of threads.
Creates a new thread.
Creates a new thread and runs it.
Deletes a thread.
Modifies an existing thread.
Link to this section Functions
Retrieves an assistant file by its id.
example-request
Example request
OpenAI.assistant_file("asst_...", "file-...")
example-response
Example response
{:ok,
%{
assistant_id: "asst_...",
created_at: 1699472933,
id: "file-...",
object: "assistant.file"
}}
See: https://platform.openai.com/docs/api-reference/assistants/getAssistantFile
Attaches a previously uploaded file to the assistant.
example-request
Example request
OpenAI.assistant_file_create("asst_...", file_id: "file-...")
example-response
Example response
{:ok,
%{
assistant_id: "asst_...",
created_at: 1699472933,
id: "file-...",
object: "assistant.file"
}}
See: https://platform.openai.com/docs/api-reference/assistants/createAssistantFile
Detaches a file from the assistant. The file itself is not automatically deleted.
example-request
Example request
OpenAI.assistant_file_delete("asst_...", "file-...")
example-response
Example response
{:ok,
%{
deleted: true,
id: "file-...",
object: "assistant.file.deleted"
}}
See: https://platform.openai.com/docs/api-reference/assistants/deleteAssistantFile
Retrieves the list of files associated with a particular assistant.
example-request
Example request
OpenAI.assistant_files("asst_...")
example-response
Example response
{:ok,
%{
data: [
%{
"assistant_id" => "asst_...",
"created_at" => 1699472933,
"id" => "file-...",
"object" => "assistant.file"
}
],
first_id: "file-...",
has_more: false,
last_id: "file-...",
object: "list"
}}
Retrieves the list of files associated with a particular assistant, filtered by query params.
example-request-1
Example request
OpenAI.assistant_files("asst_...", order: "desc")
example-response-1
Example response
{:ok,
%{
data: [
%{
"assistant_id" => "asst_...",
"created_at" => 1699472933,
"id" => "file-...",
"object" => "assistant.file"
}
],
first_id: "file-...",
has_more: false,
last_id: "file-...",
object: "list"
}}
See: https://platform.openai.com/docs/api-reference/assistants/listAssistantFiles
Retrieves the list of assistants.
example-request
Example request
OpenAI.assistants()
example-response
Example response
{:ok,
%{
data: [
%{
"created_at" => 1699472932,
"description" => nil,
"file_ids" => ["file-..."],
"id" => "asst_...",
"instructions" => "...",
"metadata" => %{},
"model" => "gpt-4-1106-preview",
"name" => "...",
"object" => "assistant",
"tools" => [%{"type" => "retrieval"}]
}
],
first_id: "asst_...",
has_more: false,
last_id: "asst_...",
object: "list"
}}
Retrieves the list of assistants filtered by query params.
example-request-1
Example request
OpenAI.assistants(after: "", limit: 10)
example-response-1
Example response
{:ok,
%{
data: [
%{
"created_at" => 1699472932,
"description" => nil,
"file_ids" => ["file-..."],
"id" => "asst_...",
"instructions" => "...",
"metadata" => %{},
"model" => "gpt-4-1106-preview",
"name" => "...",
"object" => "assistant",
"tools" => [%{"type" => "retrieval"}]
},
...
],
first_id: "asst_...",
has_more: false,
last_id: "asst_...",
object: "list"
}}
See: https://platform.openai.com/docs/api-reference/assistants/listAssistants
Retrieves an assistant by its id.
example-request-2
Example request
OpenAI.assistants("asst_...")
example-response-2
Example response
{:ok,
%{
created_at: 1699472932,
description: nil,
file_ids: ["file-..."],
id: "asst_...",
instructions: "...",
metadata: %{},
model: "gpt-4-1106-preview",
name: "...",
object: "assistant",
tools: [%{"type" => "retrieval"}]
}}
See: https://platform.openai.com/docs/api-reference/assistants/getAssistant
Creates a new assistant.
example-request
Example request
OpenAI.assistants_create(
model: "gpt-3.5-turbo-1106",
name: "My assistant",
instructions: "You are a research assistant.",
tools: [
%{type: "retrieval"}
],
file_ids: ["file-..."]
)
example-response
Example response
{:ok,
%{
created_at: 1699640038,
description: nil,
file_ids: ["file-..."],
id: "asst_...",
instructions: "You are a research assistant.",
metadata: %{},
model: "gpt-3.5-turbo-1106",
name: "My assistant",
object: "assistant",
tools: [%{"type" => "retrieval"}]
}}
See: https://platform.openai.com/docs/api-reference/assistants/createAssistant
Deletes an assistant.
example-request
Example request
OpenAI.assistants_delete("asst_...")
example-response
Example response
{:ok,
%{
deleted: true,
id: "asst_...",
object: "assistant.deleted"
}}
See: https://platform.openai.com/docs/api-reference/assistants/deleteAssistant
Modifies an existing assistant.
example-request
Example request
OpenAI.assistants_modify(
"asst_...",
model: "gpt-4-1106-preview",
name: "My upgraded assistant"
)
example-response
Example response
{:ok,
%{
created_at: 1699640038,
description: nil,
file_ids: ["file-..."],
id: "asst_...",
instructions: "You are a research assistant.",
metadata: %{},
model: "gpt-4-1106-preview",
name: "My upgraded assistant"
object: "assistant",
tools: [%{"type" => "retrieval"}]
}}
See: https://platform.openai.com/docs/api-reference/assistants/modifyAssistant
Generates audio from the input text.
example-request
Example request
OpenAI.audio_speech( model: "tts-1", input: "You know that Voight-Kampf test of yours. Did you ever take that test yourself?", voice: "alloy" )
example-response
>">Example response
See: https://platform.openai.com/docs/api-reference/audio/create
Transcribes audio into the input language.
example-request
Example request
OpenAI.audio_transcription(
"./path_to_file/blade_runner.mp3", # file path
model: "whisper-1"
)
example-response
Example response
{:ok,
%{
text: "I've seen things you people wouldn't believe.."
}}
See: https://platform.openai.com/docs/api-reference/audio/create
Translates audio into into English.
example-request
Example request
OpenAI.audio_translation(
"./path_to_file/werner_herzog_interview.mp3", # file path
model: "whisper-1"
)
example-response
Example response
{:ok,
%{
text: "I thought if I walked, I would be saved. It was almost like a pilgrimage. I will definitely continue to walk long distances. It is a very unique form of life and existence that we have lost almost entirely from our normal life."
}}
See: https://platform.openai.com/docs/api-reference/audio/create
Creates a completion for the chat message
example-request
Example request
OpenAI.chat_completion(
model: "gpt-3.5-turbo",
messages: [
%{role: "system", content: "You are a helpful assistant."},
%{role: "user", content: "Who won the world series in 2020?"},
%{role: "assistant", content: "The Los Angeles Dodgers won the World Series in 2020."},
%{role: "user", content: "Where was it played?"}
]
)
example-response
Example response
{:ok,
%{
choices: [
%{
"finish_reason" => "stop",
"index" => 0,
"message" => %{
"content" => "The 2020 World Series was played at Globe Life Field in Arlington, Texas due to the COVID-19 pandemic.",
"role" => "assistant"
}
}
],
created: 1677773799,
id: "chatcmpl-6pftfA4NO9pOQIdxao6Z4McDlx90l",
model: "gpt-3.5-turbo-0301",
object: "chat.completion",
usage: %{
"completion_tokens" => 26,
"prompt_tokens" => 56,
"total_tokens" => 82
}
}
}
N.B. to use "stream" mode you must be set http_options as below when you want to treat the chat completion as a stream:
config :openai,
api_key: "your-api-key",
http_options: [recv_timeout: :infinity, stream_to: self(), async: :once]
example-request-stream
Example request (stream)
OpenAI.chat_completion([
model: "gpt-3.5-turbo",
messages: [
%{role: "system", content: "You are a helpful assistant."},
%{role: "user", content: "Who won the world series in 2020?"},
%{role: "assistant", content: "The Los Angeles Dodgers won the World Series in 2020."},
%{role: "user", content: "Where was it played?"}
],
stream: true, # set this param to true
]
)
|> Stream.each(fn res ->
IO.inspect(res)
end)
|> Stream.run()
example-response-stream
Example response (stream)
%{
"choices" => [
%{"delta" => %{"role" => "assistant"}, "finish_reason" => nil, "index" => 0}
],
"created" => 1682700668,
"id" => "chatcmpl-7ALbIuLju70hXy3jPa3o5VVlrxR6a",
"model" => "gpt-3.5-turbo-0301",
"object" => "chat.completion.chunk"
}
%{
"choices" => [
%{"delta" => %{"content" => "The"}, "finish_reason" => nil, "index" => 0}
],
"created" => 1682700668,
"id" => "chatcmpl-7ALbIuLju70hXy3jPa3o5VVlrxR6a",
"model" => "gpt-3.5-turbo-0301",
"object" => "chat.completion.chunk"
}
%{
"choices" => [
%{"delta" => %{"content" => " World"}, "finish_reason" => nil, "index" => 0}
],
"created" => 1682700668,
"id" => "chatcmpl-7ALbIuLju70hXy3jPa3o5VVlrxR6a",
"model" => "gpt-3.5-turbo-0301",
"object" => "chat.completion.chunk"
}
%{
"choices" => [
%{
"delta" => %{"content" => " Series"},
"finish_reason" => nil,
"index" => 0
}
],
"created" => 1682700668,
"id" => "chatcmpl-7ALbIuLju70hXy3jPa3o5VVlrxR6a",
"model" => "gpt-3.5-turbo-0301",
"object" => "chat.completion.chunk"
}
%{
"choices" => [
%{"delta" => %{"content" => " in"}, "finish_reason" => nil, "index" => 0}
],
"created" => 1682700668,
"id" => "chatcmpl-7ALbIuLju70hXy3jPa3o5VVlrxR6a",
"model" => "gpt-3.5-turbo-0301",
"object" => "chat.completion.chunk"
}
See: https://platform.openai.com/docs/api-reference/chat/create for the complete list of parameters you can pass to the completions function
It returns one or more predicted completions given a prompt. The function accepts as arguments the "engine_id" and the set of parameters used by the Completions OpenAI api
example-request
Example request
OpenAI.completions(
model: "finetuned-model",
prompt: "once upon a time",
max_tokens: 5,
temperature: 1,
...
)
example-response
Example response
{:ok, %{
choices: [
%{
"finish_reason" => "length",
"index" => 0,
"logprobs" => nil,
"text" => "" thing we are given"
}
],
created: 1617147958,
id: "...",
model: "...",
object: "text_completion"
}
}
See: https://platform.openai.com/docs/api-reference/completions/create
It returns one or more predicted completions given a prompt. The function accepts as arguments the "engine_id" and the set of parameters used by the Completions OpenAI api
example-request
Example request
OpenAI.completions(
"davinci", # engine_id
prompt: "once upon a time",
max_tokens: 5,
temperature: 1,
...
)
example-response
Example response
{:ok, %{
choices: [
%{
"finish_reason" => "length",
"index" => 0,
"logprobs" => nil,
"text" => "" thing we are given"
}
],
created: 1617147958,
id: "...",
model: "...",
object: "text_completion"
}
}
See: https://beta.openai.com/docs/api-reference/completions/create for the complete list of parameters you can pass to the completions function
Creates a new edit for the provided input, instruction, and parameters
example-request
Example request
OpenAI.edits(
model: "text-davinci-edit-001",
input: "What day of the wek is it?",
instruction: "Fix the spelling mistakes"
)
example-response
Example response
{:ok,
%{
choices: [%{"index" => 0, "text" => "What day of the week is it?
"}],
created: 1675443483,
object: "edit",
usage: %{
"completion_tokens" => 28,
"prompt_tokens" => 25,
"total_tokens" => 53
}
}}
See: https://platform.openai.com/docs/api-reference/edits/create
Creates an embedding vector representing the input text.
example-request
Example request
OpenAI.embeddings(
model: "text-embedding-ada-002",
input: "The food was delicious and the waiter..."
)
example-response
Example response
{:ok,
%{
data: [
%{
"embedding" => [0.0022523515000000003, -0.009276069000000001,
0.015758524000000003, -0.007790373999999999, -0.004714223999999999,
0.014806155000000001, -0.009803046499999999, -0.038323310000000006,
-0.006844355, -0.028672641, 0.025345700000000002, 0.018145794000000003,
-0.0035904291999999997, -0.025498080000000003, 5.142790000000001e-4,
-0.016317246, 0.028444072, 0.0053713582, 0.009631619999999999,
-0.016469626, -0.015390275, 0.004301531, 0.006984035499999999,
-0.007079272499999999, -0.003926933, 0.018602932000000003, 0.008666554,
-0.022717162999999995, 0.011460166999999997, 0.023860006,
0.015568050999999998, -0.003587254600000001, -0.034843990000000005,
-0.0041555012999999995, -0.026107594000000005, -0.02151083,
-0.0057618289999999996, 0.011714132499999998, 0.008355445999999999,
0.004098358999999999, 0.019199749999999998, -0.014336321, 0.008952264,
0.0063395994, -0.04576447999999999, ...],
"index" => 0,
"object" => "embedding"
}
],
model: "text-embedding-ada-002-v2",
object: "list",
usage: %{"prompt_tokens" => 8, "total_tokens" => 8}
}}
See: https://platform.openai.com/docs/api-reference/embeddings/create
@deprecated: "use models instead" Get the list of available engines
example-request
Example request
OpenAI.engines()
example-response
Example response
{:ok, %{
"data" => [
%{"id" => "davinci", "object" => "engine", "max_replicas": ...},
...,
...
]
}
See: https://beta.openai.com/docs/api-reference/engines/list
Retrieve specific engine info
example-request-1
Example request
OpenAI.engines("davinci")
example-response-1
Example response
{:ok, %{
"id" => "davinci",
"object" => "engine",
"max_replicas": ...
}
}
See: https://beta.openai.com/docs/api-reference/engines/retrieve
Returns a list of files that belong to the user's organization.
example-request
Example request
OpenAI.files()
example-response
Example response
{:ok,
%{
data: [
%{
"bytes" => 123,
"created_at" => 213,
"filename" => "file.jsonl",
"id" => "file-123321",
"object" => "file",
"purpose" => "fine-tune",
"status" => "processed",
"status_details" => nil
}
],
object: "list"
}
}
See: https://platform.openai.com/docs/api-reference/files
Returns a file that belong to the user's organization, given a file id
example-request-1
Example Request
OpenAI.files("file-123321")
example-response-1
Example Response
{:ok,
%{
bytes: 923,
created_at: 1675370979,
filename: "file.jsonl",
id: "file-123321",
object: "file",
purpose: "fine-tune",
status: "processed",
status_details: nil
}
}
See: https://platform.openai.com/docs/api-reference/files/retrieve
delete a file
example-request
Example Request
OpenAI.files_delete("file-123")
example-response
Example Response
{:ok, %{deleted: true, id: "file-123", object: "file"}}
See: https://platform.openai.com/docs/api-reference/files/delete
Upload a file that contains document(s) to be used across various endpoints/features. Currently, the size of all the files uploaded by one organization can be up to 1 GB. Please contact OpenAI if you need to increase the storage limit.
example-request
Example request
OpenAI.files_upload("./file.jsonl", purpose: "fine-tune")
example-response
Example response
{:ok,
%{
bytes: 923,
created_at: 1675373519,
filename: "file.jsonl",
id: "file-123",
object: "file",
purpose: "fine-tune",
status: "uploaded",
status_details: nil
}
}
See: https://platform.openai.com/docs/api-reference/files/upload
List your organization's fine-tuning jobs
example-request
Example request
OpenAI.finetunes()
example-response
Example response
{:ok, %{
"data" => [
%{"created_at" => 1614807352, "fine_tuned_model" => "curie:ft-acmeco-2021-03-03-21-44-20", "model": ...},
...,
...
]
}
See: https://beta.openai.com/docs/api-reference/fine-tunes/list
Gets info about the fine-tune job.
example-request-1
Example request
OpenAI.finetunes("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
example-response-1
Example response
{:ok, %{
created_at: 1614807352,
events: [
%{
"created_at" => 1614807352,
"level" => "info",
"message" => "Created fine-tune: ft-AF1WoRqd3aJAHsqc9NY7iL8F",
"object" => "fine-tune-event"
},
%{
"created_at" => 1614807360,
"level" => "info",
"message" => "Fine-tune costs $0.02",
"object" => "fine-tune-event"
},
...,
...
}
See: https://beta.openai.com/docs/api-reference/fine-tunes/retrieve
Immediately cancel a fine-tune job.
example-request
Example request
OpenAI.finetunes_cancel("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
example-response
Example response
{:ok,
%{
created_at: 1675527767,
events: [
...
%{
"created_at" => 1675528080,
"level" => "info",
"message" => "Fine-tune cancelled",
"object" => "fine-tune-event"
}
],
fine_tuned_model: nil,
hyperparams: %{
"batch_size" => 1,
"learning_rate_multiplier" => 0.1,
"n_epochs" => 4,
"prompt_loss_weight" => 0.01
},
id: "ft-IaBYfSSAK47UUCbebY5tBIEj",
model: "curie",
object: "fine-tune",
organization_id: "org-1iPTOIak4b5fpuIB697AYMmO",
result_files: [],
status: "cancelled",
training_files: [
%{
"bytes" => 923,
"created_at" => 1675373519,
"filename" => "file123.jsonl",
"id" => "file-123",
"object" => "file",
"purpose" => "fine-tune",
"status" => "processed",
"status_details" => nil
}
],
updated_at: 1675528080,
validation_files: []
}}
See: https://platform.openai.com/docs/api-reference/fine-tunes/cancel
Creates a job that fine-tunes a specified model from a given dataset.
example-request
Example request
OpenAI.finetunes_create(training_file: "file-123", model: "curie", validation_file: "file-456")
example-response
Example response
See: https://platform.openai.com/docs/api-reference/fine-tunes/create
Delete a fine-tuned model. You must have the Owner role in your organization.
example-request
Example request
OpenAI.finetunes_delete_model("model-id")
example-response
Example response
{:ok,
%{
id: "model-id",
object: "model",
deleted: true
}}
See: https://platform.openai.com/docs/api-reference/fine-tunes/delete-model
Get fine-grained status updates for a fine-tune job.
example-request
Example request
OpenAI.finetunes_list_events("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
example-response
Example response
{:ok,
%{
data: [
%{
"created_at" => 1675376995,
"level" => "info",
"message" => "Created fine-tune: ft-123",
"object" => "fine-tune-event"
},
%{
"created_at" => 1675377104,
"level" => "info",
"message" => "Fine-tune costs $0.00",
"object" => "fine-tune-event"
},
%{
"created_at" => 1675377105,
"level" => "info",
"message" => "Fine-tune enqueued. Queue number: 18",
"object" => "fine-tune-event"
},
...,
]
}
}
See: https://platform.openai.com/docs/api-reference/fine-tunes/events
alias of images_edits(file_path, params, request_options) - will be deprecated in future releases
alias of images_generations(params, request_options) - will be deprecated in future releases
alias of images_variations(file_path, params, request_options) - will be deprecated in future releases
This edits an image based on the given prompt. Image functions require some times to execute, and API may return a timeout error, if needed you can pass a configuration object with HTTPoison http_options as second argument of the function to increase the timeout.
example-request
Example Request
OpenAI.images_edits(
"/home/developer/myImg.png",
[prompt: "A developer writing a test", "size": "256x256"],
%OpenAI.config{http_options: [recv_timeout: 10 * 60 * 1000]} # optional!
)
example-response
Example Response
{:ok,
%{
created: 1670341737,
data: [
%{
"url" => ...Returned url
}
]
}}
See: https://beta.openai.com/docs/api-reference/images/create-edit for the complete list of parameters you can pass to the image creation function note: the official way of passing http_options changed in v0.5.0 to be compliant with the conventions of other APIs, the alias OpenAI.images_edits(file_path, params, request_options), but is still available for retrocompatibility. If you are using it consider to switch to OpenAI.images_edits(file_path, params, config)
This generates an image based on the given prompt. Image functions require some times to execute, and API may return a timeout error, if needed you can pass a configuration object with HTTPoison http_options as second argument of the function to increase the timeout.
example-request
Example Request
OpenAI.images_generations(
[prompt: "A developer writing a test", size: "256x256"],
%OpenAI.config{http_options: [recv_timeout: 10 * 60 * 1000]} # optional!
)
example-response
Example Response
{:ok,
%{
created: 1670341737,
data: [
%{
"url" => ...Returned url
}
]
}}
See: https://beta.openai.com/docs/api-reference/images/create for the complete list of parameters you can pass to the image creation function
note: the official way of passing http_options changed in v0.5.0 to be compliant with the conventions of other APIs, the alias OpenAI.images_generations(file_path, params, request_options), but is still available for retrocompatibility. If you are using it consider to switch to OpenAI.images_variations(params, config)
Creates a variation of a given image. Image functions require some times to execute, and API may return a timeout error, if needed you can pass a configuration object with HTTPoison http_options as second argument of the function to increase the timeout.
example-request
Example Request
OpenAI.images_variations(
"/home/developer/myImg.png",
[n: "5"],
%OpenAI.config{http_options: [recv_timeout: 10 * 60 * 1000]} # optional!
)
example-response
Example Response
{:ok,
%{
created: 1670341737,
data: [
%{
"url" => ...Returned url
}
]
}}
See: https://beta.openai.com/docs/api-reference/images/create-variation for the complete list of parameters you can pass to the image creation function note: the official way of passing http_options changed in v0.5.0 to be compliant with the conventions of other APIs, the alias OpenAI.images_variations(file_path, params, request_options), but is still available for retrocompatibility. If you are using it consider to switch to OpenAI.images_edits(file_path, params, config)
Retrieve the list of available models
example-request
Example request
OpenAI.models()
example-response
Example response
%{
"created" => 1651172505,
"id" => "davinci-search-query",
"object" => "model",
"owned_by" => "openai-dev",
"parent" => nil,
"permission" => [
%{
"allow_create_engine" => false,
"allow_fine_tuning" => false,
"allow_logprobs" => true,
...
}
],
"root" => "davinci-search-query"
}
See: https://platform.openai.com/docs/api-reference/models/retrieve
Retrieve specific model info
example-request-1
Example request
OpenAI.models("davinci-search-query")
example-response-1
Example response
{:ok, %{
data: [%{
"created" => 1651172505,
"id" => "davinci-search-query",
"object" => "model",
"owned_by" => "openai-dev",
"parent" => nil,
"permission" => [
%{
"allow_create_engine" => false,
"allow_fine_tuning" => false,
"allow_logprobs" => true,
...
}
],
"root" => "davinci-search-query"
},
....],
object: "list"
}}
See: https://platform.openai.com/docs/api-reference/models/retrieve
Classifies if text violates OpenAI's Content Policy
example-request
Example request
OpenAI.moderations(input: "I want to kill everyone!")
example-response
Example response
{:ok,
%{
id: "modr-6gEWXyuaU8dqiHpbAHIsdru0zuC88",
model: "text-moderation-004",
results: [
%{
"categories" => %{
"hate" => false,
"hate/threatening" => false,
"self-harm" => false,
"sexual" => false,
"sexual/minors" => false,
"violence" => true,
"violence/graphic" => false
},
"category_scores" => %{
"hate" => 0.05119025334715844,
"hate/threatening" => 0.00321022979915142,
"self-harm" => 7.337320857914165e-5,
"sexual" => 1.1111642379546538e-6,
"sexual/minors" => 3.588798147546868e-10,
"violence" => 0.9190407395362855,
"violence/graphic" => 1.2791929293598514e-7
},
"flagged" => true
}
]
}}
See: https://platform.openai.com/docs/api-reference/moderations/create
Callback implementation for Application.start/2
.
Retrieves a thread message by its id.
example-request
Example request
OpenAI.thread_message("thread_...", "msg_...")
example-response
Example response
{:ok,
%{
assistant_id: nil,
content: [
%{
"text" => %{"annotations" => [], "value" => "Hello, what is AI?"},
"type" => "text"
}
],
created_at: 1699705727,
file_ids: ["file-..."],
id: "msg_...",
metadata: %{},
object: "thread.message",
role: "user",
run_id: nil,
thread_id: "thread_..."
}}
See: https://platform.openai.com/docs/api-reference/threads/getThread
Creates a message within a thread.
example-request
Example request
params = [
role: "user",
content: "Hello, what is AI?",
file_ids: ["file-9Riyo515uf9KVfwdSrIQiqtC"],
metadata: %{
key_1: "value 1",
key_2: "value 2"
}
]
OpenAI.thread_message_create("thread_...", params)
example-response
Example response
{:ok,
%{
assistant_id: nil,
content: [
%{
"text" => %{"annotations" => [], "value" => "Hello, what is AI?"},
"type" => "text"
}
],
created_at: 1699706818,
file_ids: ["file-..."],
id: "msg_...",
metadata: %{"key_1" => "value 1", "key_2" => "value 2"},
object: "thread.message",
role: "user",
run_id: nil,
thread_id: "thread_..."
}}
See: https://platform.openai.com/docs/api-reference/messages/createMessage
thread_message_file(thread_id, message_id, file_id, config \\ %Config{})
View SourceRetrieves the message file object.
example-request
Example request
OpenAI.thread_message_file("thread_...", "msg_...", "file-...")
example-response
Example response
{:ok,
%{
created_at: 1699706818,
id: "file-...",
message_id: "msg_...",
object: "thread.message.file"
}}
See: https://platform.openai.com/docs/api-reference/messages/getMessageFile
thread_message_files(thread_id, message_id, params \\ [], config \\ %Config{})
View SourceRetrieves the list of files associated with a particular message of a thread.
example-request
Example request
OpenAI.thread_message_files("thread_...", "msg_...")
example-response
Example response
{:ok,
%{
data: [
%{
"created_at" => 1699706818,
"id" => "file-...",
"message_id" => "msg_...",
"object" => "thread.message.file"
}
],
first_id: "file-...",
has_more: false,
last_id: "file-...",
object: "list"
}}
Retrieves the list of files associated with a particular message of a thread, filtered by query params.
example-request-1
Example request
OpenAI.thread_message_files("thread_...", "msg_...", after: "file-...")
example-response-1
Example response
{:ok, %{data: [], first_id: nil, has_more: false, last_id: nil, object: "list"}}
See: https://platform.openai.com/docs/api-reference/messages/listMessageFiles
thread_message_modify(thread_id, message_id, params, config \\ %Config{})
View SourceModifies an existing thread message.
example-request
Example request
params = [
metadata: %{
key_3: "value 3"
}
]
OpenAI.thread_message_modify("thread_...", "msg_...", params)
example-response
Example response
{:ok,
%{
assistant_id: nil,
content: [
%{
"text" => %{"annotations" => [], "value" => "Hello, what is AI?"},
"type" => "text"
}
],
created_at: 1699706818,
file_ids: ["file-..."],
id: "msg_...",
metadata: %{"key_1" => "value 1", "key_2" => "value 2", "key_3" => "value 3"},
object: "thread.message",
role: "user",
run_id: nil,
thread_id: "thread_..."
}}
See: https://platform.openai.com/docs/api-reference/messages/modifyMessage
Retrieves the list of messages associated with a particular thread.
example-request
Example request
OpenAI.thread_messages("thread_...")
example-response
Example response
{:ok,
%{
data: [
%{
"assistant_id" => nil,
"content" => [
%{
"text" => %{
"annotations" => [],
"value" => "How does AI work? Explain it in simple terms."
},
"type" => "text"
}
],
"created_at" => 1699705727,
"file_ids" => [],
"id" => "msg_...",
"metadata" => %{},
"object" => "thread.message",
"role" => "user",
"run_id" => nil,
"thread_id" => "thread_..."
},
...
],
first_id: "msg_...",
has_more: false,
last_id: "msg_...",
object: "list"
}}
Retrieves the list of messages associated with a particular thread, filtered by query params.
example-request-1
Example request
OpenAI.thread_messages("thread_...", after: "msg_...")
example-response-1
Example response
{:ok,
%{
data: [
%{
"assistant_id" => nil,
"content" => [
%{
"text" => %{"annotations" => [], "value" => "Hello, what is AI?"},
"type" => "text"
}
],
"created_at" => 1699705727,
"file_ids" => ["file-..."],
"id" => "msg_...",
"metadata" => %{},
"object" => "thread.message",
"role" => "user",
"run_id" => nil,
"thread_id" => "thread_..."
}
],
first_id: "msg_...",
has_more: false,
last_id: "msg_...",
object: "list"
}}
See: https://platform.openai.com/docs/api-reference/messages/listMessages
Retrieves a particular thread run by its id.
example-request
Example request
OpenAI.thread_run("thread_...", "run_...")
example-response
Example response
{:ok,
%{
assistant_id: "asst_J",
cancelled_at: nil,
completed_at: 1700234149,
created_at: 1700234128,
expires_at: nil,
failed_at: nil,
file_ids: [],
id: "run_",
instructions: "You are an AI learning assistant.",
last_error: nil,
metadata: %{"key_3" => "value 3"},
model: "gpt-4-1106-preview",
object: "thread.run",
started_at: 1700234129,
status: "expired",
thread_id: "thread_",
tools: [%{"type" => "retrieval"}]
}}
See: https://platform.openai.com/docs/api-reference/runs/getRun
Cancels an in_progress
run.
example-request
Example request
OpenAI.thread_run_cancel("thread_...", "run_...")
example-response
Example response
{:ok,
%{
assistant_id: "asst_...",
cancelled_at: nil,
completed_at: nil,
created_at: 1699896939,
expires_at: 1699897539,
failed_at: nil,
file_ids: ["file-..."],
id: "run_...",
instructions: "...",
last_error: nil,
metadata: %{},
model: "gpt-4-1106-preview",
object: "thread.run",
started_at: 1699896939,
status: "cancelling",
thread_id: "thread_...",
tools: [%{"type" => "retrieval"}]
}}
See: https://platform.openai.com/docs/api-reference/runs/cancelRun
Creates a run for a thread using a particular assistant.
example-request
Example request
params = [
assistant_id: "asst_...",
model: "gpt-4-1106-preview",
tools: [%{
"type" => "retrieval"
}]
]
OpenAI.thread_run_create("thread_...", params)
example-response
Example response
{:ok,
%{
assistant_id: "asst_...",
cancelled_at: nil,
completed_at: nil,
created_at: 1699711115,
expires_at: 1699711715,
failed_at: nil,
file_ids: ["file-..."],
id: "run_...",
instructions: "...",
last_error: nil,
metadata: %{},
model: "gpt-4-1106-preview",
object: "thread.run",
started_at: nil,
status: "queued",
thread_id: "thread_...",
tools: [%{"type" => "retrieval"}]
}}
See: https://platform.openai.com/docs/api-reference/runs/createRun
Modifies an existing thread run.
example-request
Example request
params = [
metadata: %{
key_3: "value 3"
}
]
OpenAI.thread_run_modify("thread_...", "run_...", params)
example-response
Example response
{:ok,
%{
assistant_id: "asst_...",
cancelled_at: nil,
completed_at: 1699711125,
created_at: 1699711115,
expires_at: nil,
failed_at: nil,
file_ids: ["file-..."],
id: "run_...",
instructions: "...",
last_error: nil,
metadata: %{"key_3" => "value 3"},
model: "gpt-4-1106-preview",
object: "thread.run",
started_at: 1699711115,
status: "expired",
thread_id: "thread_...",
tools: [%{"type" => "retrieval"}]
}}
See: https://platform.openai.com/docs/api-reference/runs/modifyRun
Retrieves a thread run step by its id.
example-request
Example request
OpenAI.thread_run_step("thread_...", "run_...", "step_...")
example-response
Example response
{:ok,
%{
assistant_id: "asst_...",
cancelled_at: nil,
completed_at: 1699897927,
created_at: 1699897908,
expires_at: nil,
failed_at: nil,
id: "step_...",
last_error: nil,
object: "thread.run.step",
run_id: "run_...",
status: "completed",
step_details: %{
"message_creation" => %{"message_id" => "msg_..."},
"type" => "message_creation"
},
thread_id: "thread_...",
type: "message_creation"
}}
See: https://platform.openai.com/docs/api-reference/runs/getRunStep
thread_run_steps(thread_id, run_id, params \\ [], config \\ %Config{})
View SourceRetrieves the list of steps associated with a particular run of a thread.
example-request
Example request
OpenAI.thread_run_steps("thread_...", "run_...")
example-response
Example response
{:ok,
%{
data: [
%{
"assistant_id" => "asst_...",
"cancelled_at" => nil,
"completed_at" => 1699897927,
"created_at" => 1699897908,
"expires_at" => nil,
"failed_at" => nil,
"id" => "step_...",
"last_error" => nil,
"object" => "thread.run.step",
"run_id" => "run_...",
"status" => "completed",
"step_details" => %{
"message_creation" => %{"message_id" => "msg_..."},
"type" => "message_creation"
},
"thread_id" => "thread_...",
"type" => "message_creation"
}
],
first_id: "step_...",
has_more: false,
last_id: "step_...",
object: "list"
}}
Retrieves the list of steps associated with a particular run of a thread, filtered by query params.
example-request-1
Example request
OpenAI.thread_run_steps("thread_...", "run_...", order: "asc")
example-response-1
Example response
{:ok,
%{
data: [
%{
"assistant_id" => "asst_...",
"cancelled_at" => nil,
"completed_at" => 1699897927,
"created_at" => 1699897908,
"expires_at" => nil,
"failed_at" => nil,
"id" => "step_...",
"last_error" => nil,
"object" => "thread.run.step",
"run_id" => "run_...",
"status" => "completed",
"step_details" => %{
"message_creation" => %{"message_id" => "msg_..."},
"type" => "message_creation"
},
"thread_id" => "thread_...",
"type" => "message_creation"
}
],
first_id: "step_...",
has_more: false,
last_id: "step_...",
object: "list"
}}
See: https://platform.openai.com/docs/api-reference/runs/listRunSteps
thread_run_submit_tool_outputs(thread_id, run_id, params, config \\ %Config{})
View SourceWhen a run has the status: "requires_action" and required_action.type is submit_tool_outputs, this endpoint can be used to submit the outputs from the tool calls once they're all completed. All outputs must be submitted in a single request.
example-request
Example request
params = [
tool_outputs: [%{
tool_call_id: "call_abc123",
output: "test"
}]
]
OpenAI.thread_run_submit_tool_outputs("thread_...", "run_...", params)
example-response
Example response
{:ok,
%{
assistant_id: "asst_abc123",
cancelled_at: nil,
completed_at: nil,
created_at: 1699075592,
expires_at: 1699076192,
failed_at: nil,
file_ids: [],
id: "run_abc123",
instructions: "You tell the weather.",
last_error: nil,
metadata: %{},
model: "gpt-4",
object: "thread.run",
started_at: 1699075592,
status: "queued",
thread_id: "thread_abc123",
tools: [
%{
"function" => %{
"description" => "Determine weather in my location",
"name" => "get_weather",
"parameters" => %{
"properties" => %{
"location" => %{
"description" => "The city and state e.g. San Francisco, CA",
"type" => "string"
},
"unit" => %{"enum" => ["c", "f"], "type" => "string"}
},
"required" => ["location"],
"type" => "object"
}
},
"type" => "function"
}
]
}}
See: https://platform.openai.com/docs/api-reference/runs/submitToolOutputs
Retrieves the list of runs associated with a particular thread.
example-request
Example request
OpenAI.thread_runs("thread_...")
example-response
Example response
{:ok, %{data: [], first_id: nil, has_more: false, last_id: nil, object: "list"}}
Retrieves the list of runs associated with a particular thread, filtered by query params.
example-request-1
Example request
OpenAI.thread_runs("thread_...", limit: 10)
example-response-1
Example response
{:ok, %{data: [], first_id: nil, has_more: false, last_id: nil, object: "list"}}
See: https://platform.openai.com/docs/api-reference/runs/listRuns
Retrieves the list of threads.
NOTE: At the time of this writing this functionality remains undocumented by OpenAI.
example-request
Example request
OpenAI.threads()
example-response
Example response
{:ok,
%{
data: [
%{
"created_at" => 1699705727,
"id" => "thread_...",
"metadata" => %{"key_1" => "value 1", "key_2" => "value 2"},
"object" => "thread"
},
...
],
first_id: "thread_...",
has_more: false,
last_id: "thread_...",
object: "list"
}}
Retrieves a filtered list of threads.
NOTE: At the time of this writing this functionality remains undocumented by OpenAI.
example-request-1
Example request
OpenAI.threads(limit: 2)
example-response-1
Example response
{:ok,
%{
data: [
%{
"created_at" => 1699705727,
"id" => "thread_...",
"metadata" => %{"key_1" => "value 1", "key_2" => "value 2"},
"object" => "thread"
},
%{
"created_at" => 1699704406,
"id" => "thread_...",
"metadata" => %{"key_1" => "value 1", "key_2" => "value 2", "key_3" => "value 3"},
"object" => "thread"
}
],
first_id: "thread_...",
has_more: true,
last_id: "thread_...",
object: "list"
}}
Retrieves a thread by its id.
example-request-2
Example request
OpenAI.threads("thread_..."")
example-response-2
Example response
{:ok,
%{
created_at: 1699703890,
id: "thread_...",
metadata: %{"key_1" => "value 1", "key_2" => "value 2"},
object: "thread"
}}
See: https://platform.openai.com/docs/api-reference/threads/getThread
Creates a new thread.
example-request
Example request
OpenAI.threads_create()
example-response
Example response
{:ok,
%{
created_at: 1699703548,
id: "thread_...",
metadata: %{},
object: "thread"
}}
Creates a new thread with some messages and metadata.
example-request-1
Example request
messages = [
%{
role: "user",
content: "Hello, what is AI?",
file_ids: ["file-..."]
},
%{
role: "user",
content: "How does AI work? Explain it in simple terms."
},
]
metadata = %{
key_1: "value 1",
key_2: "value 2"
}
OpenAI.threads_create(messages: messages, metadata: metadata)
example-response-1
Example response
{:ok,
%{
created_at: 1699703890,
id: "thread_...",
metadata: %{"key_1" => "value 1", "key_2" => "value 2"},
object: "thread"
}}
See: https://platform.openai.com/docs/api-reference/threads/createThread
Creates a new thread and runs it.
example-request
Example request
messages = [
%{
role: "user",
content: "Hello, what is AI?",
file_ids: ["file-..."]
},
%{
role: "user",
content: "How does AI work? Explain it in simple terms."
},
]
thread_metadata = %{
key_1: "value 1",
key_2: "value 2"
}
thread = %{
messages: messages,
metadata: thread_metadata
}
run_metadata = %{
key_3: "value 3"
}
params = [
assistant_id: "asst_...",
thread: thread,
model: "gpt-4-1106-preview",
instructions: "You are an AI learning assistant.",
tools: [%{
"type" => "retrieval"
}],
metadata: run_metadata
]
OpenAI.threads_create_and_run(params)
example-response
Example response
{:ok,
%{
assistant_id: "asst_...",
cancelled_at: nil,
completed_at: nil,
created_at: 1699897907,
expires_at: 1699898507,
failed_at: nil,
file_ids: ["file-..."],
id: "run_...",
instructions: "You are an AI learning assistant.",
last_error: nil,
metadata: %{"key_3" => "value 3"},
model: "gpt-4-1106-preview",
object: "thread.run",
started_at: nil,
status: "queued",
thread_id: "thread_...",
tools: [%{"type" => "retrieval"}]
}}
See: https://platform.openai.com/docs/api-reference/runs/createThreadAndRun
Deletes a thread.
example-request
Example request
OpenAI.threads_delete("thread_...")
example-response
Example response
{:ok,
%{
deleted: true,
id: "thread_...",
object: "thread.deleted"
}}
See: https://platform.openai.com/docs/api-reference/threads/deleteThread
Modifies an existing thread.
example-request
Example request
metadata = %{
key_3: "value 3"
}
OpenAI.threads_modify("thread_...", metadata: metadata)
example-response
Example response
{:ok,
%{
created_at: 1699704406,
id: "thread_...",
metadata: %{"key_1" => "value 1", "key_2" => "value 2", "key_3" => "value 3"},
object: "thread"
}}
See: https://platform.openai.com/docs/api-reference/threads/modifyThread