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::FileList
List all files.
-
#create(file:, purpose: "assistants", **params) ⇒ LLM::Response::File
Create a file.
-
#get(file:, **params) ⇒ LLM::Response::File
Get a file.
-
#download(file:, **params) ⇒ LLM::Response::DownloadFile
Download the content of a file.
-
#delete(file:) ⇒ OpenStruct
Delete a file.
Constructor Details
#initialize(provider) ⇒ LLM::OpenAI::Files
Returns a new Files object
35 36 37 |
# File 'lib/llm/providers/openai/files.rb', line 35 def initialize(provider) @provider = provider end |
Instance Method Details
#all(**params) ⇒ LLM::Response::FileList
List all files
51 52 53 54 55 56 57 58 59 |
# File 'lib/llm/providers/openai/files.rb', line 51 def all(**params) query = URI.encode_www_form(params) req = Net::HTTP::Get.new("/v1/files?#{query}", headers) res = request(http, req) LLM::Response::FileList.new(res).tap { |filelist| files = filelist.body["data"].map { OpenStruct.from_hash(_1) } filelist.files = files } end |
#create(file:, purpose: "assistants", **params) ⇒ LLM::Response::File
Create a file
72 73 74 75 76 77 78 79 |
# File 'lib/llm/providers/openai/files.rb', line 72 def create(file:, purpose: "assistants", **params) multi = LLM::Multipart.new(params.merge!(file:, purpose:)) req = Net::HTTP::Post.new("/v1/files", headers) req["content-type"] = multi.content_type req.body_stream = multi.body res = request(http, req) LLM::Response::File.new(res) end |
#get(file:, **params) ⇒ LLM::Response::File
Get a file
92 93 94 95 96 97 98 |
# File 'lib/llm/providers/openai/files.rb', line 92 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 = request(http, req) LLM::Response::File.new(res) end |
#download(file:, **params) ⇒ LLM::Response::DownloadFile
Download the content of a file
112 113 114 115 116 117 118 119 |
# File 'lib/llm/providers/openai/files.rb', line 112 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 = request(http, req) { |res| res.read_body { |chunk| io << chunk } } LLM::Response::DownloadFile.new(res).tap { _1.file = io } end |
#delete(file:) ⇒ OpenStruct
Delete a file
131 132 133 134 135 136 |
# File 'lib/llm/providers/openai/files.rb', line 131 def delete(file:) file_id = file.respond_to?(:id) ? file.id : file req = Net::HTTP::Delete.new("/v1/files/#{file_id}", headers) res = request(http, req) OpenStruct.from_hash JSON.parse(res.body) end |