import { OpenAIClient } from "@langchain/openai"; import { Serializable } from "@langchain/core/load/serializable"; export class OpenAIFiles extends Serializable { constructor(fields) { super(fields); Object.defineProperty(this, "lc_namespace", { enumerable: true, configurable: true, writable: true, value: ["langchain", "experimental"] }); Object.defineProperty(this, "oaiClient", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.oaiClient = fields?.client ?? new OpenAIClient(fields?.clientOptions); } /** * Upload file * Upload a file that can be used across various endpoints. The size of all the files uploaded by one organization can be up to 100 GB. * * @note The size of individual files can be a maximum of 512 MB. See the Assistants Tools guide to learn more about the types of files supported. The Fine-tuning API only supports .jsonl files. * * @link {https://platform.openai.com/docs/api-reference/files/create} * @param {OpenAIClient.FileCreateParams['file']} file * @param {OpenAIClient.FileCreateParams['purpose']} purpose * @param {OpenAIClient.RequestOptions | undefined} options * @returns {Promise} */ async createFile({ file, purpose, options, }) { return this.oaiClient.files.create({ file, purpose }, options); } /** * Delete a file. * * @link {https://platform.openai.com/docs/api-reference/files/delete} * @param {string} fileId * @param {OpenAIClient.RequestOptions | undefined} options * @returns {Promise} */ async deleteFile({ fileId, options, }) { return this.oaiClient.files.del(fileId, options); } /** * List files * Returns a list of files that belong to the user's organization. * * @link {https://platform.openai.com/docs/api-reference/files/list} * @param {OpenAIClient.Files.FileListParams | undefined} query * @param {OpenAIClient.RequestOptions | undefined} options * @returns {Promise} */ async listFiles(props) { return this.oaiClient.files.list(props?.query, props?.options); } /** * Retrieve file * Returns information about a specific file. * * @link {https://platform.openai.com/docs/api-reference/files/retrieve} * @param {string} fileId * @param {OpenAIClient.RequestOptions | undefined} options * @returns {Promise} */ async retrieveFile({ fileId, options, }) { return this.oaiClient.files.retrieve(fileId, options); } /** * Retrieve file content * Returns the contents of the specified file. * * @note You can't retrieve the contents of a file that was uploaded with the "purpose": "assistants" API. * * @link {https://platform.openai.com/docs/api-reference/files/retrieve-contents} * @param {string} fileId * @param {OpenAIClient.RequestOptions | undefined} options * @returns {Promise} */ async retrieveFileContent({ fileId, options, }) { return this.oaiClient.files.retrieveContent(fileId, options); } }