@@ -204,6 +204,31 @@ def detokenize(self, tokens: List[int]) -> bytes:
204
204
output [1 :] if len (tokens ) > 0 and tokens [0 ] == self .token_bos () else output
205
205
)
206
206
207
+ # Extra
208
+ def metadata (self ) -> Dict [str , str ]:
209
+ assert self .model is not None
210
+ metadata : Dict [str , str ] = {}
211
+ buffer_size = 1024
212
+ buffer = ctypes .create_string_buffer (buffer_size )
213
+ # zero the buffer
214
+ buffer .value = b'\0 ' * buffer_size
215
+ # iterate over model keys
216
+ for i in range (llama_cpp .llama_model_meta_count (self .model )):
217
+ nbytes = llama_cpp .llama_model_meta_key_by_index (self .model , i , buffer , buffer_size )
218
+ if nbytes > buffer_size :
219
+ buffer_size = nbytes
220
+ buffer = ctypes .create_string_buffer (buffer_size )
221
+ nbytes = llama_cpp .llama_model_meta_key_by_index (self .model , i , buffer , buffer_size )
222
+ key = buffer .value .decode ("utf-8" )
223
+ nbytes = llama_cpp .llama_model_meta_val_str_by_index (self .model , i , buffer , buffer_size )
224
+ if nbytes > buffer_size :
225
+ buffer_size = nbytes
226
+ buffer = ctypes .create_string_buffer (buffer_size )
227
+ nbytes = llama_cpp .llama_model_meta_val_str_by_index (self .model , i , buffer , buffer_size )
228
+ value = buffer .value .decode ("utf-8" )
229
+ metadata [key ] = value
230
+ return metadata
231
+
207
232
@staticmethod
208
233
def default_params ():
209
234
"""Get the default llama_model_params."""
0 commit comments