Skip to content
Kward Search API index

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.



83
84
85
# File 'lib/kward/compactor.rb', line 83

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

Instance Method Details

#serialize(messages) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/kward/compactor.rb', line 87

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