Class: Rasti::AI::ToolSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/rasti/ai/tool_serializer.rb

Class Method Summary collapse

Class Method Details

.serialize(tool_class) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/rasti/ai/tool_serializer.rb', line 6

def serialize(tool_class)
  serialization = {
    name: serialize_name(tool_class)
  }

  serialization[:description] = normalize_description(tool_class.description) if tool_class.respond_to? :description
  serialization[:inputSchema] = serialize_form(tool_class.form) if tool_class.respond_to? :form

  serialization

rescue => ex
  raise Errors::ToolSerializationError.new(tool_class), cause: ex
end

.serialize_form(form_class) ⇒ Object



24
25
26
# File 'lib/rasti/ai/tool_serializer.rb', line 24

def serialize_form(form_class)
  json_schema_from_model_schema form_class.to_schema
end

.serialize_name(tool_class) ⇒ Object



20
21
22
# File 'lib/rasti/ai/tool_serializer.rb', line 20

def serialize_name(tool_class)
  Inflecto.underscore Inflecto.demodulize(tool_class.name)
end