45 lines
844 B
Ruby
45 lines
844 B
Ruby
# frozen_string_literal: true
|
|
|
|
module DiscourseAi
|
|
module Summarization
|
|
module Models
|
|
class Base
|
|
def initialize(model_name, max_tokens:)
|
|
@model_name = model_name
|
|
@max_tokens = max_tokens
|
|
end
|
|
|
|
def correctly_configured?
|
|
raise NotImplemented
|
|
end
|
|
|
|
def display_name
|
|
raise NotImplemented
|
|
end
|
|
|
|
def configuration_hint
|
|
raise NotImplemented
|
|
end
|
|
|
|
def available_tokens
|
|
max_tokens - reserved_tokens
|
|
end
|
|
|
|
def model
|
|
model_name.split(":").last
|
|
end
|
|
|
|
attr_reader :model_name, :max_tokens
|
|
|
|
protected
|
|
|
|
def reserved_tokens
|
|
# Reserve tokens for the response and the base prompt
|
|
# ~500 words
|
|
700
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|