1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
module OpenAI
class Client
def initialize(access_token: nil, organization_id: nil, uri_base: nil, request_timeout: nil)
OpenAI.configuration.access_token = access_token if access_token
OpenAI.configuration.organization_id = organization_id if organization_id
OpenAI.configuration.uri_base = uri_base if uri_base
OpenAI.configuration.request_timeout = request_timeout if request_timeout
end
def chat(parameters: {})
OpenAI::Client.json_post(path: "/chat/completions", parameters: parameters)
end
def completions(parameters: {})
OpenAI::Client.json_post(path: "/completions", parameters: parameters)
end
def edits(parameters: {})
OpenAI::Client.json_post(path: "/edits", parameters: parameters)
end
def embeddings(parameters: {})
OpenAI::Client.json_post(path: "/embeddings", parameters: parameters)
end
def files
@files ||= OpenAI::Files.new
end
def finetunes
@finetunes ||= OpenAI::Finetunes.new
end
def images
@images ||= OpenAI::Images.new
end
def models
@models ||= OpenAI::Models.new
end
def moderations(parameters: {})
OpenAI::Client.json_post(path: "/moderations", parameters: parameters)
end
def transcribe(parameters: {})
OpenAI::Client.multipart_post(path: "/audio/transcriptions", parameters: parameters)
end
def translate(parameters: {})
OpenAI::Client.multipart_post(path: "/audio/translations", parameters: parameters)
end
def self.get(path:)
HTTParty.get(
uri(path: path),
headers: headers,
timeout: request_timeout
)
end
def self.json_post(path:, parameters:)
HTTParty.post(
uri(path: path),
headers: headers,
body: parameters&.to_json,
timeout: request_timeout
)
end
def self.multipart_post(path:, parameters: nil)
HTTParty.post(
uri(path: path),
headers: headers.merge({ "Content-Type" => "multipart/form-data" }),
body: parameters,
timeout: request_timeout
)
end
def self.delete(path:)
HTTParty.delete(
uri(path: path),
headers: headers,
timeout: request_timeout
)
end
private_class_method def self.uri(path:)
OpenAI.configuration.uri_base + OpenAI.configuration.api_version + path
end
private_class_method def self.headers
{
"Content-Type" => "application/json",
"Authorization" => "Bearer #{OpenAI.configuration.access_token}",
"OpenAI-Organization" => OpenAI.configuration.organization_id
}
end
private_class_method def self.request_timeout
OpenAI.configuration.request_timeout
end
end
end
|