Class: Kward::Compaction::Summarizer

Inherits:
Object
  • Object
show all
Defined in:
lib/kward/compactor.rb

Overview

Compaction support object used by conversation summarization.

Instance Method Summary collapse

Constructor Details

#initialize(client:, prompt_builder: PromptBuilder.new) ⇒ Summarizer

Creates an object for conversation compaction.



752
753
754
755
# File 'lib/kward/compactor.rb', line 752

def initialize(client:, prompt_builder: PromptBuilder.new)
  @client = client
  @prompt_builder = prompt_builder
end

Instance Method Details

#summarize(preparation, custom_instructions: nil) ⇒ Object



757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
# File 'lib/kward/compactor.rb', line 757

def summarize(preparation, custom_instructions: nil)
  summary = chat(
    @prompt_builder.build(preparation, custom_instructions: custom_instructions),
    max_tokens: @prompt_builder.normal_summary_max_tokens(preparation.settings, model_max_tokens: model_max_tokens)
  )
  if preparation.split_turn && !preparation.turn_prefix_messages.empty?
    turn_summary = chat(
      @prompt_builder.build_split(preparation),
      max_tokens: @prompt_builder.split_turn_max_tokens(preparation.settings, model_max_tokens: model_max_tokens)
    )
    summary = "#{summary}\n\n---\n\n**Turn Context (split turn):**\n\n#{turn_summary}"
  end
  summary.to_s.strip
rescue Cancelled
  raise
rescue StandardError => e
  raise SummarizationFailed, e.message
end