Class: Zuno::CallbackContext

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(messages:, system:, tools:) ⇒ CallbackContext



38
39
40
41
42
# File 'lib/zuno.rb', line 38

def initialize(messages:, system:, tools:)
  @messages = messages
  @system = system
  @tools = tools
end

Instance Attribute Details

#messagesObject

Returns the value of attribute messages.



35
36
37
# File 'lib/zuno.rb', line 35

def messages
  @messages
end

#systemObject

Returns the value of attribute system.



36
37
38
# File 'lib/zuno.rb', line 36

def system
  @system
end

#toolsObject

Returns the value of attribute tools.



35
36
37
# File 'lib/zuno.rb', line 35

def tools
  @tools
end

Instance Method Details

#add_message(message = nil, role: nil, content: nil, **attributes) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/zuno.rb', line 52

def add_message(message = nil, role: nil, content: nil, **attributes)
  if message
    raise ArgumentError, "Provide either a message hash or role/content attributes" unless role.nil? && content.nil? && attributes.empty?

    entry = message
  elsif role.nil? && content.nil? && !attributes.empty?
    entry = attributes
  else
    raise ArgumentError, "add_message requires role:" if role.nil?

    entry = { role: role, content: content }.merge(attributes)
  end

  @messages = [] unless @messages.is_a?(Array)
  @messages << entry
  self
end

#add_messages(messages) ⇒ Object



70
71
72
73
74
# File 'lib/zuno.rb', line 70

def add_messages(messages)
  @messages = [] unless @messages.is_a?(Array)
  @messages.concat(Array(messages))
  self
end

#add_tool(name, tool) ⇒ Object



76
77
78
79
80
# File 'lib/zuno.rb', line 76

def add_tool(name, tool)
  @tools = {} unless @tools.is_a?(Hash)
  @tools[name] = tool
  self
end

#add_tools(tools) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/zuno.rb', line 82

def add_tools(tools)
  @tools = {} unless @tools.is_a?(Hash)

  case tools
  when Hash
    @tools.merge!(tools)
  when Array
    tools.each do |entry|
      raise ToolError, "tools must be a Hash or Array of ToolDefinition entries" unless entry.is_a?(ToolDefinition)

      @tools[entry.name] = entry
    end
  else
    raise ToolError, "tools must be a Hash or Array"
  end

  self
end

#clear_system!Object



110
111
112
113
# File 'lib/zuno.rb', line 110

def clear_system!
  @system = nil
  self
end

#remove_tool(name) ⇒ Object



101
102
103
104
105
106
107
108
# File 'lib/zuno.rb', line 101

def remove_tool(name)
  return self unless @tools.is_a?(Hash)

  @tools.delete(name)
  @tools.delete(name.to_s)
  @tools.delete(name.to_sym)
  self
end