Class: OmniAI::Schema::Array

Inherits:
Object
  • Object
show all
Defined in:
lib/omniai/schema/array.rb

Overview

Examples:

array = OmniAI::Tool::Array.deserialize({
  description: "A list of people.",
  items: {
    properties: {
      name: { type: "string" },
    },
    required: ["name"],
  },
  min_items: 1,
  max_items: 5,
})
array.serialize # => { type: "array", items: { ... }, minItems: 1, maxItems: 5 }
array.parse([{ "name" => "Ringo Starr" }]) # => [{ name: "Ringo Star" }]

Constant Summary collapse

TYPE =
"array"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(items:, min_items: nil, max_items: nil, description: nil) ⇒ Array



63
64
65
66
67
68
69
# File 'lib/omniai/schema/array.rb', line 63

def initialize(items:, min_items: nil, max_items: nil, description: nil)
  super()
  @items = items
  @min_items = min_items
  @max_items = max_items
  @description = description
end

Instance Attribute Details

#descriptionString?



36
37
38
# File 'lib/omniai/schema/array.rb', line 36

def description
  @description
end

#itemsOmniAI::Schema::Object, ...



24
25
26
# File 'lib/omniai/schema/array.rb', line 24

def items
  @items
end

#max_itemsInteger?



28
29
30
# File 'lib/omniai/schema/array.rb', line 28

def max_items
  @max_items
end

#min_itemsInteger?



32
33
34
# File 'lib/omniai/schema/array.rb', line 32

def min_items
  @min_items
end

Class Method Details

.deserialize(data) ⇒ OmniAI::Schema::Array

Examples:

array = OmniAI::Schema::Array.deserialize({
  type: "array",
  items: { type: "string" },
  minItems: 1,
  maxItems: 5,
  description: "A list of strings."
}) # => OmniAI::Schema::Array


50
51
52
53
54
55
56
57
# File 'lib/omniai/schema/array.rb', line 50

def self.deserialize(data)
  new(
    items: OmniAI::Schema.deserialize(data["items"] || data[:items]),
    max_items: data[:maxItems] || data["maxItems"],
    min_items: data[:minItems] || data["minItems"],
    description: data[:description] || data["description"]
  )
end

Instance Method Details

#parse(data) ⇒ Array

Examples:

array.parse(["1", "2", "3"]) # => [1, 2, 3]


91
92
93
# File 'lib/omniai/schema/array.rb', line 91

def parse(data)
  data.map { |arg| @items.parse(arg) }
end

#serializeHash

Examples:

array.serialize # => { type: "array", items: { type: "string" } }


75
76
77
78
79
80
81
82
83
# File 'lib/omniai/schema/array.rb', line 75

def serialize
  {
    type: TYPE,
    description: @description,
    items: @items.serialize,
    maxItems: @max_items,
    minItems: @min_items,
  }.compact
end