Module: LLM::OpenAI::ResponseAdapter::Completion

Includes:
Contract::Completion
Defined in:
lib/llm/providers/openai/response_adapter/completion.rb

Constant Summary

Constants included from Contract

Contract::ContractError

Instance Method Summary collapse

Methods included from Contract

#included

Instance Method Details

#contentString

Returns the LLM response

Returns:

  • (String)

    Returns the LLM response



63
64
65
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 63

def content
  super
end

#content!Hash

Returns the LLM response after parsing it as JSON

Returns:

  • (Hash)

    Returns the LLM response after parsing it as JSON



75
76
77
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 75

def content!
  super
end

#input_tokensInteger

Returns the number of input tokens

Returns:

  • (Integer)

    Returns the number of input tokens



24
25
26
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 24

def input_tokens
  body.usage&.prompt_tokens || 0
end

#messagesArray<LLM::Messsage> Also known as: choices

Returns one or more messages

Returns:

  • (Array<LLM::Messsage>)

    Returns one or more messages



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 7

def messages
  body.choices.map.with_index do |choice, index|
    message = choice.message
    extra = {
      index:, response: self,
      logprobs: choice.logprobs,
      reasoning_content: message.reasoning_content,
      tool_calls: adapt_tool_calls(message.tool_calls),
      original_tool_calls: message.tool_calls
    }
    LLM::Message.new(message.role, message.content, extra)
  end
end

#modelString

Returns the model name

Returns:

  • (String)

    Returns the model name



57
58
59
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 57

def model
  body.model
end

#output_tokensInteger

Returns the number of output tokens

Returns:

  • (Integer)

    Returns the number of output tokens



30
31
32
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 30

def output_tokens
  body.usage&.completion_tokens || 0
end

#reasoning_contentString?

Returns the reasoning content when the provider exposes it

Returns:

  • (String, nil)

    Returns the reasoning content when the provider exposes it



69
70
71
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 69

def reasoning_content
  super
end

#reasoning_tokensInteger

Returns the number of reasoning tokens

Returns:

  • (Integer)


36
37
38
39
40
41
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 36

def reasoning_tokens
  body
    .usage
    &.completion_tokens_details
    &.reasoning_tokens || 0
end

#total_tokensInteger

Returns the total number of tokens

Returns:

  • (Integer)

    Returns the total number of tokens



45
46
47
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 45

def total_tokens
  body.usage&.total_tokens || 0
end

#usageLLM::Usage

Returns usage information

Returns:



51
52
53
# File 'lib/llm/providers/openai/response_adapter/completion.rb', line 51

def usage
  super
end