module OpenAI
def configuration
def configuration @configuration ||= OpenAI::Configuration.new end
def configure
def configure yield(configuration) end
def log_message(prefix, message, level = :warn)
-
level
(Symbol
) -- The log level (:error, :warn, etc.) -
message
(String
) -- The message to log -
prefix
(String
) -- Prefix to add to the message
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
def rough_token_count(content = "")
Estimate the number of tokens in a string, using the rules of thumb from OpenAI:
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