Module: Legion::Extensions::Llm::Canonical::ToolSchema
- Defined in:
- lib/legion/extensions/llm/canonical/tool_schema.rb
Overview
Extracts and normalizes tool schemas from heterogeneous sources.
Constant Summary collapse
- EMPTY_OBJECT =
{ type: 'object', properties: {} }.freeze
Class Method Summary collapse
- .extract(tool) ⇒ Object
- .raw_schema(tool) ⇒ Object
- .tool_description(tool) ⇒ Object
- .tool_name(tool) ⇒ Object
Class Method Details
.extract(tool) ⇒ Object
13 14 15 16 |
# File 'lib/legion/extensions/llm/canonical/tool_schema.rb', line 13 def extract(tool) raw = raw_schema(tool) ToolDefinition.normalize_parameters(raw) end |
.raw_schema(tool) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/legion/extensions/llm/canonical/tool_schema.rb', line 18 def raw_schema(tool) return nil if tool.nil? return tool.params_schema if tool.respond_to?(:params_schema) && tool.params_schema return tool.parameters if tool.respond_to?(:parameters) && tool.parameters return unless tool.respond_to?(:[]) tool[:parameters] || tool['parameters'] || tool[:input_schema] || tool['input_schema'] || tool[:params_schema] || tool['params_schema'] end |
.tool_description(tool) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/legion/extensions/llm/canonical/tool_schema.rb', line 36 def tool_description(tool) return tool.description if tool.respond_to?(:description) && !tool.is_a?(Hash) return (tool[:description] || tool['description'] || '').to_s if tool.respond_to?(:[]) '' end |
.tool_name(tool) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/legion/extensions/llm/canonical/tool_schema.rb', line 29 def tool_name(tool) return tool.name if tool.respond_to?(:name) && !tool.is_a?(Hash) return tool[:name] || tool['name'] if tool.respond_to?(:[]) 'unknown' end |