Module: OpenAI

Defined in:
lib/openai/client.rb,
lib/openai.rb,
lib/openai/http.rb,
lib/openai/runs.rb,
lib/openai/audio.rb,
lib/openai/files.rb,
lib/openai/usage.rb,
lib/openai/images.rb,
lib/openai/models.rb,
lib/openai/stream.rb,
lib/openai/batches.rb,
lib/openai/threads.rb,
lib/openai/version.rb,
lib/openai/messages.rb,
lib/openai/realtime.rb,
lib/openai/finetunes.rb,
lib/openai/responses.rb,
lib/openai/run_steps.rb,
lib/openai/assistants.rb,
lib/openai/http_headers.rb,
lib/openai/conversations.rb,
lib/openai/vector_stores.rb,
lib/openai/vector_store_files.rb,
lib/openai/vector_store_file_batches.rb

Overview

rubocop:disable Metrics/ClassLength

Defined Under Namespace

Modules: HTTP, HTTPHeaders Classes: Assistants, Audio, AuthenticationError, Batches, Client, Configuration, ConfigurationError, Conversations, Error, Files, Finetunes, Images, Messages, MiddlewareErrors, Models, Realtime, Responses, RunSteps, Runs, Stream, Threads, Usage, VectorStoreFileBatches, VectorStoreFiles, VectorStores

Constant Summary collapse

VERSION =
"8.3.0".freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



74
75
76
# File 'lib/openai.rb', line 74

def configuration
  @configuration ||= OpenAI::Configuration.new
end

Class Method Details

.configure {|configuration| ... } ⇒ Object

Yields:



78
79
80
# File 'lib/openai.rb', line 78

def configure
  yield(configuration)
end

.log_message(prefix, message, level = :warn) ⇒ Object

Log a message with appropriate formatting

Parameters:

  • prefix (String)

    Prefix to add to the message

  • message (String)

    The message to log

  • level (Symbol) (defaults to: :warn)

    The log level (:error, :warn, etc.)



98
99
100
101
102
103
104
105
# File 'lib/openai.rb', line 98

def log_message(prefix, message, level = :warn)
  color = level == :error ? "\033[31m" : "\033[33m"
  logger = Logger.new($stdout)
  logger.formatter = proc do |_severity, _datetime, _progname, msg|
    "#{color}#{prefix} (spotted in ruby-openai #{VERSION}): #{msg}\n\033[0m"
  end
  logger.send(level, message)
end

.rough_token_count(content = "") ⇒ Object

Estimate the number of tokens in a string, using the rules of thumb from OpenAI: help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them

Raises:

  • (ArgumentError)


84
85
86
87
88
89
90
91
92
# File 'lib/openai.rb', line 84

def rough_token_count(content = "")
  raise ArgumentError, "rough_token_count requires a string" unless content.is_a? String
  return 0 if content.empty?

  count_by_chars = content.size / 4.0
  count_by_words = content.split.size * 4.0 / 3
  estimate = ((count_by_chars + count_by_words) / 2.0).round
  [1, estimate].max
end