Class: Smith::Agent::Completion

Inherits:
Dry::Struct
  • Object
show all
Defined in:
lib/smith/agent/completion.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_messages(response:, messages:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/smith/agent/completion.rb', line 14

def self.from_messages(response:, messages:)
  assistant_messages = Array(messages).select do |message|
    message.respond_to?(:role) && message.role.to_s == "assistant"
  end
  usage_source = assistant_messages.empty? ? [response] : assistant_messages

  provider_usages = build_provider_usages(usage_source)
  new(
    response: response,
    provider_usages:,
    usage_complete: provider_usages.length == usage_source.length
  )
end

Instance Method Details

#contentObject



28
29
30
# File 'lib/smith/agent/completion.rb', line 28

def content
  response.content if response.respond_to?(:content)
end

#input_tokensObject



32
33
34
# File 'lib/smith/agent/completion.rb', line 32

def input_tokens
  provider_usages.sum(&:input_tokens) if usage_complete
end

#output_tokensObject



36
37
38
# File 'lib/smith/agent/completion.rb', line 36

def output_tokens
  provider_usages.sum(&:output_tokens) if usage_complete
end