-
-
Notifications
You must be signed in to change notification settings - Fork 359
/
Copy pathclient.rb
112 lines (90 loc) · 2.47 KB
/
client.rb
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
105
106
107
108
109
110
111
112
module OpenAI
class Client
include OpenAI::HTTP
CONFIG_KEYS = %i[
api_type
api_version
access_token
log_errors
organization_id
uri_base
request_timeout
extra_headers
proxy
].freeze
attr_reader *CONFIG_KEYS, :faraday_middleware
def initialize(config = {}, &faraday_middleware)
CONFIG_KEYS.each do |key|
# Set instance variables like api_type & access_token. Fall back to global config
# if not present.
instance_variable_set(
"@#{key}",
config[key].nil? ? OpenAI.configuration.send(key) : config[key]
)
end
@faraday_middleware = faraday_middleware
end
def chat(parameters: {})
json_post(path: "/chat/completions", parameters: parameters)
end
def embeddings(parameters: {})
json_post(path: "/embeddings", parameters: parameters)
end
def completions(parameters: {})
json_post(path: "/completions", parameters: parameters)
end
def audio
@audio ||= OpenAI::Audio.new(client: self)
end
def files
@files ||= OpenAI::Files.new(client: self)
end
def finetunes
@finetunes ||= OpenAI::Finetunes.new(client: self)
end
def images
@images ||= OpenAI::Images.new(client: self)
end
def models
@models ||= OpenAI::Models.new(client: self)
end
def assistants
@assistants ||= OpenAI::Assistants.new(client: self)
end
def threads
@threads ||= OpenAI::Threads.new(client: self)
end
def messages
@messages ||= OpenAI::Messages.new(client: self)
end
def runs
@runs ||= OpenAI::Runs.new(client: self)
end
def run_steps
@run_steps ||= OpenAI::RunSteps.new(client: self)
end
def vector_stores
@vector_stores ||= OpenAI::VectorStores.new(client: self)
end
def vector_store_files
@vector_store_files ||= OpenAI::VectorStoreFiles.new(client: self)
end
def vector_store_file_batches
@vector_store_file_batches ||= OpenAI::VectorStoreFileBatches.new(client: self)
end
def batches
@batches ||= OpenAI::Batches.new(client: self)
end
def moderations(parameters: {})
json_post(path: "/moderations", parameters: parameters)
end
def azure?
@api_type&.to_sym == :azure
end
def beta(apis)
dup.tap do |client|
client.add_headers("OpenAI-Beta": apis.map { |k, v| "#{k}=#{v}" }.join(";"))
end
end
end
end