Class: Zuno::CallbackContext
- Inherits:
-
Object
- Object
- Zuno::CallbackContext
- Defined in:
- lib/zuno.rb
Instance Attribute Summary collapse
-
#messages ⇒ Object
Returns the value of attribute messages.
-
#system ⇒ Object
Returns the value of attribute system.
-
#tools ⇒ Object
Returns the value of attribute tools.
Instance Method Summary collapse
- #add_message(message = nil, role: nil, content: nil, **attributes) ⇒ Object
- #add_messages(messages) ⇒ Object
- #add_tool(name, tool) ⇒ Object
- #add_tools(tools) ⇒ Object
- #clear_system! ⇒ Object
-
#initialize(messages:, system:, tools:) ⇒ CallbackContext
constructor
A new instance of CallbackContext.
- #remove_tool(name) ⇒ Object
Constructor Details
#initialize(messages:, system:, tools:) ⇒ CallbackContext
38 39 40 41 42 |
# File 'lib/zuno.rb', line 38 def initialize(messages:, system:, tools:) @messages = @system = system @tools = tools end |
Instance Attribute Details
#messages ⇒ Object
Returns the value of attribute messages.
35 36 37 |
# File 'lib/zuno.rb', line 35 def @messages end |
#system ⇒ Object
Returns the value of attribute system.
36 37 38 |
# File 'lib/zuno.rb', line 36 def system @system end |
#tools ⇒ Object
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 ( = nil, role: nil, content: nil, **attributes) if raise ArgumentError, "Provide either a message hash or role/content attributes" unless role.nil? && content.nil? && attributes.empty? entry = 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 () @messages = [] unless @messages.is_a?(Array) @messages.concat(Array()) 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 |