From d3ff0615a1887f5ddb35af257413e3e4446a0fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Spilka?= Date: Tue, 2 Jul 2024 11:20:18 +0200 Subject: [PATCH] Improve error messages and documentation (#6) * Improve error messages and documentations * Fix issue with pagination when listing files in the OpenAI Assistant --- .actor/input_schema.json | 26 +- CHANGELOG.md | 8 +- README.md | 50 +- poetry.lock | 6 +- src/input_model.py | 32 +- src/main.py | 102 +- src/utils.py | 4 +- .../test_create_files_from_dataset.yaml | 87 +- ...est_create_files_from_key_value_store.yaml | 87 +- .../test_openai_files_integration.yaml | 100 +- tests/cassettes/test_vector_store_delete.yaml | 686 +++++++ .../test_vector_store_get_by_id.yaml | 765 ++++++++ .../test_vector_store_get_by_prefix.yaml | 1438 ++++++++++++++ .../test_vector_store_integration.yaml | 1667 ----------------- tests/conftest.py | 16 +- tests/test_files.py | 2 +- tests/test_utils.py | 5 +- tests/test_vector_store.py | 65 +- 18 files changed, 3228 insertions(+), 1918 deletions(-) create mode 100644 tests/cassettes/test_vector_store_delete.yaml create mode 100644 tests/cassettes/test_vector_store_get_by_id.yaml create mode 100644 tests/cassettes/test_vector_store_get_by_prefix.yaml delete mode 100644 tests/cassettes/test_vector_store_integration.yaml diff --git a/.actor/input_schema.json b/.actor/input_schema.json index 8ca5714..a5a58d3 100644 --- a/.actor/input_schema.json +++ b/.actor/input_schema.json @@ -31,42 +31,42 @@ "prefill": ["url", "text", "metadata.title"], "editor": "json" }, - "fileIdsToDelete": { - "title": "Array of vector store file ids to delete", - "type": "array", - "description": "Delete specified file ids associated with vector store. This can be useful when one needs to delete files that are no longer needed.", - "editor": "json" - }, "filePrefix": { "title": "Delete/Create vector store files with a prefix", "type": "string", - "description": "Using a file prefix streamlines the management of vector store file updates by eliminating the need to track each file's ID. For instance, if you set the filePrefix to 'apify-advisor', the Actor will initially locate all files in the vector store with this prefix. Subsequently, it will delete these files and create new ones, also prefixed accordingly.", + "description": "Using a file prefix helps with the management of vector store file updates by eliminating the need to track each file's ID. For instance, if you set the filePrefix to 'apify-advisor', the Actor will initially locate all files in the vector store with this prefix. Subsequently, it will delete these files and create new ones, also prefixed accordingly.", "editor": "textfield", "minLength": 5 }, + "fileIdsToDelete": { + "title": "Array of vector store file ids to delete", + "type": "array", + "description": "Delete specified file ids associated with vector store. This can be useful when one needs to delete files that are no longer needed.", + "editor": "json" + }, "saveCrawledFiles": { "title": "Save crawled files (docs, pdf, pptx) to OpenAI File Store", "type": "boolean", - "description": "Enables saving files from Apify's key-value store to OpenAI's file store. Useful when utilizing Apify’s website content crawler with the 'saveFiles' option, allowing the found files to be directly store and used in the assistant.", + "description": "Save files from Apify's key-value store to OpenAI's file store. Useful when utilizing Apify’s website content crawler with the 'saveFiles' option, allowing the found files to be directly store and used in the assistant.", "default": true }, "datasetId": { - "title": "Dataset ID", + "title": "Apify's Dataset ID", "type": "string", "description": "The Dataset ID is provided automatically when the actor is set up as an integration. You can fill it in explicitly here to enable debugging of the actor", "editor": "textfield", "sectionCaption": "Debugging options" }, "keyValueStoreId": { - "title": "Key-value store ID", + "title": "Apify's Key-value store ID (source for json, pdf, pptx files) ", "type": "string", - "description": "Apify's key value store ID is provided automatically when the actor is set up as an integration. You can fill it in explicitly here to enable debugging of the actor", + "description": "This is the ID for the Key-value store on Apify, which serves as the data source for json, pdf, and pptx files. This ID is automatically provided when the actor is integrated. However, you can manually enter the ID here for debugging purposes.", "editor": "textfield" }, "saveInApifyKeyValueStore": { - "title": "Save all files in the Apify key-value store", + "title": "Save all created files in the Apify's key-value store", "type": "boolean", - "description": "Save all created files in the Apify Key-Value Store to easily check and retrieve all files (this is typically used when debugging)", + "description": "Save all created files in the Apify's Key-Value Store to easily check and retrieve all files (this is typically used when debugging)", "default": false } }, diff --git a/CHANGELOG.md b/CHANGELOG.md index b07e5b8..a06b3fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,13 @@ # Change Log -## 0.2 (2024-05-09) +## 0.2.1 (2024-07-02) + +- Fix issue with pagination when listing files in the OpenAI Assistant. + +## 0.2.0 (2024-05-09) - Added support to upload files to the OpenAI Assistant. The files are retrieved from the Apify's key-value store. -## 0.1 (2024-04-19) +## 0.1.0 (2024-04-19) - Initial release of OpenAI vector store integration diff --git a/README.md b/README.md index 72b7df3..7503bb5 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Additional costs are associated with the use of OpenAI Assistant. Please refer t To utilize this integration, ensure you have: -- An OpenAI account and an `OpenAI API token`. Create a free account at [OpenAI](https://beta.openai.com/). +- An OpenAI account and an `OpenAI API KEY`. Create a free account at [OpenAI](https://beta.openai.com/). - Created an [OpenAI Vector Store](https://platform.openai.com/docs/assistants/tools/file-search/vector-stores). You will need `vectorStoreId` to run this integration. - Created an [OpenAI Assistant](https://platform.openai.com/docs/assistants/overview). @@ -45,8 +45,8 @@ Refer to [input schema](.actor/input_schema.json) for details. size limit of 5,000,000 tokens (as of 2024-04-23). When necessary, the model associated with the assistant is utilized to count tokens and split the large file into smaller, manageable segments. - `datasetFields` - Array of datasetFields you want to save, e.g., `["url", "text", "metadata.title"]`. -- `fileIdsToDelete` - Delete specified file IDs from vector store as needed. - `filePrefix` - Delete and create files using a filePrefix, streamlining vector store updates. +- `fileIdsToDelete` - Delete specified file IDs from vector store as needed. - `datasetId`: _[Debug]_ Dataset ID (when running Actor as standalone without integration). - `keyValueStoreId`: _[Debug]_ Key Value Store ID (when running Actor as standalone without integration). - `saveInApifyKeyValueStore`: _[Debug]_ Save all created files in the Apify Key-Value Store to easily check and retrieve all files (this is typically used when debugging) @@ -66,13 +66,53 @@ Our Actors can automatically ingest entire websites, such as customer documentat forums, blog posts, and other information sources to train or prompt your LLMs. Integrate Apify into your product and allow your customers to upload their content in minutes. -## Example usage +## Save data from Website Content Crawler to OpenAI Vector Store + +To use this integration, you need an OpenAI account and an `OpenAI API KEY`. +Additionally, you need to create an OpenAI Vector Store (vectorStoreId). + +The Website Content Crawler can deeply crawl websites and save web page content to Apify's dataset. +It also stores files such as PDFs, PPTXs, and DOCXs. +A typical run crawling `https://platform.openai.com/docs/assistants/overview` includes the following dataset fields (truncated for brevity): + +```json +[ + { + "url": "https://platform.openai.com/docs/assistants/overview", + "text": "Assistants overview - OpenAI API\nThe Assistants API allows you to build AI assistants within your own applications ..." + }, + { + "url": "https://platform.openai.com/docs/assistants/overview/step-1-create-an-assistant", + "text": "Assistants overview - OpenAI API\n An Assistant has instructions and can leverage models, tools, and files to respond to user queries ..." + } +] +``` +Once you have the dataset, you can store the data in the OpenAI Vector Store. +Specify which fields you want to save to the OpenAI Vector Store, e.g., `["text", "url"]`. + +```json +{ + "assistantId": "YOUR-ASSISTANT-ID", + "datasetFields": ["text", "url"], + "openaiApiKey": "YOUR-OPENAI-API-KEY", + "vectorStoreId": "YOUR-VECTOR-STORE-ID" +} +``` + +### Update existing files in the OpenAI Vector Store + +There are two ways to update existing files in the OpenAI Vector Store. +You can either delete all files with a specific prefix or delete specific files by their IDs. +It is more convenient to use the `filePrefix` parameter to delete and create files with the same prefix. +In the first run, the integration will save all the files with the prefix `openai_assistant_`. +In the next run, it will delete all the files with the prefix `openai_assistant_` and create new files. +The settings for the integration are as follows: ```json { "assistantId": "YOUR-ASSISTANT-ID", - "datasetFields": ["text", "url", "metadata.title"], - "filePrefix": "apify_test_", + "datasetFields": ["text", "url"], + "filePrefix": "openai_assistant_", "openaiApiKey": "YOUR-OPENAI-API-KEY", "vectorStoreId": "YOUR-VECTOR-STORE-ID" } diff --git a/poetry.lock b/poetry.lock index 28fd102..951a4f8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1090,13 +1090,13 @@ files = [ [[package]] name = "openai" -version = "1.34.0" +version = "1.35.7" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.34.0-py3-none-any.whl", hash = "sha256:018623c2f795424044675c6230fa3bfbf98d9e0aab45d8fd116f2efb2cfb6b7e"}, - {file = "openai-1.34.0.tar.gz", hash = "sha256:95c8e2da4acd6958e626186957d656597613587195abd0fb2527566a93e76770"}, + {file = "openai-1.35.7-py3-none-any.whl", hash = "sha256:3d1e0b0aac9b0db69a972d36dc7efa7563f8e8d65550b27a48f2a0c2ec207e80"}, + {file = "openai-1.35.7.tar.gz", hash = "sha256:009bfa1504c9c7ef64d87be55936d142325656bbc6d98c68b669d6472e4beb09"}, ] [package.dependencies] diff --git a/src/input_model.py b/src/input_model.py index 59906ad..a42d640 100644 --- a/src/input_model.py +++ b/src/input_model.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: input_schema.json -# timestamp: 2024-05-27T07:28:58+00:00 +# timestamp: 2024-07-01T09:35:47+00:00 from __future__ import annotations @@ -15,7 +15,7 @@ class OpenaiVectorStoreIntegration(BaseModel): description='Vector Store ID where the data will be stored', title='Vector Store ID', ) - openaiApiKey: str = Field(..., title='OpenAI API KEY') + openaiApiKey: str = Field(..., description='OpenAI API KEY', title='OpenAI API KEY') assistantId: Optional[str] = Field( None, description='The ID of an OpenAI Assistant. This parameter is required only when a file exceeds the OpenAI size limit of 5,000,000 tokens (as of 2024-04-23).\n\n When necessary, the model associated with the assistant is utilized to count tokens and split the large file into smaller, manageable segments.', @@ -26,34 +26,34 @@ class OpenaiVectorStoreIntegration(BaseModel): description='A list of dataset fields which should be selected from the items, only these dataset fields will remain in the resulting record objects.\n\n For example, when using the website content crawler, you might select dataset fields such as `text` and `url`, and `metadata.title` among others, to be included in the vector store file.', title='A list of dataset fields which should be selected from the dataset', ) - fileIdsToDelete: Optional[List] = Field( - None, - description='Delete specified file ids associated with vector store. This can be useful when one needs to delete files that are no longer needed.', - title='Array of vector store file ids to delete', - ) filePrefix: Optional[str] = Field( None, - description="Using a file prefix streamlines the management of vector store file updates by eliminating the need to track each file's ID. For instance, if you set the filePrefix to 'apify-advisor', the Actor will initially locate all files in the vector store with this prefix. Subsequently, it will delete these files and create new ones, also prefixed accordingly.", + description="Using a file prefix helps with the management of vector store file updates by eliminating the need to track each file's ID. For instance, if you set the filePrefix to 'apify-advisor', the Actor will initially locate all files in the vector store with this prefix. Subsequently, it will delete these files and create new ones, also prefixed accordingly.", min_length=5, title='Delete/Create vector store files with a prefix', ) - saveFiles: Optional[bool] = Field( + fileIdsToDelete: Optional[List] = Field( + None, + description='Delete specified file ids associated with vector store. This can be useful when one needs to delete files that are no longer needed.', + title='Array of vector store file ids to delete', + ) + saveCrawledFiles: Optional[bool] = Field( True, - description="Enables saving files from Apify's key-value store to OpenAI's file store. Useful when utilizing Apify’s website content crawler with the 'saveFiles' option, allowing the found files to be directly store and used in the assistant.", - title='Save files from apify key-value store to OpenAI File Store', + description="Save files from Apify's key-value store to OpenAI's file store. Useful when utilizing Apify’s website content crawler with the 'saveFiles' option, allowing the found files to be directly store and used in the assistant.", + title='Save crawled files (docs, pdf, pptx) to OpenAI File Store', ) datasetId: Optional[str] = Field( None, description='The Dataset ID is provided automatically when the actor is set up as an integration. You can fill it in explicitly here to enable debugging of the actor', - title='Dataset ID', + title="Apify's Dataset ID", ) keyValueStoreId: Optional[str] = Field( None, - description="Apify's key value store ID is provided automatically when the actor is set up as an integration. You can fill it in explicitly here to enable debugging of the actor", - title='Key-value store ID', + description='This is the ID for the Key-value store on Apify, which serves as the data source for json, pdf, and pptx files. This ID is automatically provided when the actor is integrated. However, you can manually enter the ID here for debugging purposes.', + title="Apify's Key-value store ID (source for json, pdf, pptx files) ", ) saveInApifyKeyValueStore: Optional[bool] = Field( False, - description='Save all created files in the Apify Key-Value Store to easily check and retrieve all files (this is typically used when debugging)', - title='Save all files in the Apify key-value store', + description="Save all created files in the Apify's Key-Value Store to easily check and retrieve all files (this is typically used when debugging)", + title="Save all created files in the Apify's key-value store", ) diff --git a/src/main.py b/src/main.py index 3c62b2c..14443f7 100644 --- a/src/main.py +++ b/src/main.py @@ -7,7 +7,7 @@ import tiktoken from apify import Actor from apify_client import ApifyClientAsync -from openai import AsyncOpenAI, NotFoundError +from openai import AsyncOpenAI from .constants import OPENAI_SUPPORTED_FILES from .input_model import OpenaiVectorStoreIntegration as ActorInput @@ -22,7 +22,6 @@ async def main() -> None: async with Actor: - payload = await Actor.get_input() actor_input = ActorInput(**payload) @@ -31,9 +30,7 @@ async def main() -> None: assistant = await check_inputs(client, actor_input, payload) - file_ids_to_delete = await get_vector_store_file_ids( - client, actor_input.vectorStoreId, actor_input.fileIdsToDelete, actor_input.filePrefix - ) + file_ids_to_delete = await get_vector_store_file_ids(client, actor_input.vectorStoreId, actor_input.fileIdsToDelete, actor_input.filePrefix) # 1 - create files from dataset or from key-value store files_created: list[str] = [] @@ -41,7 +38,7 @@ async def main() -> None: files: list[FileObject] = await create_files_from_dataset(client, aclient_apify, actor_input, assistant) files_created.extend(f.id for f in files) - if actor_input.saveFiles and actor_input.keyValueStoreId: + if actor_input.saveCrawledFiles and actor_input.keyValueStoreId: files = await create_files_from_key_value_store(client, aclient_apify, actor_input) files_created.extend(f.id for f in files) @@ -62,19 +59,34 @@ async def check_inputs(client: AsyncOpenAI, actor_input: ActorInput, payload: di """Check that provided input exists at OpenAI or at Apify.""" if not (await client.beta.vector_stores.retrieve(actor_input.vectorStoreId)): - await Actor.fail(status_message=f"Vector Store with ID: {actor_input.vectorStoreId} was not found at the OpenAI") + msg = ( + f"Unable to find the Vector Store with the ID: {actor_input.vectorStoreId} on OpenAI. Please verify that the Vector Store has " + f"been correctly created and that the `vectorStoreId` provided is accurate." + ) + Actor.log.error(msg) + await Actor.fail(status_message=msg) assistant = None if actor_input.assistantId and not (assistant := await client.beta.assistants.retrieve(actor_input.assistantId)): - await Actor.fail(status_message=f"Assistant with ID: {actor_input.assistantId} was not found at the OpenAI") + msg = f"Unable to find the Assistant with the ID: {actor_input.assistantId} on OpenAI. " + "Please verify that the Assistant has been correctly created and that the `assistantId` provided is accurate. " + Actor.log.error(msg) + await Actor.fail(status_message=msg) resource = payload.get("payload", {}).get("resource", {}) dataset_id = resource.get("defaultDatasetId") or actor_input.datasetId or "" key_value_store_id = resource.get("defaultKeyValueStoreId") or actor_input.keyValueStoreId or "" if not (dataset_id or key_value_store_id): - msg = """No Dataset ID or Key Value Store ID provided. - It should be provided either in payload or in actor_input.""" + msg = ( + "The `datasetId` or `keyValueStoreId` are not provided. There are two ways to specify the `datasetId` or `keyValueStoreId`:" + "1. Automatic Input: If this integration is used with other Actors, such as the Website Content Crawler, the variables should be " + "automatically passed in the 'payload'. Please check the `Input` payload to ensure that they are included." + "2. Manual Input: If you are running this Actor independently, you can to manually specify the 'datasetId' or `keyValueStoreId. " + "You can do this by entering the values in the 'Debug Settings' section of the Actor's input screen." + "Please verify that one of these options is correctly configured." + ) + Actor.log.error(msg) await Actor.fail(status_message=msg) actor_input.datasetId = dataset_id @@ -117,9 +129,7 @@ async def create_files_from_dataset( return files_created -async def create_files_from_key_value_store( - client: AsyncOpenAI, aclient_apify: ApifyClientAsync, actor_input: ActorInput -) -> list[FileObject]: +async def create_files_from_key_value_store(client: AsyncOpenAI, aclient_apify: ApifyClientAsync, actor_input: ActorInput) -> list[FileObject]: """Create files from Apify key-value store.""" files_created = [] @@ -129,7 +139,6 @@ async def create_files_from_key_value_store( Actor.log.debug("Creating files from Apify key-value store, key value store items: %s", keys.get("items", [])) for item in keys.get("items", []): - key = item.get("key") ext = f".{key.split('.')[-1]}" prefix = f"{actor_input.filePrefix}_{actor_input.keyValueStoreId}" if actor_input.filePrefix else f"{actor_input.keyValueStoreId}" @@ -169,10 +178,10 @@ async def delete_files(client: AsyncOpenAI, files_to_delete: list[str]) -> list[ https://platform.openai.com/docs/api-reference/files/delete """ - files_to_delete = files_to_delete or [] deleted_files = [] + files_to_delete = files_to_delete or [] + Actor.log.debug("About to delete files from OpenAI. Number of files: %s", len(files_to_delete)) - Actor.log.debug("Files ids to delete: %s", files_to_delete) try: for _id in files_to_delete: file_ = await client.files.delete(_id) @@ -185,9 +194,7 @@ async def delete_files(client: AsyncOpenAI, files_to_delete: list[str]) -> list[ return deleted_files -async def create_files_vector_store_and_poll( - client: AsyncOpenAI, vs_id: str, files_created: list[str] -) -> VectorStoreFileBatch | None: +async def create_files_vector_store_and_poll(client: AsyncOpenAI, vs_id: str, files_created: list[str]) -> VectorStoreFileBatch | None: try: v = await client.beta.vector_stores.file_batches.create_and_poll(vector_store_id=vs_id, file_ids=files_created) Actor.log.debug("Created files in vector store: %s", v) @@ -198,13 +205,13 @@ async def create_files_vector_store_and_poll( return None -async def delete_files_from_vector_store( - client: AsyncOpenAI, vs_id: str, file_ids: list[str] -) -> list[VectorStoreFileDeleted]: +async def delete_files_from_vector_store(client: AsyncOpenAI, vs_id: str, file_ids: list[str]) -> list[VectorStoreFileDeleted]: """Remove files from vector store. The files are not actually deleted, only removed.""" - file_ids = file_ids or [] deleted_files = [] + file_ids = file_ids or [] + Actor.log.debug("About to delete files from vector store. Number of files: %s", len(file_ids)) + try: for _id in file_ids: file_ = await client.beta.vector_stores.files.delete(_id, vector_store_id=vs_id) @@ -219,15 +226,15 @@ async def delete_files_from_vector_store( async def get_files_by_prefix(client: AsyncOpenAI, file_prefix: str) -> list[str]: """Get files with a specific prefix from OpenAI's file store.""" - files = await client.files.list() - return [f.id for f in files.data if f.filename.startswith(file_prefix)] + files = [f async for f in client.files.list()] + return [f.id for f in files if f.filename.startswith(file_prefix)] async def get_vector_store_files_by_ids(client: AsyncOpenAI, vs_id: str, file_ids: list[str]) -> list[str]: """Find files in vector store by file ids.""" - vs_files = await client.beta.vector_stores.files.list(vector_store_id=vs_id) - files = [f.id for f in vs_files.data if f.id in file_ids] + vs_files = [f async for f in client.beta.vector_stores.files.list(vector_store_id=vs_id)] + files = [f.id for f in vs_files if f.id in file_ids] if set(file_ids) - set(files): Actor.log.warning( @@ -240,31 +247,26 @@ async def get_vector_store_files_by_ids(client: AsyncOpenAI, vs_id: str, file_id async def get_vector_store_files_by_prefix(client: AsyncOpenAI, vs_id: str, file_prefix: str) -> list[str]: - """Find files in vector store by file prefix.""" + """Find files in vector store by file prefix. - files = [] - vs_files = await client.beta.vector_stores.files.list(vector_store_id=vs_id) - - for f in vs_files.data: - try: - file_ = await client.files.retrieve(f.id) - if file_.filename.startswith(file_prefix): - files.append(f.id) - except NotFoundError: # noqa: PERF203 - Actor.log.warning( - "File %s associated with vector store: %s was not found in the OpenAI Files. This " - "typically means that the file was deleted but is still associated with vector store." - "You need to solve this issue manually if desired.", - f.id, - vs_id, - ) + Get files with prefix from OpenAI's file store, then retrieve the files associated with the vector store and compare them. + """ - return files + files = await get_files_by_prefix(client, file_prefix) + vs_files = [f async for f in client.beta.vector_stores.files.list(vector_store_id=vs_id)] + + file_present = [f.id for f in vs_files if f.id in files] + for f in (f.id for f in vs_files if f.id not in files): + Actor.log.warning( + f"File {f} associated with vector store: {vs_id} was not found in the OpenAI Files. This " + "typically means that the file was deleted but is still associated with vector store." + "You need to solve this issue manually if desired.", + ) + + return file_present -async def get_vector_store_file_ids( - client: AsyncOpenAI, vs_id: str, file_ids: list | None, file_prefix: str | None -) -> list[str]: +async def get_vector_store_file_ids(client: AsyncOpenAI, vs_id: str, file_ids: list | None, file_prefix: str | None) -> list[str]: """Find files in vector store, either using file_ids and/or by file prefix.""" file_ids = file_ids or [] @@ -287,9 +289,7 @@ async def save_in_apify_kv_store(files_created: list[FileObject], data: list[dic """Save files in Apify's KV Store for the debugging purposes.""" if len(files_created) != len(data): - Actor.log.warning( - "Number of files created does not match the number of data. Saving to Apify's KV store skipped" - ) + Actor.log.warning("Number of files created does not match the number of data. Saving to Apify's KV store skipped") return try: diff --git a/src/utils.py b/src/utils.py index 3de20b8..34839d4 100644 --- a/src/utils.py +++ b/src/utils.py @@ -43,8 +43,7 @@ async def split_data_if_required(data: list, encoding: tiktoken.core.Encoding) - return [] if nr_tokens > OPENAI_MAX_TOKENS_PER_FILE: Actor.log.debug( - "Number of tokens in dataset tokens in dataset %s is larger than OpenAI " - "limit %s the data needs to be split into multiple files", + "Number of tokens in dataset tokens in dataset %s is larger than OpenAI limit %s the data needs to be split into multiple files", nr_tokens, OPENAI_MAX_TOKENS_PER_FILE, ) @@ -98,7 +97,6 @@ def split_data_into_batches(data: list, max_tokens: int, encoding: tiktoken.core if __name__ == "__main__": - import apify_client dataset_id = "fLR7roVL7yaMXlBYW" diff --git a/tests/cassettes/test_create_files_from_dataset.yaml b/tests/cassettes/test_create_files_from_dataset.yaml index 23bf203..42767a8 100644 --- a/tests/cassettes/test_create_files_from_dataset.yaml +++ b/tests/cassettes/test_create_files_from_dataset.yaml @@ -1,8 +1,8 @@ interactions: - request: - body: "--4bc501c9fcef5a28c10475ba6a73a14f\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--4bc501c9fcef5a28c10475ba6a73a14f\r\nContent-Disposition: - form-data; name=\"file\"; filename=\"unittest__test_dataset_id_0\"\r\nContent-Type: - application/octet-stream\r\n\r\n[{\"text\": \"test_text\"}]\r\n--4bc501c9fcef5a28c10475ba6a73a14f--\r\n" + body: "--3b0f10d060601cfa0f415ce3a7d46bbb\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--3b0f10d060601cfa0f415ce3a7d46bbb\r\nContent-Disposition: + form-data; name=\"file\"; filename=\"unittest__test_dataset_id_0.json\"\r\nContent-Type: + application/json\r\n\r\n[{\"text\": \"test_text\"}]\r\n--3b0f10d060601cfa0f415ce3a7d46bbb--\r\n" headers: accept: - application/json @@ -11,13 +11,16 @@ interactions: connection: - keep-alive content-length: - - '324' + - '321' content-type: - - multipart/form-data; boundary=4bc501c9fcef5a28c10475ba6a73a14f + - multipart/form-data; boundary=3b0f10d060601cfa0f415ce3a7d46bbb + cookie: + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.26.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -27,7 +30,7 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.26.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: @@ -37,15 +40,15 @@ interactions: response: body: string: !!binary | - H4sIAAAAAAAAA0yOywrCMBBF9/2KkrVCq2i1OzeiUNqtuzBtphKJaexMfCD+uyRFcDNw7zkX5p2k - qRjaC3YsylT02qCYhU6rX54/mqrH8x35hnX+bA71Ue/cqdpPovOjGwiDDUSaGCzThMLawjUybzUz - EksZrwIGQpZayWyS2xcjiTJdLGPsRgRGJSH8lRf5Kt+ui2wTGTGwD65w49AhESrxB6RCBm2CYL0x - ySf5AgAA//8DAIBz/SHmAAAA + H4sIAAAAAAAAA0yOwQrCMBBE7/2KkLNKa0Vt74LgTVDQS9g2K6SmSc1uERH/XZIieFmYeW9g35kQ + 0jcdtixrIW/GopzFzuhfnl+OuXfPIpTra3XY2f3Jn1ePvr9P4jCGwRNGG4gMMTimCcW1gz6x0Rlm + JFYqXQ0MhKyMVvmiI++mRfNiJFmLZZliGxAYtYL4XLEpqirfbqsiMWLgMbpyCL5FItTyDyiNDMZG + wY3WZp/sCwAA//8DANpx95vrAAAA headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 880bdf424bf36e9b-PRG + - 89cd42c9d9a74126-PRG Connection: - keep-alive Content-Encoding: @@ -53,15 +56,9 @@ interactions: Content-Type: - application/json Date: - - Wed, 08 May 2024 19:31:49 GMT + - Tue, 02 Jul 2024 08:28:11 GMT Server: - cloudflare - Set-Cookie: - - __cf_bm=soPospot529n.mrZrhBrVgnjnk8lxg2wuUWL.gID.Ho-1715196709-1.0.1.1-yRwzMGw5Xjn83RgWJcelsG62e5EzpbyGF8eT3LJT0OvhzNGp2fflntpFEKgOFGCx.1Chz7TXqsLU6t5zSawOBA; - path=/; expires=Wed, 08-May-24 20:01:49 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=yvFOcF5UbLe1UOa.ALCywZtIVKHTBj7ujxsEPdg_h5o-1715196709048-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Transfer-Encoding: - chunked access-control-allow-origin: @@ -71,13 +68,13 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '657' + - '303' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_121e835f9a258891e46b33885a2d37eb + - req_7bad60761a8e0f25ed24059e8103a87d status: code: 200 message: OK @@ -93,12 +90,12 @@ interactions: content-type: - application/json cookie: - - __cf_bm=soPospot529n.mrZrhBrVgnjnk8lxg2wuUWL.gID.Ho-1715196709-1.0.1.1-yRwzMGw5Xjn83RgWJcelsG62e5EzpbyGF8eT3LJT0OvhzNGp2fflntpFEKgOFGCx.1Chz7TXqsLU6t5zSawOBA; - _cfuvid=yvFOcF5UbLe1UOa.ALCywZtIVKHTBj7ujxsEPdg_h5o-1715196709048-0.0.1.1-604800000 + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.26.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -108,25 +105,25 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.26.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.12.3 method: GET - uri: https://api.openai.com/v1/files/file-wOLfegvetqeN1xOHNIiApXLF + uri: https://api.openai.com/v1/files/file-YR0onw1r36Z9KElHUoV4qmmk response: body: string: !!binary | - H4sIAAAAAAAAA0yOywrCMBBF9/2KkrVCq2i1OzeiUNqtuzBtphKJaexMfCD+uyRFcDNw7zkX5p2k - qRjaC3YsylT02qCYhU6rX54/mqrH8x35hnX+bA71Ue/cqdpPovOjGwiDDUSaGCzThMLawjUybzUz - EksZrwIGQpZayWyS2xcjiTJdLGPsRgRGJSH8lRf5Kt+ui2wTGTGwD65w49AhESrxB6RCBm2CYL0x - ySf5AgAA//8DAIBz/SHmAAAA + H4sIAAAAAAAAA0yOwQrCMBBE7/2KkLNKa0Vt74LgTVDQS9g2K6SmSc1uERH/XZIieFmYeW9g35kQ + 0jcdtixrIW/GopzFzuhfnl+OuXfPIpTra3XY2f3Jn1ePvr9P4jCGwRNGG4gMMTimCcW1gz6x0Rlm + JFYqXQ0MhKyMVvmiI++mRfNiJFmLZZliGxAYtYL4XLEpqirfbqsiMWLgMbpyCL5FItTyDyiNDMZG + wY3WZp/sCwAA//8DANpx95vrAAAA headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 880bdf479e526e9b-PRG + - 89cd42cd3d8a4126-PRG Connection: - keep-alive Content-Encoding: @@ -134,7 +131,7 @@ interactions: Content-Type: - application/json Date: - - Wed, 08 May 2024 19:31:49 GMT + - Tue, 02 Jul 2024 08:28:11 GMT Server: - cloudflare Transfer-Encoding: @@ -146,13 +143,13 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '59' + - '80' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_945dc7c3f4058aa9c53770ad1f061ca8 + - req_0e56e7958555335aa8224dc26c9cc06f status: code: 200 message: OK @@ -168,12 +165,12 @@ interactions: content-type: - application/json cookie: - - __cf_bm=soPospot529n.mrZrhBrVgnjnk8lxg2wuUWL.gID.Ho-1715196709-1.0.1.1-yRwzMGw5Xjn83RgWJcelsG62e5EzpbyGF8eT3LJT0OvhzNGp2fflntpFEKgOFGCx.1Chz7TXqsLU6t5zSawOBA; - _cfuvid=yvFOcF5UbLe1UOa.ALCywZtIVKHTBj7ujxsEPdg_h5o-1715196709048-0.0.1.1-604800000 + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.26.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -183,23 +180,23 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.26.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.12.3 method: DELETE - uri: https://api.openai.com/v1/files/file-wOLfegvetqeN1xOHNIiApXLF + uri: https://api.openai.com/v1/files/file-YR0onw1r36Z9KElHUoV4qmmk response: body: string: !!binary | - H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUErLzElV0gGJpaTmpJakpihZKZQUlaaChTJTYEp0y/19 - 0lLTy1JLClP9DCv8Pfw8Mx0LInzclLhquQAAAAD//wMArrlXBlMAAAA= + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUErLzElV0gGJpaTmpJakpihZKZQUlaaChTJTYEp0I4MM + 8vPKDYuMzaIsvV1zPELzw0wKc3OzlbhquQAAAAD//wMA2q8l8VMAAAA= headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 880bdf4939696e9b-PRG + - 89cd42cedf984126-PRG Connection: - keep-alive Content-Encoding: @@ -207,7 +204,7 @@ interactions: Content-Type: - application/json Date: - - Wed, 08 May 2024 19:31:49 GMT + - Tue, 02 Jul 2024 08:28:12 GMT Server: - cloudflare Transfer-Encoding: @@ -219,13 +216,13 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '189' + - '99' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_4ac68a9ed57d00c1b1e09b9c48b1faaa + - req_0a1a7d9672b79e6b197eb6b3eea6018e status: code: 200 message: OK diff --git a/tests/cassettes/test_create_files_from_key_value_store.yaml b/tests/cassettes/test_create_files_from_key_value_store.yaml index a0e0e41..a8500a7 100644 --- a/tests/cassettes/test_create_files_from_key_value_store.yaml +++ b/tests/cassettes/test_create_files_from_key_value_store.yaml @@ -1,8 +1,8 @@ interactions: - request: - body: "--a0468ed4bf0770c5e3f3f7bc34e564e9\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--a0468ed4bf0770c5e3f3f7bc34e564e9\r\nContent-Disposition: - form-data; name=\"file\"; filename=\"unittest__jeGeD1RGQfUMtdAh3_test_file.pdf\"\r\nContent-Type: - application/pdf\r\n\r\ntest_pdf_value\r\n--a0468ed4bf0770c5e3f3f7bc34e564e9--\r\n" + body: "--c9094f8f7cb9430404b5ea70c73012a3\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--c9094f8f7cb9430404b5ea70c73012a3\r\nContent-Disposition: + form-data; name=\"file\"; filename=\"unittest__None_test_file.pdf\"\r\nContent-Type: + application/pdf\r\n\r\ntest_pdf_value\r\n--c9094f8f7cb9430404b5ea70c73012a3--\r\n" headers: accept: - application/json @@ -11,13 +11,16 @@ interactions: connection: - keep-alive content-length: - - '320' + - '307' content-type: - - multipart/form-data; boundary=a0468ed4bf0770c5e3f3f7bc34e564e9 + - multipart/form-data; boundary=c9094f8f7cb9430404b5ea70c73012a3 + cookie: + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.26.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -27,7 +30,7 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.26.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: @@ -37,15 +40,15 @@ interactions: response: body: string: !!binary | - H4sIAAAAAAAAA0yOywrCMBRE9/2KkrUKqS2l7hShBR+gKLgLaXODKbUtuTc+EP9d0iK4nDlnYN5B - GLKurKEitgiZNg2wie+M+uXpqdCdvbtiEyeXZxrJMuGr7cPuR7F3tu8QvC0RDZJsCUfk1628Dcy1 - hgiQhKghhzU/5gd93pFaXudi6L0865Uep+WLANki5PEQKwuSQAnpX/KUJzyLsygbGJIk513W264C - RFDsDwgFJE3jhdY1TfAJvgAAAP//AwDycqFj9AAAAA== + H4sIAAAAAAAAA0yOwQrCMBBE7/2KkLOKxYJtjyJ4kR4E0VvYNltMrUnobqBF/HdJi+BtZ94b2Hci + hHR1hw3LUsjW9ChXsTP6l9fZuDvT8TB2UDX3y7MI12x6nG6wiD4M3hFGG4gMMVimBcW1hdfMgjXM + SKxU5Syq+Yx843W72PXESLIUaTbHZkBg1AriY+k+LYptnufFzIiBQ3SlH1yDRKjlH1AaGUwfBRv6 + PvkkXwAAAP//AwBqpHU55wAAAA== headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 880bb3d55e5eb354-PRG + - 89cd42bd5eacb357-PRG Connection: - keep-alive Content-Encoding: @@ -53,15 +56,9 @@ interactions: Content-Type: - application/json Date: - - Wed, 08 May 2024 19:02:10 GMT + - Tue, 02 Jul 2024 08:28:09 GMT Server: - cloudflare - Set-Cookie: - - __cf_bm=OBpl6yfhFw0fF52egUyAaQI.8BhXXNqMb5O5G0r6tSY-1715194930-1.0.1.1-FAFAgAH_OUZVDkLIL3LME2GPBokJyYZ9bRw..5nxsWE.rBZQ3rXMr3S1Pj3lRdr1PIxRW6DrFpYDGlVgXRAHRw; - path=/; expires=Wed, 08-May-24 19:32:10 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=3DYrKUVQqrAG5pMzTWuw.61bwFAZ_Q25gJWZOSvsmBY-1715194930154-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Transfer-Encoding: - chunked access-control-allow-origin: @@ -71,13 +68,13 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '491' + - '227' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_f7c5505f329601f82ef3d2e4ce3feb1a + - req_0a69ee449794019efe14cbf63b225a8d status: code: 200 message: OK @@ -93,12 +90,12 @@ interactions: content-type: - application/json cookie: - - __cf_bm=OBpl6yfhFw0fF52egUyAaQI.8BhXXNqMb5O5G0r6tSY-1715194930-1.0.1.1-FAFAgAH_OUZVDkLIL3LME2GPBokJyYZ9bRw..5nxsWE.rBZQ3rXMr3S1Pj3lRdr1PIxRW6DrFpYDGlVgXRAHRw; - _cfuvid=3DYrKUVQqrAG5pMzTWuw.61bwFAZ_Q25gJWZOSvsmBY-1715194930154-0.0.1.1-604800000 + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.26.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -108,25 +105,25 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.26.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.12.3 method: GET - uri: https://api.openai.com/v1/files/file-THforvuHK45Xx72ab51BLwrN + uri: https://api.openai.com/v1/files/file-4x3LsDBxjaNcXRk9uU4yhGWa response: body: string: !!binary | - H4sIAAAAAAAAA0yOywrCMBRE9/2KkrUKqS2l7hShBR+gKLgLaXODKbUtuTc+EP9d0iK4nDlnYN5B - GLKurKEitgiZNg2wie+M+uXpqdCdvbtiEyeXZxrJMuGr7cPuR7F3tu8QvC0RDZJsCUfk1628Dcy1 - hgiQhKghhzU/5gd93pFaXudi6L0865Uep+WLANki5PEQKwuSQAnpX/KUJzyLsygbGJIk513W264C - RFDsDwgFJE3jhdY1TfAJvgAAAP//AwDycqFj9AAAAA== + H4sIAAAAAAAAA0yOwQrCMBBE7/2KkLOKxYJtjyJ4kR4E0VvYNltMrUnobqBF/HdJi+BtZ94b2Hci + hHR1hw3LUsjW9ChXsTP6l9fZuDvT8TB2UDX3y7MI12x6nG6wiD4M3hFGG4gMMVimBcW1hdfMgjXM + SKxU5Syq+Yx843W72PXESLIUaTbHZkBg1AriY+k+LYptnufFzIiBQ3SlH1yDRKjlH1AaGUwfBRv6 + PvkkXwAAAP//AwBqpHU55wAAAA== headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 880bb3d98dc7b354-PRG + - 89cd42c06c24b357-PRG Connection: - keep-alive Content-Encoding: @@ -134,7 +131,7 @@ interactions: Content-Type: - application/json Date: - - Wed, 08 May 2024 19:02:10 GMT + - Tue, 02 Jul 2024 08:28:09 GMT Server: - cloudflare Transfer-Encoding: @@ -146,13 +143,13 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '144' + - '59' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_f29dc8d9302e22078944b64d3983d096 + - req_7af21abd67e517e4f0f2e15fdd57107b status: code: 200 message: OK @@ -168,12 +165,12 @@ interactions: content-type: - application/json cookie: - - __cf_bm=OBpl6yfhFw0fF52egUyAaQI.8BhXXNqMb5O5G0r6tSY-1715194930-1.0.1.1-FAFAgAH_OUZVDkLIL3LME2GPBokJyYZ9bRw..5nxsWE.rBZQ3rXMr3S1Pj3lRdr1PIxRW6DrFpYDGlVgXRAHRw; - _cfuvid=3DYrKUVQqrAG5pMzTWuw.61bwFAZ_Q25gJWZOSvsmBY-1715194930154-0.0.1.1-604800000 + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.26.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -183,23 +180,23 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.26.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.12.3 method: DELETE - uri: https://api.openai.com/v1/files/file-THforvuHK45Xx72ab51BLwrN + uri: https://api.openai.com/v1/files/file-4x3LsDBxjaNcXRk9uU4yhGWa response: body: string: !!binary | - H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUErLzElV0gGJpaTmpJakpihZKZQUlaaChTJTYEp0QzzS - 8ovKSj28TUwjKsyNEpNMDZ18yov8lLhquQAAAAD//wMAVQh4PlMAAAA= + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUErLzElV0gGJpaTmpJakpihZKZQUlaaChTJTYEp0TSqM + fYpdnCqyEv2SI4KyLUtDTSoz3MMTlbhquQAAAAD//wMAL9Mm7lMAAAA= headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 880bb3db78ddb354-PRG + - 89cd42c1fedcb357-PRG Connection: - keep-alive Content-Encoding: @@ -207,7 +204,7 @@ interactions: Content-Type: - application/json Date: - - Wed, 08 May 2024 19:02:10 GMT + - Tue, 02 Jul 2024 08:28:10 GMT Server: - cloudflare Transfer-Encoding: @@ -219,13 +216,13 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '269' + - '135' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_1ad5af22f344682e8aae0cd83104a540 + - req_af3a274cc19e645dcda08ff8bbe5e845 status: code: 200 message: OK diff --git a/tests/cassettes/test_openai_files_integration.yaml b/tests/cassettes/test_openai_files_integration.yaml index e140da4..5ecea51 100644 --- a/tests/cassettes/test_openai_files_integration.yaml +++ b/tests/cassettes/test_openai_files_integration.yaml @@ -1,8 +1,8 @@ interactions: - request: - body: "--0de4664b25ba02be0361dc50a3f66b20\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--0de4664b25ba02be0361dc50a3f66b20\r\nContent-Disposition: + body: "--e61a4118204f69006bcb07edcb3e6176\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--e61a4118204f69006bcb07edcb3e6176\r\nContent-Disposition: form-data; name=\"file\"; filename=\"unittest_file.txt\"\r\nContent-Type: text/plain\r\n\r\nHello, - OpenAI!\r\n--0de4664b25ba02be0361dc50a3f66b20--\r\n" + OpenAI!\r\n--e61a4118204f69006bcb07edcb3e6176--\r\n" headers: accept: - application/json @@ -13,11 +13,11 @@ interactions: content-length: - '291' content-type: - - multipart/form-data; boundary=0de4664b25ba02be0361dc50a3f66b20 + - multipart/form-data; boundary=e61a4118204f69006bcb07edcb3e6176 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.22.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -27,7 +27,7 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.22.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: @@ -35,15 +35,17 @@ interactions: method: POST uri: https://api.openai.com/v1/files response: - content: "{\n \"object\": \"file\",\n \"id\": \"file-dNbC3GIh2QoqvsI0N2wL8vQA\",\n - \ \"purpose\": \"assistants\",\n \"filename\": \"unittest_file.txt\",\n \"bytes\": - 14,\n \"created_at\": 1715082624,\n \"status\": \"processed\",\n \"status_details\": - null\n}\n" + body: + string: !!binary | + H4sIAAAAAAAAA0yOPQvCQBBE+/yK42oVA4F81CIiNkYrm7DJrXrhcgnZPVTE/y6bIFjOvDcw70gp + 3dctNqwLpa/WoV5IZ80vLxOXl5uTeexNCd2lDed7ebzttodZHMI49IRiA5ElBs80I1l76CYWvGVG + 4krKFT95VuoXI+lCxckUmxGB0VQgb+I0zvN1lmXpxIiBg7h6GPsGidDoP1AZZLBOBB+ciz7RFwAA + //8DAIhlbEXcAAAA headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 8800fdff4873b36b-PRG + - 89cd42b149bcb35d-PRG Connection: - keep-alive Content-Encoding: @@ -51,14 +53,14 @@ interactions: Content-Type: - application/json Date: - - Tue, 07 May 2024 11:50:24 GMT + - Tue, 02 Jul 2024 08:28:07 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=z1CBn1xHkG2_U8Jptxbhm2Q6hM3_2K3I6..XM0Gr1fg-1715082624-1.0.1.1-lynI3MHz4aZPW_Z_.hRO2jkNceulXRXmd.B5Vi3dfLqqie.qew3tQk2EAs8VXabLsWe8IwTjGqHySYFMuxTwKQ; - path=/; expires=Tue, 07-May-24 12:20:24 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + path=/; expires=Tue, 02-Jul-24 08:58:07 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=IRkg.01SDuSP.ecwS4XG02opi6ZWUYEKSaNmyDpXWsw-1715082624426-0.0.1.1-604800000; + - _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Transfer-Encoding: - chunked @@ -69,15 +71,16 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '384' + - '250' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_c49fcd825309b1ba104c8b30249738a0 - http_version: HTTP/1.1 - status_code: 200 + - req_5ea3281cedbec397dffeef3e207d4a5e + status: + code: 200 + message: OK - request: body: '' headers: @@ -90,12 +93,12 @@ interactions: content-type: - application/json cookie: - - __cf_bm=z1CBn1xHkG2_U8Jptxbhm2Q6hM3_2K3I6..XM0Gr1fg-1715082624-1.0.1.1-lynI3MHz4aZPW_Z_.hRO2jkNceulXRXmd.B5Vi3dfLqqie.qew3tQk2EAs8VXabLsWe8IwTjGqHySYFMuxTwKQ; - _cfuvid=IRkg.01SDuSP.ecwS4XG02opi6ZWUYEKSaNmyDpXWsw-1715082624426-0.0.1.1-604800000 + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.22.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -105,23 +108,25 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.22.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.12.3 method: GET - uri: https://api.openai.com/v1/files/file-dNbC3GIh2QoqvsI0N2wL8vQA + uri: https://api.openai.com/v1/files/file-4l9RDSdwJdRamZjuThRQgHFL response: - content: "{\n \"object\": \"file\",\n \"id\": \"file-dNbC3GIh2QoqvsI0N2wL8vQA\",\n - \ \"purpose\": \"assistants\",\n \"filename\": \"unittest_file.txt\",\n \"bytes\": - 14,\n \"created_at\": 1715082624,\n \"status\": \"processed\",\n \"status_details\": - null\n}\n" + body: + string: !!binary | + H4sIAAAAAAAAA0yOPQvCQBBE+/yK42oVA4F81CIiNkYrm7DJrXrhcgnZPVTE/y6bIFjOvDcw70gp + 3dctNqwLpa/WoV5IZ80vLxOXl5uTeexNCd2lDed7ebzttodZHMI49IRiA5ElBs80I1l76CYWvGVG + 4krKFT95VuoXI+lCxckUmxGB0VQgb+I0zvN1lmXpxIiBg7h6GPsGidDoP1AZZLBOBB+ciz7RFwAA + //8DAIhlbEXcAAAA headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 8800fe02ce3bb36b-PRG + - 89cd42b3feeab35d-PRG Connection: - keep-alive Content-Encoding: @@ -129,7 +134,7 @@ interactions: Content-Type: - application/json Date: - - Tue, 07 May 2024 11:50:24 GMT + - Tue, 02 Jul 2024 08:28:07 GMT Server: - cloudflare Transfer-Encoding: @@ -141,15 +146,16 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '168' + - '44' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_e32ee0715475eb2abd3ee97650f73533 - http_version: HTTP/1.1 - status_code: 200 + - req_bd3ad718b2e1389cbfe6716463718049 + status: + code: 200 + message: OK - request: body: '' headers: @@ -162,12 +168,12 @@ interactions: content-type: - application/json cookie: - - __cf_bm=z1CBn1xHkG2_U8Jptxbhm2Q6hM3_2K3I6..XM0Gr1fg-1715082624-1.0.1.1-lynI3MHz4aZPW_Z_.hRO2jkNceulXRXmd.B5Vi3dfLqqie.qew3tQk2EAs8VXabLsWe8IwTjGqHySYFMuxTwKQ; - _cfuvid=IRkg.01SDuSP.ecwS4XG02opi6ZWUYEKSaNmyDpXWsw-1715082624426-0.0.1.1-604800000 + - __cf_bm=HGrlp2jkCU7PmJnWUeTcl0j4bIsVVBHb8ekasqnuH9o-1719908887-1.0.1.1-K.W111cP74EvtcMOnizxyfAwS2w1sbKdHcL4GtPmpB8mzpZakLRuNWHICDPV.zmvff3LvqYDx6x2m.Wh4gdUUw; + _cfuvid=v2eHrJIMG9AoAEkBbadZaXwjEkz.ePvy9y6TJzw289Q-1719908887659-0.0.1.1-604800000 host: - api.openai.com user-agent: - - AsyncOpenAI/Python 1.22.0 + - AsyncOpenAI/Python 1.35.7 x-stainless-arch: - x64 x-stainless-async: @@ -177,20 +183,23 @@ interactions: x-stainless-os: - Linux x-stainless-package-version: - - 1.22.0 + - 1.35.7 x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.12.3 method: DELETE - uri: https://api.openai.com/v1/files/file-dNbC3GIh2QoqvsI0N2wL8vQA + uri: https://api.openai.com/v1/files/file-4l9RDSdwJdRamZjuThRQgHFL response: - content: "{\n \"object\": \"file\",\n \"deleted\": true,\n \"id\": \"file-dNbC3GIh2QoqvsI0N2wL8vQA\"\n}\n" + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUErLzElV0gGJpaTmpJakpihZKZQUlaaChTJTYEp0TXIs + g1yCU8q9UoISc6OySkMyggLTPdx8lLhquQAAAAD//wMA0ipLmFMAAAA= headers: CF-Cache-Status: - DYNAMIC CF-RAY: - - 8800fe056b29b36b-PRG + - 89cd42b62c30b35d-PRG Connection: - keep-alive Content-Encoding: @@ -198,7 +207,7 @@ interactions: Content-Type: - application/json Date: - - Tue, 07 May 2024 11:50:25 GMT + - Tue, 02 Jul 2024 08:28:08 GMT Server: - cloudflare Transfer-Encoding: @@ -210,13 +219,14 @@ interactions: openai-organization: - apify-irafvf openai-processing-ms: - - '212' + - '148' openai-version: - '2020-10-01' strict-transport-security: - max-age=15724800; includeSubDomains x-request-id: - - req_97d6d55e2dfc3e6cd3558a2cc7b8747b - http_version: HTTP/1.1 - status_code: 200 + - req_90815feefb95e6d93620b3ba579dee3c + status: + code: 200 + message: OK version: 1 diff --git a/tests/cassettes/test_vector_store_delete.yaml b/tests/cassettes/test_vector_store_delete.yaml new file mode 100644 index 0000000..ee6426f --- /dev/null +++ b/tests/cassettes/test_vector_store_delete.yaml @@ -0,0 +1,686 @@ +interactions: +- request: + body: '{"name": "unittest_vector_store_cehhnddi"}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '42' + content-type: + - application/json + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/vector_stores + response: + body: + string: !!binary | + H4sIAAAAAAAAA1yPsU7DMBRF93yFlZkhRYiSbiDEWnXqaL0+v7RGjh3s66io6r8jJxIkjD7nyFfv + VilVW1PvVD0mzbw3jzw+bd+CtcP7V3e4Nh/H42v9ULJw+hTGlAojRJ0QoszOUy/FZG8BSdDLRLNc + Lt4YO7cJhJxKzaEfnEDMLHKis+jTN6TYZmIchSBGUxnebDdt27y0zfPkOutEc8gepb9VSpVjvB5i + OEdJv5+o5dIf68i6FWDyLG7NEECuvCul7tNqLyBDoDI5E7kONkrS1EFivVM+O7cWWFJHCZoYdpT/ + Z1X3HwAAAP//AwDJRNHakQEAAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd4326dad24107-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:26 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '33' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_415259e6c8b7fa30540e25ff2c058e46 + status: + code: 200 + message: OK +- request: + body: "--4561b68c07b50381ee27dee6792694ff\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--4561b68c07b50381ee27dee6792694ff\r\nContent-Disposition: + form-data; name=\"file\"; filename=\"unittest_swmf__file.txt\"\r\nContent-Type: + text/plain\r\n\r\nHello, OpenAI!\r\n--4561b68c07b50381ee27dee6792694ff--\r\n" + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '297' + content-type: + - multipart/form-data; boundary=4561b68c07b50381ee27dee6792694ff + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/files + response: + body: + string: !!binary | + H4sIAAAAAAAAA0yOywrCMBRE9/2KkLWKaYvaLsXHRrEbdRnS5hYi6cPeG5/475IWweXMOQPzDhjj + TX6BgnjKeGks8JHvjP7lMe53cbbabKPjKYzDq1ieD7dXFq0HsXVd2yB4WyEaJFUTDsiva1X1zNWG + CJAk3qtSSo8m9KBBzJ8EyFMm4j4WHSgCLZX/JOYiSaaLZDrrGZIi513edk0BiKD5H5AaSBnrhdpZ + G3yCLwAAAP//AwA2Kj1+4gAAAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd4328cd694107-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:26 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '247' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_49547c878d71defc6952a7bf5343b93f + status: + code: 200 + message: OK +- request: + body: '{"file_ids": ["file-sML4PDFG3UV242q1BWOvzP3E"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '47' + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/vector_stores/vs_ccOd2cv47BoiipDqfQx0FWWA/file_batches + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SOwWrDMAxA7/kKkXMZdhLSuLeO0evYqUfjKPLm4saprZZB6b8XJx0s1ye9J90L + gNIN5Q7KW7K9bttBSjRVZxEb1dSdFLWUtWhbSVhZKjdZCP2JkGeJkEPUiUOkN+s86d4w/ixrGMkw + DdrkVbmVSolOCTXPEhu+ppxwo55i+I6U0qL9b+q/3zTi51Dhrdm+B+emj4v9+hWH43G/OPNpDNeR + c/NeAMC6vAO5WSiG8+SJKYfFi1nj/AqgGZH8mnFg43OoAHgUjycAAAD//wMAcMUNjTsBAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd4330fc44b37f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:29 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '448' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_77b22aa3bf85a80204d8a2c7172bcf4f + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-poll-helper: + - 'true' + x-stainless-raw-response: + - 'true' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_ccOd2cv47BoiipDqfQx0FWWA/file_batches/vsfb_66d11ca28fcc494381031130661ec2fe + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SOwWrDMAxA7/kKkXMZdhLSuLeO0evYqUfjKPLm4saprZZB6b8XJx0s1ye9J90L + gNIN5Q7KW7K9bttBSjRVZxEb1dSdFLWUtWhbSVhZKjdZCP2JkGeJkEPUiUOkN+s86d4w/ixrGMkw + DdrkVbmVSolOCTXPEhu+ppxwo55i+I6U0qL9b+q/3zTi51Dhrdm+B+emj4v9+hWH43G/OPNpDNeR + c/NeAMC6vAO5WSiG8+SJKYfFi1nj/AqgGZH8mnFg43OoAHgUjycAAAD//wMAcMUNjTsBAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd433b4ca3b37f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:29 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '31' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_46a26cfc15f225e5e50d373610079ab1 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-poll-helper: + - 'true' + x-stainless-raw-response: + - 'true' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_ccOd2cv47BoiipDqfQx0FWWA/file_batches/vsfb_66d11ca28fcc494381031130661ec2fe + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SPwWrDMBBE7/4K4XMJWts4dm4ppdfSU45CXq1aBcVypU0ohPx7kNyW9Po0b0Z7 + rYSonal3or4kO6m+NwCom8EidmPXDiBbgFb2PRA2luqnLITpSMhFIuQQVeIQaWOdJzVpxs81hpE0 + k1E6R2EL4yiHEWR5S6z5nHIFhtPiicms0mOj+v2ZQnwzDV667XNwbnn5su/f8vVw2K9OGcZwnjk3 + Xish8lWzWmL4iJQyLKvicW0n4IdZ7XwBfyE9I/n/jANrn6VKiFt1uwMAAP//AwDET1QFOQEAAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd4342d8d0b37f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:30 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '52' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_83253635547824359e6d5c3b36276b02 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: DELETE + uri: https://api.openai.com/v1/vector_stores/vs_ccOd2cv47BoiipDqfQx0FWWA/files/file-sML4PDFG3UV242q1BWOvzP3E + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQykxRslJQSsvMSdUt9vUxCXBxczcODTMyMSo0dAr3L6sKMHZV0gEpzE/K + Sk0uASkuS00uyS+KLy7JL0rVA+nUS0nNSS1JTYEohHGsFEqKSlO5agEAAAD//wMAt6BQ5GcAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd43444b1cb37f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:31 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '106' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_f35ea2d534d15802f5cd6be9ff71e77e + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_ccOd2cv47BoiipDqfQx0FWWA/files + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUMrJLC5R0gGJpSSWJCpZKUTHgnlpmUXFJfGZKUpWCnml + OTlgsZxEDKGMxOL43PyiVCUrhbTEnOJUrloAAAAA//8DAAcD/aBgAAAA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd4358da72b37f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:34 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '35' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_ded022c8385ea990b8d430ec6fa716ce + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: DELETE + uri: https://api.openai.com/v1/files/file-sML4PDFG3UV242q1BWOvzP3E + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUErLzElV0gGJpaTmpJakpihZKZQUlaaChTJTYEp0i319 + TAJc3NyNQ8OMTIwKDZ3C/cuqAoxdlbhquQAAAAD//wMAuudC9lMAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd435aca01b380-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:34 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '153' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_82ccf4e0b78eaa2e1270223e1076e43d + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: DELETE + uri: https://api.openai.com/v1/vector_stores/vs_ccOd2cv47BoiipDqfQx0FWWA + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQykxRslJQKiuOT072TzFKLjMxd8rPzCxwKUwLrDBwCw93VNIBKctPykpN + LgErTU0uyS+KLy7JL0rVS0nNSS1JTYGogXGsFEqKSlO5agEAAAD//wMAHpHexGAAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd435cdd8db380-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:35 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '637' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_b39748c7b29f6a481019721cba9e15d3 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_vector_store_get_by_id.yaml b/tests/cassettes/test_vector_store_get_by_id.yaml new file mode 100644 index 0000000..2307fff --- /dev/null +++ b/tests/cassettes/test_vector_store_get_by_id.yaml @@ -0,0 +1,765 @@ +interactions: +- request: + body: '{"name": "unittest_vector_store_oizlecvg"}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '42' + content-type: + - application/json + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/vector_stores + response: + body: + string: !!binary | + H4sIAAAAAAAAA1yPsWrDMBRFd3+F8NzBpkOibIXSoYWUZAjtJF7ka0dFloz0ZNqG/HuRDa3dUecc + dHnXQojSNOVOlGNUj6f3p/2mqg+vbv/cy/HlMjwc3w735V3O/PkDmqcUmn1QkX3A7Bz1yCY5w4zI + apkob74t9NjNbWTiFHOtfT9YMJpZpEgd1PmLkW01MR1AjEZRHq43tZTVdivl5FpjobRPjnN/LYTI + xzg1BN8FxN9PxHLpj7Vk7Apochp2zdgz2fwuhLhNqz2YGmLKkzPB52ACoqKWEcqdcMnateAltRRZ + kWYz4v9Zxe0HAAD//wMAz7GTEpEBAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42fe9d2db389-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:19 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '64' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_7078d8d3a8554b0ad7347372ec518c1c + status: + code: 200 + message: OK +- request: + body: "--8d5ed5acd249658871e45f92e84049e6\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--8d5ed5acd249658871e45f92e84049e6\r\nContent-Disposition: + form-data; name=\"file\"; filename=\"unittest_vgjt__file.txt\"\r\nContent-Type: + text/plain\r\n\r\nHello, OpenAI!\r\n--8d5ed5acd249658871e45f92e84049e6--\r\n" + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '297' + content-type: + - multipart/form-data; boundary=8d5ed5acd249658871e45f92e84049e6 + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/files + response: + body: + string: !!binary | + H4sIAAAAAAAAA0yOwQqCQBRF937FMOuKkYLUZaCtA1u0GkbnKWPTKL43lUX/HqMELe8958J9R4zx + vuqgJp4x3hgLfBU6o395XUzHsymb4lAWyQWup0e+FW3+yhdx8OPQIwRbIRok5QgXFNZO3WbmnSEC + JHlvO5IyoA09aRGriQB5xuLdHOsRFIGWKnyK93GaiiQVYmZIinxw+TD2NSCC5n9AaiBlbBCctzb6 + RF8AAAD//wMAQaaQF+IAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd43005fd6b389-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:20 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '171' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_18c6a250d5c0b95e5fa6c51d16853e66 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_DVYFN701QOnNJm9vKhpARXQ3/files + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUMrJLC5R0gGJpSSWJCpZKUTHgnlpmUXFJfGZKUpWCnml + OTlgsZxEDKGMxOL43PyiVCUrhbTEnOJUrloAAAAA//8DAAcD/aBgAAAA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd43089bce411f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:21 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '33' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_4ccbf3ee9b30fd5090bb4c7479d1b920 + status: + code: 200 + message: OK +- request: + body: '{"file_ids": ["file-FyGUiTfFBTF8YekQwE30gEzE"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '47' + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/vector_stores/vs_DVYFN701QOnNJm9vKhpARXQ3/file_batches + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SOMU/DMBCF9/yKU2aEHBLhuhsSYgCpqAwIJutyPtMgN47sa5eq/x05AYms7973 + vbtUAPXg6i3U5+x7S861rTad3mjqsL3vCQnvtDbovaLO1TcFiP03k8wQk8Rks8TEt34IbHsUOiw1 + SozCzmKpNroxRm2MauZbFpRTLophtFOKX4lzXrD/Tvv3m318/3zaadXsX8fd89GcXw7Tw9vHvl2Y + eZriaZTivFQAsDZvYd4tX8XjFFi4iNVv5nEIq4BwJA7rTKJgKKIK4FpdfwAAAP//AwD88aiXOwEA + AA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd430aaeb7411f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:21 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '185' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_a0e5032181e9081295c3961df5a53b64 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-poll-helper: + - 'true' + x-stainless-raw-response: + - 'true' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_DVYFN701QOnNJm9vKhpARXQ3/file_batches/vsfb_cdd33794787c4a36bcaca2779aff0c4d + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SOsW7CMBBA93yFlRkhh0QYs1WqOlCJCoaqnazL+VyCTBzZBwvi35GTVmrWd/fe + 3b0QouxsuRXlLbnWoLV1rXSjNgobqNctAsJKKQ3OSWxsuchCaM+EPEqEHKJJHCItXefJtMB4mtYw + EjBZA3m1UpXWcqPlapwlBr6mnOh6M8TwEymlSfvfNH+/mdfP77e9ktXho9/vLvr2fhpejl+HenLG + 0xiuPefmvRBCzMtbUS0miuEyeGLKYfnLHHR+BhB6JD9nHBh8DhVCPIrHEwAA//8DAMtEB9M7AQAA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd430d4a7a411f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:22 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '37' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_7fb3f80b4083c1a826d959ef80021b6a + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-poll-helper: + - 'true' + x-stainless-raw-response: + - 'true' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_DVYFN701QOnNJm9vKhpARXQ3/file_batches/vsfb_cdd33794787c4a36bcaca2779aff0c4d + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SPTWvDMAyG7/kVJucynDnMdW+FsUMHHd1hbCejyPKa4sbBVnsp/e/DSfd1ffQ+ + r6RLJUTdu3ol6nP2nUXnlNKm1UuNLaiHDgHhXmsD3ktsXb0oQuwOhDxJhByTzRwT3fk+kO2AcT/H + MBEwOQsl2ujGGLk0Uk2zzMCnXCowHsdATLfuv432+zL7+PbxtNWy2b0M283RnJ/34/r1fadmZ1qM + 8TRwabxUQpSvBjum+JkoFygXM/3dthLNjXnowwR+QjAghf+MI0MoUiXEtbp+AQAA//8DAO6+7kY5 + AQAA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd4314cb53411f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:23 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '50' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_a41bfd6b1da1426ad84cf858bfa0ee7e + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_DVYFN701QOnNJm9vKhpARXQ3/files + response: + body: + string: !!binary | + H4sIAAAAAAAAA4yRUWuDMBDH3/0UR567Eemg6tvG6mCDjo5urIwRUj1tVjWSnG629LuPWFAf+3KB + +//uf3e5kwfA9O4HE2IRsEJZYjOXSyVJFsGXBwBw6iMAU6mjMlXgTdw9vatNFj9s4mCLh/Xvcs7z + 5XHZl/fwaNtiQtoIS9rgraseocbKHMWuI7QsAp/Pg0FKDErCVEjn4S/8MORByP1Bn7qKy2StFY8f + 23i14P76tVo9l2H7sq/v3z7X87GlJUmN68YSXdYFEqajWEhLAo3RhkVQNUUxjrNvqoOqcmHJSMK8 + Y9HwMQCMuhqdp3NXyWAIQ2ZKA7BS/oneUlh1REH6gJUbKuB8NuUujG7RFLIesTvOB+rsTV8Xv/sb + ZspYEtfe7LL61fReWlFq43bOZGHRO/8DAAD//wMAmoKHW0wCAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd4316ddd7411f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:23 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '33' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_738f4bb19206288b06c2e7e32ddf18dc + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_DVYFN701QOnNJm9vKhpARXQ3/files?after=file-FyGUiTfFBTF8YekQwE30gEzE + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUMrJLC5R0gGJpSSWJCpZKUTHgnlpmUXFJfGZKUpWCnml + OTlgsZxEDKGMxOL43PyiVCUrhbTEnOJUrloAAAAA//8DAAcD/aBgAAAA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd43182fa9411f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:23 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '43' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_bc96551dffbcb6eb410c663de6e8f5ef + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: DELETE + uri: https://api.openai.com/v1/files/file-FyGUiTfFBTF8YekQwE30gEzE + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUErLzElV0gGJpaTmpJakpihZKZQUlaaChTJTYEp03Srd + QzND0tycQtwsIlOzA8tdjQ3SXatclbhquQAAAAD//wMAM1SHrVMAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd431a0e8eb389-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:24 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '106' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_2af6e4e7a40f6961ca9d9ba03f0a7281 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: DELETE + uri: https://api.openai.com/v1/vector_stores/vs_DVYFN701QOnNJm9vKhpARXQ3 + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQykxRslJQKiuOdwmLdPMzNzAM9M/z88q1LPPOKHAMigg0VtIBKctPykpN + LgErTU0uyS+KLy7JL0rVS0nNSS1JTYGogXGsFEqKSlO5agEAAAD//wMADLbN12AAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd431bfa15b389-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:25 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '612' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_693e1b7423672e67e199fbc4c44fede0 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_vector_store_get_by_prefix.yaml b/tests/cassettes/test_vector_store_get_by_prefix.yaml new file mode 100644 index 0000000..f509755 --- /dev/null +++ b/tests/cassettes/test_vector_store_get_by_prefix.yaml @@ -0,0 +1,1438 @@ +interactions: +- request: + body: '{"name": "unittest_vector_store_okesheqq"}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '42' + content-type: + - application/json + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/vector_stores + response: + body: + string: !!binary | + H4sIAAAAAAAAA1yPsU7DMBRF93yFlZmhRUIkHRnYUsSABJP16twUF8dO/Z5Lq6r/jpxIkDD6nCNf + vWuhVGnbcqPKE+uh3r5UzYPw91Pz/kHbc/P69hzNpbzLWdgdYGRMYSREzRIiJuepRzbJWxGw6Hmi + wxf4E8fj1LKQJM61Cf3gIGgnkZj20LuLINvVyEwECVpNeXj9uK7rVVXV96PrrIM2IXnJ/bVQKh/j + 9RDDPoJ/P1HzpT/WkXULYMgbuCWTIOTyu1DqNq72EGpJKE9OBOfBRrCmThDLjfLJuaWQOXXEosmI + PeH/WcXtBwAA//8DAPMnQaSRAQAA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42d14abab345-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:12 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + path=/; expires=Tue, 02-Jul-24 08:58:12 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '47' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_3e20939c3a62ea7574a69141d85e5b1e + status: + code: 200 + message: OK +- request: + body: "--27ed710fedaf3f0298f23fc5fda60f13\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--27ed710fedaf3f0298f23fc5fda60f13\r\nContent-Disposition: + form-data; name=\"file\"; filename=\"unittest_ttzq__file.txt\"\r\nContent-Type: + text/plain\r\n\r\nHello, OpenAI!\r\n--27ed710fedaf3f0298f23fc5fda60f13--\r\n" + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '297' + content-type: + - multipart/form-data; boundary=27ed710fedaf3f0298f23fc5fda60f13 + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/files + response: + body: + string: !!binary | + H4sIAAAAAAAAA0yOPQvCMBiE9/6KkFnFFqttx4Kb4NLJJcT0rURiW/te/MT/LmkRHO+e5+DekRCy + O57JQBZCNtaRnIXO1r8831fO7dJynVWmrLZImtMhvcX3ZhJ7P/QdU7A1s2XoFjyhsG71ZWS+tQAx + FPC6KhXQAg9M4vEJYlmIeDVGM5AG1UqHT/EmzvNlluXJyBgaPriyHzpDzFTLP6BqgrYuCK13LvpE + XwAAAP//AwCvIvfa4gAAAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42d2fdafb345-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:13 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '271' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_e4aa22fb4ef14ef104880f942714ab42 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/files + response: + body: + string: !!binary | + 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 + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42d65c35b33f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:13 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + path=/; expires=Tue, 02-Jul-24 08:58:13 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '140' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_f6a67bf5fd2ed14afe3f4d3ba2dd7306 + status: + code: 200 + message: OK +- request: + body: '{"file_ids": ["file-OTllL5B68TcBTEt2fgZ5v1wf"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '47' + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: POST + uri: https://api.openai.com/v1/vector_stores/vs_p9NO8M5tswBMXYaNxMQUFrcy/file_batches + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SOsW6DMBBAd77CYo4qjAjGGTt0I1GGSu1knY+jpXIxsi9Nqij/XhkaKazv7r27 + ayZEPnT5TuQ/sbdGKlVYSaost7rqrNWlqrCgutZljRZkvkmCt1+EPEuE7IOJ7AM99YMjY4Hxc1nD + QMDUGUirUkmti6bR1TyLDHyKKTGMZgr+I1CMi/bYNPffzKT3h6bdcjw/t2/vsL+0x9eXgL+LM59G + fxo5Na+ZEGJd3gm5WSj678kRUwoX/6yHwa0Awojk1ow9g0uhTIhbdvsDAAD//wMAxmApbDsBAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42db7da8b33f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:14 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '182' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_716eab863a2db68ddea72c41d58bbb2a + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-poll-helper: + - 'true' + x-stainless-raw-response: + - 'true' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_p9NO8M5tswBMXYaNxMQUFrcy/file_batches/vsfb_1770b1e722594dbb9274c0e66926cba1 + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SOsW6DMBBAd77CYo4qjAjGGTt0I1GGSu1knY+jpXIxsi9Nqij/XhkaKazv7r27 + ayZEPnT5TuQ/sbdGKlVYSaost7rqrNWlqrCgutZljRZkvkmCt1+EPEuE7IOJ7AM99YMjY4Hxc1nD + QMDUGUirUkmti6bR1TyLDHyKKTGMZgr+I1CMi/bYNPffzKT3h6bdcjw/t2/vsL+0x9eXgL+LM59G + fxo5Na+ZEGJd3gm5WSj678kRUwoX/6yHwa0Awojk1ow9g0uhTIhbdvsDAAD//wMAxmApbDsBAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42ddda43b33f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:14 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '33' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_2d29afcd8c85f7a76f85e08cea28c738 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-poll-helper: + - 'true' + x-stainless-raw-response: + - 'true' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_p9NO8M5tswBMXYaNxMQUFrcy/file_batches/vsfb_1770b1e722594dbb9274c0e66926cba1 + response: + body: + string: !!binary | + H4sIAAAAAAAAA1SPu27DMAxFd3+F4DkILCO2rIwdujlBhwDtJFA0nbpQLENimgZB/r2Q3ed6eM8l + ecuEyIcu34r8PfbWSKUKK0mVZaU3nbW6VBssqK51WaMFma+S4O0bIc8SIftgIvtA635wZCwwvi4x + DARMnYEUlUpqXTSNruZZZOBzTBXoT5Mjpm6R/jaa78vMpHf7pq04Xh7a5xfYfbRPh8eA18WZF6M/ + j5wab5kQ6avRTMEfA8UEi9VCf7dthfxiPQxuBj8hGJHcf8aewSUpE+Ke3T8BAAD//wMA2qB/uzkB + AAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42e6196ab33f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:15 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '54' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_355f96145c919469e4ae74c2e4f39876 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/files + response: + body: + string: !!binary | + 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 + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42e77bdfb33f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:16 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '100' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_c29bd86f6ed791e162e9894c8d7ab169 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_p9NO8M5tswBMXYaNxMQUFrcy/files + response: + body: + string: !!binary | + H4sIAAAAAAAAA4yRTWvDMAyG7/kVwuduJFu7JTkWttPaMuhgHxTjOkrq1Y2DraTNSv/7cApJjr3I + oPfRK8k6BwDMbH9REkuBaeWITXwuEyRYCj8BAMC5iwBMZZ7Klca71Vrrt9n8KV7L+fqFHvLie9ZE + x7wr7+DBtkFJxnJHxuK9rx6g2okC+bYldCyFKHyMe0laFIQZF94jeo6SJIzjZNrrY1d+naxxvEqW + q3gxI3ecLz6/xPK0eP94tbIdWjoSVPtuTJpDpZEwG0QtHHG01liWQllrPYyzq8u9KgvuyArComVp + /zEAjNoKvad3V7I3hD4zpgHYQZx4Z8md+kNOZo+lHyoOw8mYuzKmQatFNWDTMOypSzB+fdx0N8yV + dcRvvdl19ZvpnXD8YKzfORfaYXD5BwAA//8DANC7tftMAgAA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42ecbdd3b33f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:17 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '113' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_7ab859c585f808192d4a5e9a8fd78319 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=GhHecvFx5tEZ3ydELbfzW03IC45ySPCW2dqrPBqGACw-1719908893-1.0.1.1-ZX6neQy2RHIaYV94RVCnFCENiUjMo01OZ9fsFoN5.aoplImdBq9vscFNEodybwKjNaWk7ddKxAmAaJ87YUTgSQ; + _cfuvid=JSoh5toybHs06yhzOKO2QSnOcWe8.vEI0EJY8bNCnZ8-1719908893488-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: GET + uri: https://api.openai.com/v1/vector_stores/vs_p9NO8M5tswBMXYaNxMQUFrcy/files?after=file-OTllL5B68TcBTEt2fgZ5v1wf + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUMrJLC5R0gGJpSSWJCpZKUTHgnlpmUXFJfGZKUpWCnml + OTlgsZxEDKGMxOL43PyiVCUrhbTEnOJUrloAAAAA//8DAAcD/aBgAAAA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42f07cfeb33f-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:17 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '47' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_978773d50946c5a7c8867e03d88e8282 + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: DELETE + uri: https://api.openai.com/v1/files/file-OTllL5B68TcBTEt2fgZ5v1wf + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQyk/KSk0uUbJSUErLzElV0gGJpaTmpJakpihZKZQUlaaChTJTYEp0/UNy + cnxMncwsQpKdQlxLjNLSo0zLDMvTlLhquQAAAAD//wMApSXxJlMAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42f25e2db345-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:17 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + access-control-allow-origin: + - '*' + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '127' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_2e7b95c14a7c15fe98949f9cba65cf9b + status: + code: 200 + message: OK +- request: + body: '' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-type: + - application/json + cookie: + - __cf_bm=2Zr0_BdBtJ_pjTT2ONgYKNe3jWgrUIeCzoncjzeUkpE-1719908892-1.0.1.1-x9g34wt5rRxVibnxy4.IyO8nLY.Jat3w5t6z99ehe1mAmeKa6d8BKz2udoEcEgNEoEutuBqvvPBD0TV2CIZWPg; + _cfuvid=USLCVBGRkYR2LqHF_MLL_ZOZtxlE3OnuwWjht8ohClg-1719908892608-0.0.1.1-604800000 + host: + - api.openai.com + openai-beta: + - assistants=v2 + user-agent: + - AsyncOpenAI/Python 1.35.7 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.35.7 + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.3 + method: DELETE + uri: https://api.openai.com/v1/vector_stores/vs_p9NO8M5tswBMXYaNxMQUFrcy + response: + body: + string: !!binary | + H4sIAAAAAAAAA6rmUlBQykxRslJQKiuOL7D087fwNS0pLnfyjYhM9KvwDQx1K0quVNIBKctPykpN + LgErTU0uyS+KLy7JL0rVS0nNSS1JTYGogXGsFEqKSlO5agEAAAD//wMArrRX0mAAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 89cd42f459bcb345-PRG + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 02 Jul 2024 08:28:18 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - apify-irafvf + openai-processing-ms: + - '589' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=15724800; includeSubDomains + x-request-id: + - req_59684df29232e2cb5e5d1b71f37e9b60 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_vector_store_integration.yaml b/tests/cassettes/test_vector_store_integration.yaml deleted file mode 100644 index 7747bd2..0000000 --- a/tests/cassettes/test_vector_store_integration.yaml +++ /dev/null @@ -1,1667 +0,0 @@ -interactions: -- request: - body: '{"name": "unittest_vector_store"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '33' - content-type: - - application/json - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: POST - uri: https://api.openai.com/v1/vector_stores - response: - content: "{\n \"id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"object\": \"vector_store\",\n - \ \"name\": \"unittest_vector_store\",\n \"status\": \"completed\",\n \"usage_bytes\": - 0,\n \"created_at\": 1715082986,\n \"file_counts\": {\n \"in_progress\": - 0,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": 0,\n \"total\": - 0\n },\n \"metadata\": {},\n \"expires_after\": null,\n \"expires_at\": - null,\n \"last_active_at\": 1715082986\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 880106db9a2eb32f-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:27 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=o7oLemcALE75QGz_tKXx87qnEu0r8uw1PCitilU7o.A-1715082987-1.0.1.1-KWG7ZIOI_2GydPqp.sMYShUWpYD90E1Y_IwKnN49DE.7zmQHLcg1qq8DLi5ukeXZTr12DGBI6Lp6EXddBZAixg; - path=/; expires=Tue, 07-May-24 12:26:27 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=5Mg4.GvBAeRaOlNXlhUxmVK5ewZV6VnnSj8IeMxAL2Y-1715082987053-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '58' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_77827522c997c06518ccb690881b7a5a - http_version: HTTP/1.1 - status_code: 200 -- request: - body: "--062b530889e69ef3a44c6a4db498c2d9\r\nContent-Disposition: form-data; name=\"purpose\"\r\n\r\nassistants\r\n--062b530889e69ef3a44c6a4db498c2d9\r\nContent-Disposition: - form-data; name=\"file\"; filename=\"unittest_file.txt\"\r\nContent-Type: text/plain\r\n\r\nHello, - OpenAI!\r\n--062b530889e69ef3a44c6a4db498c2d9--\r\n" - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '291' - content-type: - - multipart/form-data; boundary=062b530889e69ef3a44c6a4db498c2d9 - cookie: - - __cf_bm=o7oLemcALE75QGz_tKXx87qnEu0r8uw1PCitilU7o.A-1715082987-1.0.1.1-KWG7ZIOI_2GydPqp.sMYShUWpYD90E1Y_IwKnN49DE.7zmQHLcg1qq8DLi5ukeXZTr12DGBI6Lp6EXddBZAixg; - _cfuvid=5Mg4.GvBAeRaOlNXlhUxmVK5ewZV6VnnSj8IeMxAL2Y-1715082987053-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: POST - uri: https://api.openai.com/v1/files - response: - content: "{\n \"object\": \"file\",\n \"id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n - \ \"purpose\": \"assistants\",\n \"filename\": \"unittest_file.txt\",\n \"bytes\": - 14,\n \"created_at\": 1715082987,\n \"status\": \"processed\",\n \"status_details\": - null\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 880106ddbf79b32f-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:27 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - access-control-allow-origin: - - '*' - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '412' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_b82cce7ae0bb895be204c1ab4462160f - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - host: - - api.openai.com - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/files - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"file\",\n \"id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n \"purpose\": - \"assistants\",\n \"filename\": \"unittest_file.txt\",\n \"bytes\": - 14,\n \"created_at\": 1715082987,\n \"status\": \"processed\",\n \"status_details\": - null\n },\n {\n \"object\": \"file\",\n \"id\": \"file-oPcMTRo98ooopp0kXp2WTMBV\",\n - \ \"purpose\": \"assistants\",\n \"filename\": \"dataset_apify___132f06a-npfl138-2324-05.pdf\",\n - \ \"bytes\": 6256927,\n \"created_at\": 1715026750,\n \"status\": - \"processed\",\n \"status_details\": null\n },\n {\n \"object\": - \"file\",\n \"id\": \"file-ISIRt7FI7qMnJoBZ26Sezd6q\",\n \"purpose\": - \"assistants\",\n \"filename\": \"dataset_apify_web__aLGxrplKcP0iUfpey_0.json\",\n - \ \"bytes\": 1450574,\n \"created_at\": 1714986779,\n \"status\": - \"processed\",\n \"status_details\": null\n },\n {\n \"object\": - \"file\",\n \"id\": \"file-vetsoy0cRS3Y1TLoeOVCOkZp\",\n \"purpose\": - \"assistants\",\n \"filename\": \"dataset_apify_public_actors__jqy6GaKBNiSMggu7i_0.json\",\n - \ \"bytes\": 583417,\n \"created_at\": 1714978829,\n \"status\": - \"processed\",\n \"status_details\": null\n },\n {\n \"object\": - \"file\",\n \"id\": \"file-toBbgLcoQNXNxPzb6RStRBpf\",\n \"purpose\": - \"assistants\",\n \"filename\": \"dataset_apify-web.json\",\n \"bytes\": - 5934,\n \"created_at\": 1714390803,\n \"status\": \"processed\",\n - \ \"status_details\": null\n }\n ],\n \"has_more\": false\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 880106e1aeea27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:36 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - path=/; expires=Tue, 07-May-24 12:26:36 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - access-control-allow-origin: - - '*' - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '7082' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_5ce6ea7577092182be5263db49b8bf87 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '{"file_ids": ["file-4qMY2SzlQFrixH5FyxFq9l3e"]}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '47' - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: POST - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715082998,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 88010719388027b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:38 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '1366' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_95c8a8abdee76cc0ef4b370f87b14b9a - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715082998,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8801072418bc27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:38 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '167' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_a561e62b001b1905e85496d55df16a82 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715082999,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8801072c7e0c27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:39 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '28' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_067c31d34f2d8247f19575d8882d6fe1 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083001,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 88010734b9e127b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:41 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '41' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_c3e8cfb87627f5395b4aa655a7401c51 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083002,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8801073cbf6b27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:42 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '37' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_cc2720a3d4cf76e8fd9135f329500c50 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083003,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 880107449a9e27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:43 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '36' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_e9d3a1691e09ebe699b72fd8609ff3c1 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083004,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8801074c4daa27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:45 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '33' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_10d19605c2748ba68284ad1647724603 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083006,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 88010753ffa027b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:46 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '46' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_4b9853ed51d615e635c76231d8b13c6b - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083007,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8801075baa2b27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:47 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '32' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_e9c0589a9b62faa0b4b457c1f6614cd7 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083008,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 880107635bde27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:48 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '30' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_a0e3fd8c1ad405680deb2cf0898b4aed - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083009,\n \"status\": \"in_progress\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 1,\n \"completed\": 0,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8801076afed627b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:50 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '104' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_da69fdc02934105c487fa8e41980beac - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-poll-helper: - - 'true' - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/file_batches/vsfb_4ceef98d44e3425380493ffbb3b96875 - response: - content: "{\n \"id\": \"vsfb_4ceef98d44e3425380493ffbb3b96875\",\n \"object\": - \"vector_store.file_batch\",\n \"created_at\": 1715083011,\n \"status\": \"completed\",\n - \ \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"file_counts\": - {\n \"in_progress\": 0,\n \"completed\": 1,\n \"failed\": 0,\n \"cancelled\": - 0,\n \"total\": 1\n }\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 880107735a9827b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:51 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '33' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_addb9ba164597fe47ccb4002b3b2f66d - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/files - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n - \ \"object\": \"vector_store.file\",\n \"usage_bytes\": 1038,\n \"created_at\": - 1715082997,\n \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"status\": - \"completed\",\n \"last_error\": null\n }\n ],\n \"first_id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n - \ \"last_id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n \"has_more\": false\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 88010774ccab27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:51 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '29' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_2acf7df805ac7d0de6e337308877ee19 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/files - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n - \ \"object\": \"vector_store.file\",\n \"usage_bytes\": 1038,\n \"created_at\": - 1715082997,\n \"vector_store_id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"status\": - \"completed\",\n \"last_error\": null\n }\n ],\n \"first_id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n - \ \"last_id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n \"has_more\": false\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 88010775ff1127b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:51 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '34' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_c8790ead58363d72e19d102e277e6984 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/files/file-4qMY2SzlQFrixH5FyxFq9l3e - response: - content: "{\n \"object\": \"file\",\n \"id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n - \ \"purpose\": \"assistants\",\n \"filename\": \"unittest_file.txt\",\n \"bytes\": - 14,\n \"created_at\": 1715082987,\n \"status\": \"processed\",\n \"status_details\": - null\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 88010777599527b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:51 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - access-control-allow-origin: - - '*' - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '54' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_669e40b25e7984f9e135d9c8205c35b4 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: DELETE - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/files/file-4qMY2SzlQFrixH5FyxFq9l3e - response: - content: "{\n \"id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\",\n \"object\": \"vector_store.file.deleted\",\n - \ \"deleted\": true\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 880107794c2527b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:53 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '1124' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_7e690660b962f34e086ebff76f7e79ef - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=3k2S8sUAV3.Dp9PK_x1bs_htpaGX14kBo.y4_Y1Tz_I-1715082996-1.0.1.1-Zirzvdp251q6MOfowuMPDGTfIQIyw7PGHLt9Tnfc2U5MlXaMfurkKENnm2dHg3Y951g5UDlmqsbAW0sVvRbfqQ; - _cfuvid=FO3WBvGFkzPKOFR6eUP2SVj1KfiXlbI92Mm6hqgHebQ-1715082996555-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: GET - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf/files - response: - content: "{\n \"object\": \"list\",\n \"data\": [],\n \"first_id\": null,\n - \ \"last_id\": null,\n \"has_more\": false\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 880107892c2b27b4-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:54 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '32' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_68ba9f932ac9b29d050c9ba640f24327 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=o7oLemcALE75QGz_tKXx87qnEu0r8uw1PCitilU7o.A-1715082987-1.0.1.1-KWG7ZIOI_2GydPqp.sMYShUWpYD90E1Y_IwKnN49DE.7zmQHLcg1qq8DLi5ukeXZTr12DGBI6Lp6EXddBZAixg; - _cfuvid=5Mg4.GvBAeRaOlNXlhUxmVK5ewZV6VnnSj8IeMxAL2Y-1715082987053-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: DELETE - uri: https://api.openai.com/v1/files/file-4qMY2SzlQFrixH5FyxFq9l3e - response: - content: "{\n \"object\": \"file\",\n \"deleted\": true,\n \"id\": \"file-4qMY2SzlQFrixH5FyxFq9l3e\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8801078aaed8b357-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:55 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - access-control-allow-origin: - - '*' - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '194' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_b1d25b4240e6a587cccec292b467caea - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-type: - - application/json - cookie: - - __cf_bm=o7oLemcALE75QGz_tKXx87qnEu0r8uw1PCitilU7o.A-1715082987-1.0.1.1-KWG7ZIOI_2GydPqp.sMYShUWpYD90E1Y_IwKnN49DE.7zmQHLcg1qq8DLi5ukeXZTr12DGBI6Lp6EXddBZAixg; - _cfuvid=5Mg4.GvBAeRaOlNXlhUxmVK5ewZV6VnnSj8IeMxAL2Y-1715082987053-0.0.1.1-604800000 - host: - - api.openai.com - openai-beta: - - assistants=v2 - user-agent: - - AsyncOpenAI/Python 1.22.0 - x-stainless-arch: - - x64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - Linux - x-stainless-package-version: - - 1.22.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.3 - method: DELETE - uri: https://api.openai.com/v1/vector_stores/vs_8VHp3cAZj2sLyJAwPkJ6brhf - response: - content: "{\n \"id\": \"vs_8VHp3cAZj2sLyJAwPkJ6brhf\",\n \"object\": \"vector_store.deleted\",\n - \ \"deleted\": true\n}" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8801078dbca8b357-PRG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 07 May 2024 11:56:56 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - apify-irafvf - openai-processing-ms: - - '611' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15724800; includeSubDomains - x-request-id: - - req_a7f446f3f8ba6af32516f877b0e58b9d - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/tests/conftest.py b/tests/conftest.py index 376f565..dab15a7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,28 +1,32 @@ from typing import AsyncGenerator +import random import openai import pytest from dotenv import load_dotenv from openai.types import FileObject from openai.types.beta import VectorStore +from string import ascii_lowercase load_dotenv() client = openai.AsyncClient() -FILE_PREFIX = "unittest_" - -@pytest.fixture +@pytest.fixture(scope="function") async def vector_store_fixture() -> AsyncGenerator[VectorStore, None]: - vector_store = await client.beta.vector_stores.create(name="unittest_vector_store") + + suffix = "".join(random.choices(ascii_lowercase, k=8)) + vector_store = await client.beta.vector_stores.create(name=f"unittest_vector_store_{suffix}") yield vector_store await client.beta.vector_stores.delete(vector_store.id) -@pytest.fixture +@pytest.fixture(scope="function") async def file_fixture() -> AsyncGenerator[FileObject, None]: - filename = f"{FILE_PREFIX}file.txt" + + s = "".join(random.choices(ascii_lowercase, k=4)) + filename = f"unittest_{s}__file.txt" filedata = b"Hello, OpenAI!" file = await client.files.create(file=(filename, filedata), purpose="assistants") diff --git a/tests/test_files.py b/tests/test_files.py index 852ba39..ae6d6d7 100644 --- a/tests/test_files.py +++ b/tests/test_files.py @@ -90,7 +90,7 @@ async def test_create_files_from_key_value_store(monkeypatch) -> None: # type: @pytest.mark.asyncio -# @pytest.mark.integration +@pytest.mark.integration @pytest.mark.vcr(filter_headers=["Authorization"]) @patch("apify.Actor.log.debug", print_) @patch("apify.Actor.log.exception", print_) diff --git a/tests/test_utils.py b/tests/test_utils.py index 3e384d5..8bdb29b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -27,7 +27,7 @@ def test_split_data_into_batches() -> None: async def test_split_data_if_required_small_data() -> None: data = [{"name": "Alice"}] result = await split_data_if_required(data, ENCODING) - assert result == [data] # Expecting the data not to be split + assert result == [data], "Expecting the data not to be split" @pytest.mark.asyncio @@ -35,5 +35,4 @@ async def test_split_data_if_required_large_data() -> None: data = [{"name": "Alice"}] * 1_000_000 # Large dataset result = await split_data_if_required(data, ENCODING) - # Check if data was split into batches as expected - assert len(result) > 1 + assert len(result) > 1, "Expecting the data to be split" diff --git a/tests/test_vector_store.py b/tests/test_vector_store.py index 3aee267..570c5d5 100644 --- a/tests/test_vector_store.py +++ b/tests/test_vector_store.py @@ -8,11 +8,11 @@ from src.main import ( create_files_vector_store_and_poll, - delete_files_from_vector_store, get_files_by_prefix, + delete_files_from_vector_store, + get_files_by_prefix, get_vector_store_files_by_ids, get_vector_store_files_by_prefix, ) -from tests.conftest import FILE_PREFIX load_dotenv() @@ -28,17 +28,16 @@ async def empty(args, **kwargs) -> None: # type: ignore @pytest.mark.asyncio -@pytest.mark.vcr(filter_headers=["Authorization"]) @pytest.mark.integration +@pytest.mark.vcr(filter_headers=["Authorization"]) @patch("apify.Actor.log.debug", print_) @patch("apify.Actor.log.exception", print_) -async def test_vector_store_integration(monkeypatch, vector_store_fixture, file_fixture) -> None: # type: ignore - """Create a vector store, add files, get vector store files, delete file and vector store""" +async def test_vector_store_get_by_prefix(monkeypatch, vector_store_fixture, file_fixture) -> None: # type: ignore + """Vector store and file is created using fixture. Check that file with the prefix exists""" vs = vector_store_fixture - file_created = file_fixture - file_prefix = FILE_PREFIX + file_prefix = file_fixture.filename.split("__")[0] monkeypatch.setattr(Actor, "push_data", empty) @@ -51,23 +50,63 @@ async def test_vector_store_integration(monkeypatch, vector_store_fixture, file_ assert vs_batch assert vs_batch.file_counts.completed == 1, "File not attached to vector store" - # get vector store files by id - files = await get_vector_store_files_by_ids(client, vs.id, [file_created.id]) + # get vector store files by prefix + files = await get_vector_store_files_by_prefix(client, vs.id, file_prefix) assert files assert file_created.id in files, "File not found in vector store files" - # get vector store files by prefix - files = await get_vector_store_files_by_prefix(client, vs.id, file_prefix) + +@pytest.mark.asyncio +@pytest.mark.integration +@pytest.mark.vcr(filter_headers=["Authorization"]) +@patch("apify.Actor.log.debug", print_) +@patch("apify.Actor.log.exception", print_) +async def test_vector_store_get_by_id(monkeypatch, vector_store_fixture, file_fixture) -> None: # type: ignore + """Vector store and file is created using fixture. Check that file with the ID exists""" + + vs = vector_store_fixture + file_created = file_fixture + + monkeypatch.setattr(Actor, "push_data", empty) + + files = await get_vector_store_files_by_ids(client, vs.id, [file_created.id]) + assert not files + assert file_created.id not in files, "File not found in vector store files" + + # attach file to vector store + vs_batch = await create_files_vector_store_and_poll(client, vs.id, [file_created.id]) + assert vs_batch + assert vs_batch.file_counts.completed == 1, "File not attached to vector store" + + # get vector store files by id + files = await get_vector_store_files_by_ids(client, vs.id, [file_created.id]) assert files assert file_created.id in files, "File not found in vector store files" + +@pytest.mark.asyncio +@pytest.mark.integration +@pytest.mark.vcr(filter_headers=["Authorization"]) +@patch("apify.Actor.log.debug", print_) +@patch("apify.Actor.log.exception", print_) +async def test_vector_store_delete(monkeypatch, vector_store_fixture, file_fixture) -> None: # type: ignore + """Vector store and file is created using fixture. Check that file is deleted from vector store""" + + vs = vector_store_fixture + file_created = file_fixture + + vs_batch = await create_files_vector_store_and_poll(client, vs.id, [file_created.id]) + assert vs_batch, "File not attached to vector store" + assert vs_batch.file_counts.completed == 1, "File not attached to vector store" + # delete files from vector store deleted_files = await delete_files_from_vector_store(client, vs.id, [file_created.id]) - assert len(deleted_files) == 1 + assert len(deleted_files) == 1, "File not deleted from vector store" assert deleted_files[0].deleted is True, "File not deleted from vector store" - time.sleep(1) + time.sleep(3) + # the file was deleted - it should not be in the vector store files = await get_vector_store_files_by_ids(client, vs.id, [file_created.id]) assert not files assert file_created.id not in files, "File not deleted from vector store"