File Upload/Download (to support Batches)#764
Draft
toddkummer wants to merge 2 commits intocrmne:mainfrom
Draft
Conversation
Includes top-level upload/download helpers, File metadata handling, OpenAI file API integration, download support in Connection, and specs/VCR coverage for upload, metadata lookup, and file content download workflows. The main class is named ProviderFile to avoid conflicts with File.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
This adds the ability to upload and download files, with only the OpenAI provider supported. This feature is a building block for the Batches API, which requires files to be uploaded and downloaded (for OpenAI Batches).
The logic could be simplified a bit and contained within the Batches functionality, but given that it is a provider supported endpoint it seemed to make sense to support it.
OpenAI Files API Documenation
Uploading Files
This adds a convenience method to the RubyLLM module to upload files:
This delegates to the new ProviderFile class. (That name was chosen to avoid conflicts with File.) The ProviderFile class follows the convention of having a class method to invoke the logic and being the model instantiated to handle the response.
The ProviderFile#file_info method also returns an instance of the ProviderFile class. That method is not exposed through the RubyLLM module. (It just didn't feel important enough.)
Downloading Files
The RubyLLM module also includes a convenience method to download files:
There are a number of ways to download a file.
Type of change
Scope check
Required for new features
PRs for new features or enhancements without a prior approved issue will be closed.
Quality check
overcommit --installand all hooks passbundle exec rake vcr:record[provider_name]bundle exec rspecmodels.json,aliases.json)AI-generated code
API changes