Skip to content
Kward Search API index

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.



669
670
671
672
# File 'lib/kward/compactor.rb', line 669

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

Instance Method Details

#summarize(preparation, custom_instructions: nil) ⇒ Object



674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
# File 'lib/kward/compactor.rb', line 674

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