in lib/openai/client.rb [98:146]
def initialize(
api_key: ENV["OPENAI_API_KEY"],
organization: ENV["OPENAI_ORG_ID"],
project: ENV["OPENAI_PROJECT_ID"],
base_url: ENV["OPENAI_BASE_URL"],
max_retries: DEFAULT_MAX_RETRIES,
timeout: DEFAULT_TIMEOUT_IN_SECONDS,
initial_retry_delay: DEFAULT_INITIAL_RETRY_DELAY,
max_retry_delay: DEFAULT_MAX_RETRY_DELAY
)
base_url ||= "https://api.openai.com/v1"
if api_key.nil?
raise ArgumentError.new("api_key is required, and can be set via environ: \"OPENAI_API_KEY\"")
end
headers = {
"openai-organization" => (@organization = organization&.to_s),
"openai-project" => (@project = project&.to_s)
}
@api_key = api_key.to_s
super(
base_url: base_url,
timeout: timeout,
max_retries: max_retries,
initial_retry_delay: initial_retry_delay,
max_retry_delay: max_retry_delay,
headers: headers
)
@completions = OpenAI::Resources::Completions.new(client: self)
@chat = OpenAI::Resources::Chat.new(client: self)
@embeddings = OpenAI::Resources::Embeddings.new(client: self)
@files = OpenAI::Resources::Files.new(client: self)
@images = OpenAI::Resources::Images.new(client: self)
@audio = OpenAI::Resources::Audio.new(client: self)
@moderations = OpenAI::Resources::Moderations.new(client: self)
@models = OpenAI::Resources::Models.new(client: self)
@fine_tuning = OpenAI::Resources::FineTuning.new(client: self)
@vector_stores = OpenAI::Resources::VectorStores.new(client: self)
@beta = OpenAI::Resources::Beta.new(client: self)
@batches = OpenAI::Resources::Batches.new(client: self)
@uploads = OpenAI::Resources::Uploads.new(client: self)
@responses = OpenAI::Resources::Responses.new(client: self)
@evals = OpenAI::Resources::Evals.new(client: self)
end