非正式的社區修訂版Openai Rest API的包裝器請參閱https://platform.openai.com/docs/api-reference/introduction in REST端點有關的更多信息
感謝您的理解和支持,並感謝到目前為止為圖書館做出貢獻的每個人!
添加:OpenAi作為您的Mix.exs文件中的依賴性。
def deps do
[
{ :openai , "~> 0.6.2" }
]
end 您可以在混合config.exs中配置OpenAI(默認$ project_root/config/config.exs)。如果您使用的是phoenix在config/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/"注意:您可以將OS ENV變量加載到配置文件中,如果為名為OPENAI_API_KEY的API鍵設置ENV變量,則可以通過執行System.get_env("OPENAI_API_KEY")在代碼中獲取它。
config.exs是編譯時間,因此在構建過程中執行get_env/1函數,如果要在運行時獲得env變量,請在應用程序中使用runtime.exs而不是config.exs (Elixir Doc Ref)。
客戶庫庫配置可以在運行時覆蓋,通過將%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作為方括號中的列表,如上所述。
從https://platform.openai.com/account/api-keys獲取API密鑰
檢索可用型號的列表
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/retrieve
它返回一個或多個預測的完成,給定提示。該函數接受為參數“ egine_id”和完成的openai api所使用的參數集
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的約定,Alias OpenAI.image_generations(params, request_options)仍然可用於逆轉兼容性。如果使用它,請考慮將其切換到OpenAI.images_generations(params, request_options)盡快。
Note2:傳遞http_options的官方方法在v0.5.0中更改為符合其他API的約定,Alias 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
返回屬於用戶組織的文件,給定文件ID
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/retrieve
上傳一個包含在各種端點/功能上使用的文檔的文件。當前,一個組織上傳的所有文件的大小最多可達1 GB。如果需要增加存儲限制,請聯繫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/retrieve
創建一個從給定數據集微調指定模型的作業。
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中,以確保將其設置為配置中的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
檢索通過查詢參數過濾的助手列表。
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
根據其ID檢索助手。
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
檢索與特定助手關聯的文件列表,並通過查詢參數過濾。
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
通過ID檢索助手文件
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"
} }通過查詢參數檢索線程列表。注意:在撰寫本文時,此功能仍然沒有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
檢索與特定線程相關聯的消息列表,該線程通過查詢參數過濾。
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
通過其ID檢索線程消息。
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/messages/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/messages/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/messages/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/messages/listmessagefiles
檢索與線程的特定消息關聯的文件列表,該消息通過查詢參數過濾。
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/messages/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/messages/getmessagefile
檢索與特定線程相關聯的運行列表,該線程通過查詢參數過濾。
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
檢索由其ID運行的特定線程。
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
檢索與線程的特定運行相關的步驟列表,並通過查詢參數過濾。
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_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
根據其ID檢索線程運行步驟。
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.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/retrieve
該軟件包可根據MIT許可條款作為開源。