Class: Langchain::Assistant::Messages::OllamaMessage

Inherits:
Base
  • Object
show all
Defined in:
lib/langchain/assistant/messages/ollama_message.rb

Constant Summary collapse

ROLES =

OpenAI uses the following roles:

[
  "system",
  "assistant",
  "user",
  "tool"
].freeze
TOOL_ROLE =
"tool"

Instance Attribute Summary

Attributes inherited from Base

#content, #image_url, #role, #tool_call_id, #tool_calls

Instance Method Summary collapse

Methods inherited from Base

#standard_role, #user?

Constructor Details

#initialize(role:, content: nil, tool_calls: [], tool_call_id: nil) ⇒ OllamaMessage

Initialize a new OpenAI message

Parameters:

  • role (String)

    The role of the message

  • content (String) (defaults to: nil)

    The content of the message

  • tool_calls (Array<Hash>) (defaults to: [])

    The tool calls made in the message

  • tool_call_id (String) (defaults to: nil)

    The ID of the tool call

Raises:

  • (ArgumentError)


23
24
25
26
27
28
29
30
31
32
# File 'lib/langchain/assistant/messages/ollama_message.rb', line 23

def initialize(role:, content: nil, tool_calls: [], tool_call_id: nil)
  raise ArgumentError, "Role must be one of #{ROLES.join(", ")}" unless ROLES.include?(role)
  raise ArgumentError, "Tool calls must be an array of hashes" unless tool_calls.is_a?(Array) && tool_calls.all? { |tool_call| tool_call.is_a?(Hash) }

  @role = role
  # Some Tools return content as a JSON hence `.to_s`
  @content = content.to_s
  @tool_calls = tool_calls
  @tool_call_id = tool_call_id
end

Instance Method Details

#assistant?Boolean

Check if the message came from an LLM

Returns:

  • (Boolean)

    true/false whether this message was produced by an LLM



56
57
58
# File 'lib/langchain/assistant/messages/ollama_message.rb', line 56

def assistant?
  role == "assistant"
end

#llm?Boolean

Check if the message came from an LLM

Returns:

  • (Boolean)

    true/false whether this message was produced by an LLM



49
50
51
# File 'lib/langchain/assistant/messages/ollama_message.rb', line 49

def llm?
  assistant?
end

#system?Boolean

Check if the message are system instructions

Returns:

  • (Boolean)

    true/false whether this message are system instructions



63
64
65
# File 'lib/langchain/assistant/messages/ollama_message.rb', line 63

def system?
  role == "system"
end

#to_hashHash

Convert the message to an OpenAI API-compatible hash

Returns:

  • (Hash)

    The message as an OpenAI API-compatible hash



37
38
39
40
41
42
43
44
# File 'lib/langchain/assistant/messages/ollama_message.rb', line 37

def to_hash
  {}.tap do |h|
    h[:role] = role
    h[:content] = content if content # Content is nil for tool calls
    h[:tool_calls] = tool_calls if tool_calls.any?
    h[:tool_call_id] = tool_call_id if tool_call_id
  end
end

#tool?Boolean

Check if the message is a tool call

Returns:

  • (Boolean)

    true/false whether this message is a tool call



70
71
72
# File 'lib/langchain/assistant/messages/ollama_message.rb', line 70

def tool?
  role == "tool"
end