Class: LLM::OpenAI::Files
- Inherits:
-
Object
- Object
- LLM::OpenAI::Files
- Defined in:
- lib/llm/providers/openai/files.rb
Overview
The LLM::OpenAI::Files class provides a files object for interacting with OpenAI’s Files API. The files API allows a client to upload files for use with OpenAI’s models and API endpoints. OpenAI supports multiple file formats, including text files, CSV files, JSON files, and more.
Instance Method Summary collapse
-
#initialize(provider) ⇒ LLM::OpenAI::Files
constructor
Returns a new Files object.
-
#all(**params) ⇒ LLM::Response
List all files.
-
#create(file:, purpose: "assistants", **params) ⇒ LLM::Response
Create a file.
-
#get(file:, **params) ⇒ LLM::Response
Get a file.
-
#download(file:, **params) ⇒ LLM::Response
Download the content of a file.
-
#delete(file:) ⇒ LLM::Response
Delete a file.
Constructor Details
#initialize(provider) ⇒ LLM::OpenAI::Files
Returns a new Files object
27 28 29 |
# File 'lib/llm/providers/openai/files.rb', line 27 def initialize(provider) @provider = provider end |
Instance Method Details
#all(**params) ⇒ LLM::Response
List all files
43 44 45 46 47 48 |
# File 'lib/llm/providers/openai/files.rb', line 43 def all(**params) query = URI.encode_www_form(params) req = Net::HTTP::Get.new("/v1/files?#{query}", headers) res = execute(request: req) LLM::Response.new(res) end |
#create(file:, purpose: "assistants", **params) ⇒ LLM::Response
Create a file
61 62 63 64 65 66 67 68 |
# File 'lib/llm/providers/openai/files.rb', line 61 def create(file:, purpose: "assistants", **params) multi = LLM::Multipart.new(params.merge!(file: LLM.File(file), purpose:)) req = Net::HTTP::Post.new("/v1/files", headers) req["content-type"] = multi.content_type set_body_stream(req, multi.body) res = execute(request: req) LLM::Response.new(res).extend(LLM::OpenAI::Response::File) end |
#get(file:, **params) ⇒ LLM::Response
Get a file
81 82 83 84 85 86 87 |
# File 'lib/llm/providers/openai/files.rb', line 81 def get(file:, **params) file_id = file.respond_to?(:id) ? file.id : file query = URI.encode_www_form(params) req = Net::HTTP::Get.new("/v1/files/#{file_id}?#{query}", headers) res = execute(request: req) LLM::Response.new(res).extend(LLM::OpenAI::Response::File) end |
#download(file:, **params) ⇒ LLM::Response
Download the content of a file
101 102 103 104 105 106 107 108 |
# File 'lib/llm/providers/openai/files.rb', line 101 def download(file:, **params) query = URI.encode_www_form(params) file_id = file.respond_to?(:id) ? file.id : file req = Net::HTTP::Get.new("/v1/files/#{file_id}/content?#{query}", headers) io = StringIO.new("".b) res = execute(request: req) { |res| res.read_body { |chunk| io << chunk } } LLM::Response.new(res).tap { _1.define_singleton_method(:file) { io } } end |
#delete(file:) ⇒ LLM::Response
Delete a file
120 121 122 123 124 125 |
# File 'lib/llm/providers/openai/files.rb', line 120 def delete(file:) file_id = file.respond_to?(:id) ? file.id : file req = Net::HTTP::Delete.new("/v1/files/#{file_id}", headers) res = execute(request: req) LLM::Response.new(res) end |