Class: LLM::File

Inherits:
Object
  • Object
show all
Defined in:
lib/llm/file.rb

Overview

The LLM::File class represents a local file. It can be used as a prompt with certain providers (eg: Ollama, Gemini), and as an input with certain methods

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ File

Returns a new instance of File.



13
14
15
# File 'lib/llm/file.rb', line 13

def initialize(path)
  @path = path
end

Instance Attribute Details

#pathString (readonly)

Returns the path to the file

Returns:

  • (String)

    Returns the path to the file



11
12
13
# File 'lib/llm/file.rb', line 11

def path
  @path
end

Instance Method Details

#with_ioFile

Returns Yields an IO object suitable to be streamed.

Returns:

  • (File)

    Yields an IO object suitable to be streamed



62
63
64
65
66
67
# File 'lib/llm/file.rb', line 62

def with_io
  io = File.open(path, "rb")
  yield(io)
ensure
  io.close
end

#basenameString

Returns basename of the file

Returns:

  • (String)

    Returns basename of the file



20
21
22
# File 'lib/llm/file.rb', line 20

def basename
  File.basename(path)
end

#mime_typeString

Returns the MIME type of the file

Returns:

  • (String)

    Returns the MIME type of the file



27
28
29
# File 'lib/llm/file.rb', line 27

def mime_type
  LLM::Mime[File.extname(path)]
end

#image?String

Returns true if the file is an image

Returns:

  • (String)

    Returns true if the file is an image



34
35
36
# File 'lib/llm/file.rb', line 34

def image?
  mime_type.start_with?("image/")
end

#bytesizeInteger

Returns the size of the file in bytes

Returns:

  • (Integer)

    Returns the size of the file in bytes



41
42
43
# File 'lib/llm/file.rb', line 41

def bytesize
  File.size(path)
end

#to_b64String

Returns the file contents in base64

Returns:

  • (String)

    Returns the file contents in base64



48
49
50
# File 'lib/llm/file.rb', line 48

def to_b64
  [File.binread(path)].pack("m0")
end

#to_data_uriString

Returns the file contents in base64 URL format

Returns:

  • (String)

    Returns the file contents in base64 URL format



55
56
57
# File 'lib/llm/file.rb', line 55

def to_data_uri
  "data:#{mime_type};base64,#{to_b64}"
end