Неофициальная обертка для сообщества для API Openai REST см. Https://platform.openai.com/docs/api-reference/introduction для получения дополнительной информации о конечных точках отдыха
Спасибо за понимание и поддержку и благодаря всем, кто внес свой вклад в библиотеку!
Добавить : openai как зависимость в вашем файле mix.exs.
def deps do
[
{ :openai , "~> 0.6.2" }
]
end Вы можете настроить OpenAI в вашем Mix Config.exs (по умолчанию $ project_root/config/config.exs). Если вы используете Phoenix, добавьте конфигурацию в свою конфигурацию/dev.exs | test.exs | prod.exs файлы. Примером конфигурации является:
import Config
config :openai ,
# find it at https://platform.openai.com/account/api-keys
api_key: "your-api-key" ,
# find it at https://platform.openai.com/account/org-settings under "Organization ID"
organization_key: "your-organization-key" ,
# optional, use when required by an OpenAI API beta, e.g.:
beta: "assistants=v1" ,
# optional, passed to [HTTPoison.Request](https://hexdocs.pm/httpoison/HTTPoison.Request.html) options
http_options: [ recv_timeout: 30_000 ] ,
# optional, useful if you want to do local integration tests using Bypass or similar
# (https://github.com/PSPDFKit-labs/bypass), do not use it for production code,
# but only in your test config!
api_url: "http://localhost/" ПРИМЕЧАНИЕ. Вы можете загрузить переменные Env OS в файле конфигурации, если вы установите переменную env для клавиши API с именем OPENAI_API_KEY вы можете получить ее в коде, выполнив System.get_env("OPENAI_API_KEY") .
config.exs - это время компиляции, поэтому функция get_env/1 выполняется во время сборки, если вы хотите получить переменные ENV во время выполнения, используйте config.exs runtime.exs .
Конфигурация клиентской библиотеки может быть перезаписана во время выполнения путем передачи %OpenAI.Config{} struct в качестве последнего аргумента функции, которую вы должны использовать. Например, если вам нужно использовать другой api_key , organization_key или http_options вы можете просто сделать:
config_override = % OpenAI.Config { api_key: "test-api-key" } # this will return a config struct with "test-api-key" as api_key, all the other config are defaulted by the client by using values taken from config.exs, so you don't need to set the defaults manually
# chat_completion with overriden config
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?" }
]
] ,
config_override # <--- pass the overriden configuration as last argument of the function
)
# chat_completion with standard config
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?" }
]
) Вы можете выполнить переопределение конфигурации во всех функциях, обратите внимание, что аргумент params должен быть передан явно в качестве списка в квадратных скобках, если конфигурация должна быть перезаписана, как в примере выше.
Получите свой ключ API от https://platform.openai.com/account/api-keys
Получить список доступных моделей
OpenAI . models ( ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/models/list
Получить информацию о конкретной модели
OpenAI . models ( "davinci-search-query" ) { :ok ,
% {
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 ,
"allow_sampling" => true ,
"allow_search_indices" => true ,
"allow_view" => true ,
"created" => 1669066353 ,
"group" => nil ,
"id" => "modelperm-lYkiTZMmJMWm8jvkPx2duyHE" ,
"is_blocking" => false ,
"object" => "model_permission" ,
"organization" => "*"
}
] ,
root: "davinci-search-query"
} }См.: Https://platform.openai.com/docs/api-reference/models/retrive
Он возвращает одно или несколько прогнозируемых завершений с учетом подсказки. Функция принимает в качестве аргументов «Engine_ID» и набор параметров, используемых API API Open Applions
OpenAI . completions (
model: "finetuned-model" ,
prompt: "once upon a time" ,
max_tokens: 5 ,
temperature: 1 ,
...
) ## Example response
{ :ok , % {
choices: [
% {
"finish_reason" => "length" ,
"index" => 0 ,
"logprobs" => nil ,
"text" => " " thing we are given"
}
] ,
created: 1617147958 ,
id: "..." ,
model: "..." ,
object: "text_completion"
}
}См.: Https://platform.openai.com/docs/api-reference/completions/create
Этот API устарел от OpenAI, так как engines заменяются на models . Если вы используете его, рассмотрите возможность переключиться на completions(params) как можно скорее!
OpenAI . completions (
"davinci" , # engine_id
prompt: "once upon a time" ,
max_tokens: 5 ,
temperature: 1 ,
...
) { :ok , % {
choices: [
% {
"finish_reason" => "length" ,
"index" => 0 ,
"logprobs" => nil ,
"text" => " " thing we are given"
}
] ,
created: 1617147958 ,
id: "..." ,
model: "..." ,
object: "text_completion"
}
}См.: Https://beta.openai.com/docs/api-reference/completions/create для полного списка параметров, которые вы можете передать в функцию завершения
Создает завершение сообщения чата
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?" }
]
) { :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: 1_677_773_799 ,
id: "chatcmpl-6pftfA4NO9pOQIdxao6Z4McDlx90l" ,
model: "gpt-3.5-turbo-0301" ,
object: "chat.completion" ,
usage: % {
"completion_tokens" => 26 ,
"prompt_tokens" => 56 ,
"total_tokens" => 82
}
} }См.: Https://platform.openai.com/docs/api-reference/chat/create для полного списка параметров, которые вы можете передать в функцию завершения
Создает завершение сообщения чата, по умолчанию он потокосится с self() , но вы можете переопределить конфигурацию, передавая переопределение конфигурации в функцию с другим параметром stream_to http_options.
import Config
config :openai ,
api_key: "your-api-key" ,
http_options: [ recv_timeout: :infinity , async: :once ] ,
... http_options должен быть установлен, как указано выше, когда вы хотите рассматривать завершение чата как поток.
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 ( ) % {
"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"
}
...Создает новое редактирование для предоставленного ввода, инструкции и параметров
OpenAI . edits (
model: "text-davinci-edit-001" ,
input: "What day of the wek is it?" ,
instruction: "Fix the spelling mistakes"
) { :ok ,
% {
choices: [ % { "index" => 0 , "text" => "What day of the week is it? n " } ] ,
created: 1675443483 ,
object: "edit" ,
usage: % {
"completion_tokens" => 28 ,
"prompt_tokens" => 25 ,
"total_tokens" => 53
}
} }См.: Https://platform.openai.com/docs/api-reference/edits/create
Это генерирует изображение на основе данной подсказки. Функции изображения требуются несколько раз для выполнения, и API может вернуть ошибку тайм -аута, если необходимо, вы можете передать необязательную структуру конфигурации с Httpoison http_options в качестве второго аргумента функции для увеличения тайм -аута.
OpenAI . images_generations (
[ prompt: "A developer writing a test" , size: "256x256" ] ,
% OpenAI.Config { http_options: [ recv_timeout: 10 * 60 * 1000 ] } # optional!
) { :ok ,
% {
created: 1670341737 ,
data: [
% {
"url" => ... Returned url
}
]
} } Примечание. Эта подпись API изменилась в v0.3.0 , чтобы соответствовать соглашениям других API, псевдоним OpenAI.image_generations(params, request_options) все еще доступен для ретроставативности. Если вы используете его, рассмотрите возможность переключиться на OpenAI.images_generations(params, request_options) как можно скорее.
Примечание 2: Официальный способ прохождения HTTP_OPTIONS изменился в v0.5.0 , чтобы соответствовать соглашениям других API, псевдоним OpenAI.images_generations(file_path, params, request_options) , но все еще доступен для ретроспективности. Если вы используете его, рассмотрите возможность переключиться на OpenAI.images_variations(params, config)
См.: Https://platform.openai.com/docs/api-reference/images/create
Отредактируйте существующее изображение на основе функций быстрого изображения, требуемых несколько раз для выполнения, и API может вернуть ошибку тайм -аута, если необходимо, вы можете передать необязательную структуру конфигурации с Httpoison HTTP_OPTIONS в качестве второго аргумента функции для увеличения времени ожидания.
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!
) { :ok ,
% {
created: 1670341737 ,
data: [
% {
"url" => ... Returned url
}
]
} } ПРИМЕЧАНИЕ. Официальный способ передачи HTTP_OPTIONS изменился в v0.5.0 , чтобы соответствовать соглашениям других API, Alias OpenAI.images_edits(file_path, params, request_options) , но все еще доступен для ретросовместимости. Если вы используете его, рассмотрите возможность переключиться на OpenAI.images_edits(file_path, params, config)
См.: Https://platform.openai.com/docs/api-reference/images/create-edit
Функции изображения требуются несколько раз для выполнения, и API может вернуть ошибку тайм -аута, если необходимо, вы можете передать необязательную структуру конфигурации с Httpoison http_options в качестве второго аргумента функции для увеличения тайм -аута.
OpenAI . images_variations (
"/home/developer/myImg.png" ,
[ n: "5" ] ,
% OpenAI.Config { http_options: [ recv_timeout: 10 * 60 * 1000 ] } # optional!
) { :ok ,
% {
created: 1670341737 ,
data: [
% {
"url" => ... Returned url
}
]
} } ПРИМЕЧАНИЕ. Официальный способ прохождения HTTP_OPTIONS изменился в v0.5.0 , чтобы соответствовать соглашениям других API, псевдоним OpenAI.images_variations(file_path, params, request_options) , но все еще доступен для ретроспективности. Если вы используете его, рассмотрите возможность переключиться на OpenAI.images_edits(file_path, params, config)
См.: Https://platform.openai.com/docs/api-reference/images/create-variation
OpenAI . embeddings (
model: "text-embedding-ada-002" ,
input: "The food was delicious and the waiter..."
) { :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 }
} }См.: Https://platform.openai.com/docs/api-reference/embeddings/create
Генерирует звук из входного текста.
OpenAI . audio_speech (
model: "tts-1" ,
input: "You know that Voight-Kampf test of yours. Did you ever take that test yourself?" ,
voice: "alloy"
) { :ok , << 255 , 255 , ... >> }См.: Https://platform.openai.com/docs/api-reference/audio/create, чтобы получить информацию о параметрах, принятых API
Транскрибирует звук в язык ввода.
OpenAI . audio_transcription (
"./path_to_file/blade_runner.mp3" , # file path
model: "whisper-1"
) { :ok ,
% {
text: "I've seen things you people wouldn't believe.."
} }См.: Https://platform.openai.com/docs/api-reference/audio/create, чтобы получить информацию о параметрах, принятых API
Переводит звук на английский.
OpenAI . audio_translation (
"./path_to_file/werner_herzog_interview.mp3" , # file path
model: "whisper-1"
) { :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."
}
}См.: Https://platform.openai.com/docs/api-reference/audio/create, чтобы получить информацию о параметрах, принятых API
Возвращает список файлов, которые принадлежат организации пользователя.
OpenAI . files ( ) { :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"
}
}См.: Https://platform.openai.com/docs/api-reference/files
Возвращает файл, принадлежащий организации пользователя, с учетом идентификатора файла
OpenAI . files ( "file-123321" ) { :ok ,
% {
bytes: 923 ,
created_at: 1675370979 ,
filename: "file.jsonl" ,
id: "file-123321" ,
object: "file" ,
purpose: "fine-tune" ,
status: "processed" ,
status_details: nil
}
}См.: Https://platform.openai.com/docs/api-reference/files/retrive
Загрузите файл, который содержит документы, которые будут использоваться для различных конечных точек/функций. В настоящее время размер всех файлов, загруженных одной организацией, может составлять до 1 ГБ. Пожалуйста, свяжитесь с Openai, если вам нужно увеличить предел хранения.
OpenAI . files_upload ( "./file.jsonl" , purpose: "fine-tune" ) { :ok ,
% {
bytes: 923 ,
created_at: 1675373519 ,
filename: "file.jsonl" ,
id: "file-123" ,
object: "file" ,
purpose: "fine-tune" ,
status: "uploaded" ,
status_details: nil
}
}См.: Https://platform.openai.com/docs/api-reference/files/upload
Удалить файл
OpenAI . files_delete ( "file-123" ) { :ok , % { deleted: true , id: "file-123" , object: "file" } }См.: Https://platform.openai.com/docs/api-reference/files/delete
Перечислите точную настройку вашей организации.
OpenAI . finetunes ( ) { :ok ,
% {
object: "list" ,
data: [ % {
"id" => "t-AF1WoRqd3aJAHsqc9NY7iL8F" ,
"object" => "fine-tune" ,
"model" => "curie" ,
"created_at" => 1614807352 ,
"fine_tuned_model" => null ,
"hyperparams" => { ... } ,
"organization_id" => "org-..." ,
"result_files" = [ ] ,
"status": "pending" ,
"validation_files" => [ ] ,
"training_files" => [ { ... } ] ,
"updated_at" => 1614807352 ,
} ] ,
}
}См.: Https://platform.openai.com/docs/api-reference/fine-tunes/list
Получает информацию о хорошей настройке работы.
OpenAI . finetunes ( "t-AF1WoRqd3aJAHsqc9NY7iL8F" ) { :ok ,
% {
object: "list" ,
data: [ % {
"id" => "t-AF1WoRqd3aJAHsqc9NY7iL8F" ,
"object" => "fine-tune" ,
"model" => "curie" ,
"created_at" => 1614807352 ,
"fine_tuned_model" => null ,
"hyperparams" => { ... } ,
"organization_id" => "org-..." ,
"result_files" = [ ] ,
"status": "pending" ,
"validation_files" => [ ] ,
"training_files" => [ { ... } ] ,
"updated_at" => 1614807352 ,
} ] ,
}
}См.: Https://platform.openai.com/docs/api-reference/fine-tunes/retrive
Создает работу, которая тонко настраивает указанную модель из данного набора данных.
OpenAI . finetunes_create (
training_file: "file-123213231" ,
model: "curie" ,
) { :ok ,
% {
created_at: 1675527767 ,
events: [
% {
"created_at" => 1675527767 ,
"level" => "info" ,
"message" => "Created fine-tune: ft-IaBYfSSAK47UUCbebY5tBIEj" ,
"object" => "fine-tune-event"
}
] ,
fine_tuned_model: nil ,
hyperparams: % {
"batch_size" => nil ,
"learning_rate_multiplier" => nil ,
"n_epochs" => 4 ,
"prompt_loss_weight" => 0.01
} ,
id: "ft-IaBYfSSAK47UUCbebY5tBIEj" ,
model: "curie" ,
object: "fine-tune" ,
organization_id: "org-1iPTOIak4b5fpuIB697AYMmO" ,
result_files: [ ] ,
status: "pending" ,
training_files: [
% {
"bytes" => 923 ,
"created_at" => 1675373519 ,
"filename" => "file-12321323.jsonl" ,
"id" => "file-12321323" ,
"object" => "file" ,
"purpose" => "fine-tune" ,
"status" => "processed" ,
"status_details" => nil
}
] ,
updated_at: 1675527767 ,
validation_files: [ ]
} }См.: Https://platform.openai.com/docs/api-reference/fine-tunes/create
Получите мелкозернистые обновления статуса для точной настройки.
OpenAI . finetunes_list_events ( "ft-AF1WoRqd3aJAHsqc9NY7iL8F" ) { :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"
} ,
... ,
]
}
}См.: Https://platform.openai.com/docs/api-reference/fine-tunes/events
Немедленно отмените работу тонкой настройки.
OpenAI . finetunes_cancel ( "ft-AF1WoRqd3aJAHsqc9NY7iL8F" ) { :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: [ ]
} }Немедленно отмените работу тонкой настройки.
OpenAI . finetunes_delete_model ( "model-id" ) { :ok ,
% {
id: "model-id" ,
object: "model" ,
deleted: true
}
}См.: Https://platform.openai.com/docs/api-reference/fine-tunes/delete-model
Классифицирует, нарушает ли текст политику контента OpenAI
OpenAI . moderations ( input: "I want to kill everyone!" ) { :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
}
]
} }См.: Https://platform.openai.com/docs/api-reference/moderations/create
Следующие API в настоящее время находятся в бета -версии, чтобы использовать их, обязательно установите beta -параметр в вашей конфигурации.
config :openai ,
# optional, use when required by an OpenAI API beta, e.g.:
beta: "assistants=v1"Получает список помощников.
OpenAI . assistants ( ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/assistants/listassistants
Получает список помощников, отфильтрованных по запросу params.
OpenAI . assistants ( after: "" , limit: 10 ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/assistants/listassistants
Получает помощника по его удостоверению личности.
OpenAI . assistants ( "asst_..." ) { :ok ,
% {
created_at: 1699472932 ,
description: nil ,
file_ids: [ "file-..." ] ,
id: "asst_..." ,
instructions: "..." ,
metadata: % { } ,
model: "gpt-4-1106-preview" ,
name: "..." ,
object: "assistant" ,
tools: [ % { "type" => "retrieval" } ]
} }См.: Https://platform.openai.com/docs/api-reference/assistants/getassistant
Создает нового помощника.
OpenAI . assistants_create (
model: "gpt-3.5-turbo-1106" ,
name: "My assistant" ,
instructions: "You are a research assistant." ,
tools: [
% { type: "retrieval" }
] ,
file_ids: [ "file-..." ]
) { :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" } ]
} }См.: Https://platform.openai.com/docs/api-reference/assistants/createAssistant
Изменяет существующего помощника.
OpenAI . assistants_modify (
"asst_..." ,
model: "gpt-4-1106-preview" ,
name: "My upgraded assistant"
) { :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" } ]
} }См.: Https://platform.openai.com/docs/api-reference/assistants/modifyassistant
Удаляет помощника.
OpenAI . assistants_delete ( "asst_..." ) { :ok ,
% {
deleted: true ,
id: "asst_..." ,
object: "assistant.deleted"
} }См.: Https://platform.openai.com/docs/api-reference/assistants/deleteasSistant
Получает список файлов, связанных с конкретным помощником.
OpenAI . assistant_files ( "asst_..." ) { :ok ,
% {
data: [
% {
"assistant_id" => "asst_..." ,
"created_at" => 1699472933 ,
"id" => "file-..." ,
"object" => "assistant.file"
}
] ,
first_id: "file-..." ,
has_more: false ,
last_id: "file-..." ,
object: "list"
} }См.: Https://platform.openai.com/docs/api-reference/assistants/listassistantfiles
Получает список файлов, связанных с конкретным помощником, отфильтрованным с помощью запросов Params.
OpenAI . assistant_files ( "asst_..." , order: "desc" ) { :ok ,
% {
data: [
% {
"assistant_id" => "asst_..." ,
"created_at" => 1699472933 ,
"id" => "file-..." ,
"object" => "assistant.file"
}
] ,
first_id: "file-..." ,
has_more: false ,
last_id: "file-..." ,
object: "list"
} }См.: Https://platform.openai.com/docs/api-reference/assistants/listassistantfiles
Получает ассистентный файл по его идентификатору
OpenAI . assistant_file ( "asst_..." , "file_..." ) { :ok ,
% {
assistant_id: "asst_..." ,
created_at: 1699472933 ,
id: "file-..." ,
object: "assistant.file"
} }См.: Https://platform.openai.com/docs/api-reference/assistants/getassistantfile
Прикрепляет ранее загруженный файл помощнику.
OpenAI . assistant_file_create ( "asst_..." , file_id: "file-..." ) { :ok ,
% {
assistant_id: "asst_..." ,
created_at: 1699472933 ,
id: "file-..." ,
object: "assistant.file"
} }См.: Https://platform.openai.com/docs/api-reference/assistants/createassistantfile
Отмечает файл от помощника. Сам файл не удален автоматически.
OpenAI . assistant_file_delete ( "asst_..." , "file-..." ) { :ok ,
% {
deleted: true ,
id: "file-..." ,
object: "assistant.file.deleted"
} }См.: Https://platform.openai.com/docs/api-reference/assistants/deleteassistantfile
Получает список потоков. Примечание. На момент написания этой статьи эта функциональность остается незарегистрированной OpenAI.
OpenAI . threads ( ) { :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"
} }Получает список потоков по запросу params. Примечание. На момент написания этой статьи эта функциональность остается незарегистрированной OpenAI.
OpenAI . threads ( limit: 2 ) { :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"
} }Создает новую ветку с некоторыми сообщениями и метаданными.
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 ) { :ok ,
% {
created_at: 1699703890 ,
id: "thread_..." ,
metadata: % { "key_1" => "value 1" , "key_2" => "value 2" } ,
object: "thread"
} }См.: Https://platform.openai.com/docs/api-reference/threads/createthread
Создает новую ветку и запускает его.
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 ) { :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" } ]
} }См.: Https://platform.openai.com/docs/api-reference/runs/createthreadandrun
Изменяет существующий поток.
metadata = % {
key_3: "value 3"
}
OpenAI . threads_modify ( "thread_..." , metadata: metadata ) { :ok ,
% {
created_at: 1699704406 ,
id: "thread_..." ,
metadata: % { "key_1" => "value 1" , "key_2" => "value 2" , "key_3" => "value 3" } ,
object: "thread"
} }См.: Https://platform.openai.com/docs/api-reference/threads/modifythread
Изменяет существующий поток.
OpenAI . threads_delete ( "thread_..." ) { :ok ,
% {
deleted: true ,
id: "thread_..." ,
object: "thread.deleted"
} }См.: Https://platform.openai.com/docs/api-reference/threads/deletethread
Получает список сообщений, связанных с конкретной веткой.
OpenAI . thread_messages ( "thread_..." ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/messages/listmessages
Получает список сообщений, связанных с конкретным потоком, отфильтрованным с помощью запросов Params.
OpenAI . thread_messages ( "thread_..." , after: "msg_..." ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/messages/listmessages
Получает сообщение потока по своему идентификатору.
OpenAI . thread_message ( "thread_..." , "msg_..." ) { :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_..."
} }См.: Https://platform.openai.com/docs/api-reference/message/getmessage
Создает сообщение в потоке.
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 ) { :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_..."
} }См.: Https://platform.openai.com/docs/api-reference/message/createmessage
Создает сообщение в потоке.
params = [
metadata: % {
key_3: "value 3"
}
]
OpenAI . thread_message_modify ( "thread_..." , "msg_..." , params ) { :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_..."
} }См.: Https://platform.openai.com/docs/api-reference/message/modifymessage
Получает список файлов, связанных с конкретным сообщением потока.
OpenAI . thread_message_files ( "thread_..." , "msg_..." ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/message/listmessagefiles
Получает список файлов, связанных с конкретным сообщением потока, отфильтрованного с помощью запросов Params.
OpenAI . thread_message_files ( "thread_..." , "msg_..." , after: "file-..." ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/message/listmessagefiles
Получает объект файла сообщения.
OpenAI . thread_message_file ( "thread_..." , "msg_..." , "file-..." ) { :ok ,
% {
created_at: 1699706818 ,
id: "file-..." ,
message_id: "msg_..." ,
object: "thread.message.file"
} }См.: Https://platform.openai.com/docs/api-reference/message/getmessagefile
Получает список прогонов, связанных с конкретным потоком, отфильтрованным с помощью запросов Params.
OpenAI . thread_runs ( "thread_..." , limit: 10 ) { :ok , % {
data: [ ] ,
first_id: nil ,
has_more: false ,
last_id: nil ,
object: "list"
} }См.: Https://platform.openai.com/docs/api-reference/runs/listruns
Получает конкретную ветку, заполненную его идентификатором.
OpenAI . thread_run ( "thread_..." , "run_..." ) { :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" } ]
} }См.: Https://platform.openai.com/docs/api-reference/runs/getrun
Создает пробег для потока, используя конкретного помощника.
params = [
assistant_id: "asst_..." ,
model: "gpt-4-1106-preview" ,
tools: [ % {
"type" => "retrieval"
} ]
]
OpenAI . thread_run_create ( "thread_..." , params ) { :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" } ]
} }См.: Https://platform.openai.com/docs/api-reference/runs/createrun
Изменяет существующий запуск потока.
params = [
metadata: % {
key_3: "value 3"
}
]
OpenAI . thread_run_modify ( "thread_..." , "run_..." , params ) { :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" } ]
} }См.: Https://platform.openai.com/docs/api-reference/runs/modifyrun
Когда прогон имеет статус: "requires_action" и required_action.type - это submit_tool_outputs , эта конечная точка может использоваться для отправки выходов из звонков инструмента после их завершения. Все выходы должны быть представлены в одном запросе.
params = [
tool_outputs: [ % {
tool_call_id: "call_abc123" ,
output: "test"
} ]
]
OpenAI . thread_run_submit_tool_outputs ( "thread_..." , "run_..." , params ) { :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"
}
]
}
}См.: Https://platform.openai.com/docs/api-reference/runs/submittooloutputs
Отменяет запуск in_progress .
OpenAI . thread_run_cancel ( "thread_..." , "run_..." ) { :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" } ]
} }См.: Https://platform.openai.com/docs/api-reference/runs/cancelrun
Получает список шагов, связанных с определенным прогоном потока.
OpenAI . thread_run_steps ( "thread_..." , "run_..." ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/runs/listrunsteps
Получает список шагов, связанных с определенным заездом потока, отфильтрованного с помощью запросов Params.
OpenAI . thread_run_steps ( "thread_..." , "run_..." , order: "asc" ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/runs/listrunsteps
Получает список шагов, связанных с определенным заездом потока, отфильтрованного с помощью запросов Params.
OpenAI . thread_run_steps ( "thread_..." , "run_..." , order: "asc" ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/runs/listrunsteps
Получает тему, запустите шаг через свой идентификатор.
OpenAI . thread_run_step ( "thread_..." , "run_..." , "step_..." ) { :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"
} }См.: Https://platform.openai.com/docs/api-reference/runs/getrunstep
Следующие API устарели, но в настоящее время поддерживаются библиотекой для ретросовместимости с более старыми версиями. Если вы используете следующие API, рассмотрите возможность удалить его как можно скорее из вашего проекта!
Примечание. Из версии 0.5.0 Поиск, ответы, API классификации не поддерживаются (поскольку они были удалены Openai), если вам все еще нужно, чтобы они подумали о том, чтобы использовать V0.4.2.
Получите список доступных двигателей
OpenAI . engines ( ) { :ok , % {
"data" => [
% { "id" => "davinci" , "object" => "engine" , "max_replicas": ... } ,
... ,
...
]
}
См.: Https://beta.openai.com/docs/api-reference/engines/list
Получить конкретную информацию о двигателе
OpenAI . engines ( "davinci" ) { :ok , % {
"id" => "davinci" ,
"object" => "engine" ,
"max_replicas": ...
}
}См.: Https://beta.openai.com/docs/api-reference/engines/retrive
Пакет доступен как открытый исходный код в условиях лицензии MIT.