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.
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(llm) ⇒ 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(llm) ⇒ LLM::OpenAI::Files
Returns a new Files object
25 26 27 |
# File 'lib/llm/providers/openai/files.rb', line 25 def initialize(llm) @llm = llm end |
Instance Method Details
#all(**params) ⇒ LLM::Response
List all files
41 42 43 44 45 46 47 48 |
# File 'lib/llm/providers/openai/files.rb', line 41 def all(**params) query = URI.encode_www_form(params) req = LLM::Transport::Request.get(path("/files?#{query}"), headers) res, span, tracer, request_id = execute(request: req, operation: "request") res = ResponseAdapter.adapt(res, type: :enumerable) tracer.on_request_finish(operation: "request", res:, span:, request_id:) res end |
#create(file:, purpose: "assistants", **params) ⇒ LLM::Response
Create a file
61 62 63 64 65 66 67 68 69 70 |
# 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 = LLM::Transport::Request.post(path("/files"), headers) req["content-type"] = multi.content_type transport.set_body_stream(req, multi.body) res, span, tracer, request_id = execute(request: req, operation: "request") res = ResponseAdapter.adapt(res, type: :file) tracer.on_request_finish(operation: "request", res:, span:, request_id:) res end |
#get(file:, **params) ⇒ LLM::Response
Get a file
83 84 85 86 87 88 89 90 91 |
# File 'lib/llm/providers/openai/files.rb', line 83 def get(file:, **params) file_id = file.respond_to?(:id) ? file.id : file query = URI.encode_www_form(params) req = LLM::Transport::Request.get(path("/files/#{file_id}?#{query}"), headers) res, span, tracer, request_id = execute(request: req, operation: "request") res = ResponseAdapter.adapt(res, type: :file) tracer.on_request_finish(operation: "request", res:, span:, request_id:) res end |
#download(file:, **params) ⇒ LLM::Response
Download the content of a file
105 106 107 108 109 110 111 112 113 114 |
# File 'lib/llm/providers/openai/files.rb', line 105 def download(file:, **params) query = URI.encode_www_form(params) file_id = file.respond_to?(:id) ? file.id : file req = LLM::Transport::Request.get(path("/files/#{file_id}/content?#{query}"), headers) io = StringIO.new("".b) res, span, tracer, request_id = execute(request: req, operation: "request") { |res| res.read_body { |chunk| io << chunk } } res = LLM::Response.new(res).tap { _1.define_singleton_method(:file) { io } } tracer.on_request_finish(operation: "request", res:, span:, request_id:) res end |
#delete(file:) ⇒ LLM::Response
Delete a file
126 127 128 129 130 131 132 133 |
# File 'lib/llm/providers/openai/files.rb', line 126 def delete(file:) file_id = file.respond_to?(:id) ? file.id : file req = LLM::Transport::Request.delete(path("/files/#{file_id}"), headers) res, span, tracer, request_id = execute(request: req, operation: "request") res = LLM::Response.new(res) tracer.on_request_finish(operation: "request", res:, span:, request_id:) res end |