Class: Kward::Compaction::ConversationSerializer

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

Constant Summary collapse

TOOL_RESULT_LIMIT =
2_000

Instance Method Summary collapse

Constructor Details

#initialize(tool_result_summarizer: nil) ⇒ ConversationSerializer

Returns a new instance of ConversationSerializer.



175
176
177
# File 'lib/kward/compactor.rb', line 175

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

Instance Method Details

#serialize(messages) ⇒ Object



179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/kward/compactor.rb', line 179

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