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

Returns a new instance of Array.

Parameters:



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?

Returns:

  • (String, nil)


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?

Returns:

  • (Integer, nil)


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

def max_items
  @max_items
end

#min_itemsInteger?

Returns:

  • (Integer, nil)


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

Parameters:

  • data (Hash)

Returns:



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]

Parameters:

Returns:



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" } }

Returns:

  • (Hash)


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