Commit 91f7747

mo khan <mo@mokhan.ca>
2025-08-28 17:10:57
fix: parse the tool_call
1 parent dcb7bd6
Changed files (1)
lib
elelem
lib/elelem/tools.rb
@@ -12,8 +12,7 @@ module Elelem
     end
 
     def execute(tool_call)
-      name = tool_call.dig("function", "name")
-      args = tool_call.dig("function", "arguments")
+      name, args = parse(tool_call)
 
       tool = tools.find { |tool| tool.name == name }
       return "Invalid function name: #{name}" if tool.nil?
@@ -31,5 +30,12 @@ module Elelem
     private
 
     attr_reader :configuration, :tools
+
+    def parse(tool_call)
+      name = tool_call.dig("function", "name")
+      arguments = tool_call.dig("function", "arguments")
+
+      [name, arguments.is_a?(String) ? JSON.parse(arguments) : arguments]
+    end
   end
 end