Class: OmniAI::Chat::Function

Inherits:
Object
  • Object
show all
Defined in:
lib/omniai/chat/function.rb

Overview

A function that includes a name / arguments.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, arguments:) ⇒ Function

Returns a new instance of Function.

Parameters:

  • name (String)
  • arguments (Hash)


15
16
17
18
# File 'lib/omniai/chat/function.rb', line 15

def initialize(name:, arguments:)
  @name = name
  @arguments = arguments
end

Instance Attribute Details

#argumentsHash

Returns:

  • (Hash)


11
12
13
# File 'lib/omniai/chat/function.rb', line 11

def arguments
  @arguments
end

#nameString

Returns:

  • (String)


8
9
10
# File 'lib/omniai/chat/function.rb', line 8

def name
  @name
end

Class Method Details

.deserialize(data, context: nil) ⇒ Function

Parameters:

  • data (Hash)
  • context (Context) (defaults to: nil)

    optional

Returns:



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/omniai/chat/function.rb', line 29

def self.deserialize(data, context: nil)
  deserialize = context&.deserializer(:function)
  return deserialize.call(data, context:) if deserialize

  name = data['name']
  arguments = begin
    JSON.parse(data['arguments']) if data['arguments']
  rescue JSON::ParserError
    data['arguments']
  end

  new(name:, arguments:)
end

Instance Method Details

#inspectString

Returns:

  • (String)


21
22
23
# File 'lib/omniai/chat/function.rb', line 21

def inspect
  "#<#{self.class.name} name=#{name.inspect} arguments=#{arguments.inspect}>"
end

#serialize(context: nil) ⇒ Hash

Parameters:

  • context (Context) (defaults to: nil)

    optional

Returns:

  • (Hash)


46
47
48
49
50
51
52
53
54
# File 'lib/omniai/chat/function.rb', line 46

def serialize(context: nil)
  serializer = context&.serializer(:function)
  return serializer.call(self, context:) if serializer

  {
    name: @name,
    arguments: (JSON.generate(@arguments) if @arguments),
  }
end