Class: Kward::Compaction::ConversationSerializer

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

Overview

Compaction support object used by conversation summarization.

Constant Summary collapse

TOOL_RESULT_LIMIT =
2_000

Instance Method Summary collapse

Constructor Details

#initialize(tool_result_summarizer: nil) ⇒ ConversationSerializer

Creates an object for conversation compaction.



188
189
190
# File 'lib/kward/compactor.rb', line 188

def initialize(tool_result_summarizer: nil)
  @tool_result_summarizer = tool_result_summarizer
end

Instance Method Details

#serialize(messages) ⇒ Object



192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# File 'lib/kward/compactor.rb', line 192

def serialize(messages)
  tool_calls_by_id = {}
  Array(messages).map do |message|
    role = message_role(message).to_s
    case role
    when "user"
      "[User]: #{message_content_text(message_content(message))}"
    when "assistant"
      serialize_assistant(message, tool_calls_by_id)
    when "tool", "toolResult"
      serialize_tool_result(message, tool_calls_by_id)
    when "compactionSummary"
      "[Branch summary/context]: #{message_summary(message)}"
    when "bash"
      "[Bash]: #{message_content_text(message_content(message))}"
    when "custom", "branchSummary"
      "[Custom]: #{message_content_text(message_content(message))}"
    else
      "[#{role.empty? ? "Message" : role}]: #{message_content_text(message_content(message))}"
    end
  end.join("\n\n")
end