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.



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

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

Instance Method Details

#summarize(preparation, custom_instructions: nil, cancellation: nil) ⇒ Object



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

def summarize(preparation, custom_instructions: nil, cancellation: 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),
    cancellation: cancellation
  )
  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),
      cancellation: cancellation
    )
    summary = "#{summary}\n\n---\n\n**Turn Context (split turn):**\n\n#{turn_summary}"
  end
  summary.to_s.strip
rescue Cancelled
  raise
rescue Kward::Cancellation::CancelledError
  raise
rescue StandardError => e
  raise SummarizationFailed, e.message
end