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 a file

Returns:

  • (String)

    Returns the path to a file



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

def path
  @path
end

Instance Method Details

#mime_typeString

Returns the MIME type of the file

Returns:

  • (String)

    Returns the MIME type of the file



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

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



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

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



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

def bytesize
  File.size(path)
end

#to_b64String

Returns the file contents in base64

Returns:

  • (String)

    Returns the file contents in base64



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

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

#with_ioFile

Returns Yields an IO object suitable to be streamed.

Returns:

  • (File)

    Yields an IO object suitable to be streamed



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

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