Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: openai/openai-python
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.20.0
Choose a base ref
...
head repository: openai/openai-python
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.21.0
Choose a head ref
  • 2 commits
  • 78 files changed
  • 1 contributor

Commits on Apr 17, 2024

  1. Verified

    This commit was signed with the committer’s verified signature.
    baywet Vincent Biret
    Copy the full SHA
    5b20698 View commit details
  2. release: 1.21.0

    stainless-bot committed Apr 17, 2024

    Verified

    This commit was signed with the committer’s verified signature.
    baywet Vincent Biret
    Copy the full SHA
    ba3beaf View commit details
Showing with 4,841 additions and 1,308 deletions.
  1. +1 −1 .release-please-manifest.json
  2. +1 −1 .stats.yml
  3. +8 −0 CHANGELOG.md
  4. +15 −1 README.md
  5. +65 −40 api.md
  6. +21 −0 helpers.md
  7. +3 −2 pyproject.toml
  8. +10 −0 requirements-dev.lock
  9. +1 −1 src/openai/_version.py
  10. +14 −0 src/openai/resources/beta/__init__.py
  11. +181 −84 src/openai/resources/beta/{assistants → }/assistants.py
  12. +0 −33 src/openai/resources/beta/assistants/__init__.py
  13. +33 −1 src/openai/resources/beta/beta.py
  14. +24 −62 src/openai/resources/beta/threads/{messages → }/messages.py
  15. +0 −33 src/openai/resources/beta/threads/messages/__init__.py
  16. +0 −312 src/openai/resources/beta/threads/messages/files.py
  17. +72 −18 src/openai/resources/beta/threads/runs/runs.py
  18. +4 −4 src/openai/resources/beta/threads/runs/steps.py
  19. +162 −27 src/openai/resources/beta/threads/threads.py
  20. +47 −0 src/openai/resources/beta/vector_stores/__init__.py
  21. +739 −0 src/openai/resources/beta/vector_stores/file_batches.py
  22. +271 −81 src/openai/resources/beta/{assistants → vector_stores}/files.py
  23. +688 −0 src/openai/resources/beta/vector_stores/vector_stores.py
  24. +2 −2 src/openai/resources/fine_tuning/jobs/jobs.py
  25. +7 −2 src/openai/types/beta/__init__.py
  26. +35 −9 src/openai/types/beta/assistant.py
  27. +102 −9 src/openai/types/beta/assistant_create_params.py
  28. +2 −2 src/openai/types/beta/assistant_tool.py
  29. +1 −1 src/openai/types/beta/assistant_tool_choice.py
  30. +1 −1 src/openai/types/beta/assistant_tool_choice_param.py
  31. +2 −2 src/openai/types/beta/assistant_tool_param.py
  32. +72 −11 src/openai/types/beta/assistant_update_params.py
  33. +0 −8 src/openai/types/beta/assistants/__init__.py
  34. +0 −21 src/openai/types/beta/assistants/assistant_file.py
  35. +12 −0 src/openai/types/beta/file_search_tool.py
  36. +4 −4 src/openai/types/beta/{retrieval_tool_param.py → file_search_tool_param.py}
  37. +35 −2 src/openai/types/beta/thread.py
  38. +119 −11 src/openai/types/beta/thread_create_and_run_params.py
  39. +76 −8 src/openai/types/beta/thread_create_params.py
  40. +35 −2 src/openai/types/beta/thread_update_params.py
  41. +11 −8 src/openai/types/beta/threads/message.py
  42. +11 −9 src/openai/types/beta/threads/message_create_params.py
  43. +0 −7 src/openai/types/beta/threads/message_delta.py
  44. +0 −6 src/openai/types/beta/threads/messages/__init__.py
  45. +0 −25 src/openai/types/beta/threads/messages/message_file.py
  46. +3 −7 src/openai/types/beta/threads/run.py
  47. +17 −7 src/openai/types/beta/threads/run_create_params.py
  48. +2 −2 src/openai/types/beta/threads/runs/__init__.py
  49. +5 −5 src/openai/types/beta/threads/runs/{retrieval_tool_call.py → file_search_tool_call.py}
  50. +7 −7 src/openai/types/beta/threads/runs/{retrieval_tool_call_delta.py → file_search_tool_call_delta.py}
  51. +2 −2 src/openai/types/beta/threads/runs/tool_call.py
  52. +2 −2 src/openai/types/beta/threads/runs/tool_call_delta.py
  53. +1 −1 src/openai/types/beta/threads/runs/tool_call_delta_object.py
  54. +1 −1 src/openai/types/beta/threads/runs/tool_calls_step_details.py
  55. +79 −0 src/openai/types/beta/vector_store.py
  56. +42 −0 src/openai/types/beta/vector_store_create_params.py
  57. +7 −4 src/openai/types/beta/{retrieval_tool.py → vector_store_deleted.py}
  58. +2 −2 src/openai/types/beta/{assistants/file_list_params.py → vector_store_list_params.py}
  59. +35 −0 src/openai/types/beta/vector_store_update_params.py
  60. +11 −0 src/openai/types/beta/vector_stores/__init__.py
  61. +17 −0 src/openai/types/beta/vector_stores/file_batch_create_params.py
  62. +47 −0 src/openai/types/beta/vector_stores/file_batch_list_files_params.py
  63. +3 −3 src/openai/types/beta/{assistants → vector_stores}/file_create_params.py
  64. +7 −3 src/openai/types/beta/{threads/messages → vector_stores}/file_list_params.py
  65. +48 −0 src/openai/types/beta/vector_stores/vector_store_file.py
  66. +54 −0 src/openai/types/beta/vector_stores/vector_store_file_batch.py
  67. +3 −3 ...enai/types/beta/{assistants/file_delete_response.py → vector_stores/vector_store_file_deleted.py}
  68. +1 −1 src/openai/types/fine_tuning/job_create_params.py
  69. +44 −4 tests/api_resources/beta/test_assistants.py
  70. +352 −18 tests/api_resources/beta/test_threads.py
  71. +426 −0 tests/api_resources/beta/test_vector_stores.py
  72. +0 −1 tests/api_resources/beta/threads/messages/__init__.py
  73. +0 −263 tests/api_resources/beta/threads/messages/test_files.py
  74. +28 −2 tests/api_resources/beta/threads/test_messages.py
  75. +172 −12 tests/api_resources/beta/threads/test_runs.py
  76. 0 tests/api_resources/beta/{assistants → vector_stores}/__init__.py
  77. +424 −0 tests/api_resources/beta/vector_stores/test_file_batches.py
  78. +112 −107 tests/api_resources/beta/{assistants → vector_stores}/test_files.py
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.20.0"
".": "1.21.0"
}
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
configured_endpoints: 55
configured_endpoints: 62
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 1.21.0 (2024-04-17)

Full Changelog: [v1.20.0...v1.21.0](https://github.com/openai/openai-python/compare/v1.20.0...v1.21.0)

### Features

* **api:** add vector stores ([#1325](https://github.com/openai/openai-python/issues/1325)) ([038a3c5](https://github.com/openai/openai-python/commit/038a3c50db7b6a88f54ff1cd1ff6cbaef2caf87f))

## 1.20.0 (2024-04-16)

Full Changelog: [v1.19.0...v1.20.0](https://github.com/openai/openai-python/compare/v1.19.0...v1.20.0)
16 changes: 15 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -53,7 +53,7 @@ so that your API Key is not stored in source control.

### Polling Helpers

When interacting with the API some actions such as starting a Run may take time to complete. The SDK includes
When interacting with the API some actions such as starting a Run and adding files to vector stores are asynchronous and take time to complete. The SDK includes
helper functions which will poll the status until it reaches a terminal state and then return the resulting object.
If an API method results in an action which could benefit from polling there will be a corresponding version of the
method ending in '\_and_poll'.
@@ -69,6 +69,20 @@ run = client.beta.threads.runs.create_and_poll(

More information on the lifecycle of a Run can be found in the [Run Lifecycle Documentation](https://platform.openai.com/docs/assistants/how-it-works/run-lifecycle)

### Bulk Upload Helpers

When creating an interacting with vector stores, you can use the polling helpers to monitor the status of operations.
For convenience, we also provide a bulk upload helper to allow you to simultaneously upload several files at once.

```python
sample_files = [Path("sample-paper.pdf"), ...]

batch = await client.vector_stores.file_batches.upload_and_poll(
store.id,
files=sample_files,
)
```

### Streaming Helpers

The SDK also includes helpers to process streams and handle the incoming events.
105 changes: 65 additions & 40 deletions api.md
Original file line number Diff line number Diff line change
@@ -196,6 +196,59 @@ Methods:

# Beta

## VectorStores

Types:

```python
from openai.types.beta import VectorStore, VectorStoreDeleted
```

Methods:

- <code title="post /vector_stores">client.beta.vector_stores.<a href="./src/openai/resources/beta/vector_stores/vector_stores.py">create</a>(\*\*<a href="src/openai/types/beta/vector_store_create_params.py">params</a>) -> <a href="./src/openai/types/beta/vector_store.py">VectorStore</a></code>
- <code title="get /vector_stores/{vector_store_id}">client.beta.vector_stores.<a href="./src/openai/resources/beta/vector_stores/vector_stores.py">retrieve</a>(vector_store_id) -> <a href="./src/openai/types/beta/vector_store.py">VectorStore</a></code>
- <code title="post /vector_stores/{vector_store_id}">client.beta.vector_stores.<a href="./src/openai/resources/beta/vector_stores/vector_stores.py">update</a>(vector_store_id, \*\*<a href="src/openai/types/beta/vector_store_update_params.py">params</a>) -> <a href="./src/openai/types/beta/vector_store.py">VectorStore</a></code>
- <code title="get /vector_stores">client.beta.vector_stores.<a href="./src/openai/resources/beta/vector_stores/vector_stores.py">list</a>(\*\*<a href="src/openai/types/beta/vector_store_list_params.py">params</a>) -> <a href="./src/openai/types/beta/vector_store.py">SyncCursorPage[VectorStore]</a></code>
- <code title="delete /vector_stores/{vector_store_id}">client.beta.vector_stores.<a href="./src/openai/resources/beta/vector_stores/vector_stores.py">delete</a>(vector_store_id) -> <a href="./src/openai/types/beta/vector_store_deleted.py">VectorStoreDeleted</a></code>

### Files

Types:

```python
from openai.types.beta.vector_stores import VectorStoreFile, VectorStoreFileDeleted
```

Methods:

- <code title="post /vector_stores/{vector_store_id}/files">client.beta.vector_stores.files.<a href="./src/openai/resources/beta/vector_stores/files.py">create</a>(vector_store_id, \*\*<a href="src/openai/types/beta/vector_stores/file_create_params.py">params</a>) -> <a href="./src/openai/types/beta/vector_stores/vector_store_file.py">VectorStoreFile</a></code>
- <code title="get /vector_stores/{vector_store_id}/files/{file_id}">client.beta.vector_stores.files.<a href="./src/openai/resources/beta/vector_stores/files.py">retrieve</a>(file_id, \*, vector_store_id) -> <a href="./src/openai/types/beta/vector_stores/vector_store_file.py">VectorStoreFile</a></code>
- <code title="get /vector_stores/{vector_store_id}/files">client.beta.vector_stores.files.<a href="./src/openai/resources/beta/vector_stores/files.py">list</a>(vector_store_id, \*\*<a href="src/openai/types/beta/vector_stores/file_list_params.py">params</a>) -> <a href="./src/openai/types/beta/vector_stores/vector_store_file.py">SyncCursorPage[VectorStoreFile]</a></code>
- <code title="delete /vector_stores/{vector_store_id}/files/{file_id}">client.beta.vector_stores.files.<a href="./src/openai/resources/beta/vector_stores/files.py">delete</a>(file_id, \*, vector_store_id) -> <a href="./src/openai/types/beta/vector_stores/vector_store_file_deleted.py">VectorStoreFileDeleted</a></code>
- <code>client.beta.vector_stores.files.<a href="./src/openai/resources/beta/vector_stores/files.py">create_and_poll</a>(\*args) -> VectorStoreFile</code>
- <code>client.beta.vector_stores.files.<a href="./src/openai/resources/beta/vector_stores/files.py">poll</a>(\*args) -> VectorStoreFile</code>
- <code>client.beta.vector_stores.files.<a href="./src/openai/resources/beta/vector_stores/files.py">upload</a>(\*args) -> VectorStoreFile</code>
- <code>client.beta.vector_stores.files.<a href="./src/openai/resources/beta/vector_stores/files.py">upload_and_poll</a>(\*args) -> VectorStoreFile</code>

### FileBatches

Types:

```python
from openai.types.beta.vector_stores import VectorStoreFileBatch
```

Methods:

- <code title="post /vector_stores/{vector_store_id}/file_batches">client.beta.vector_stores.file_batches.<a href="./src/openai/resources/beta/vector_stores/file_batches.py">create</a>(vector_store_id, \*\*<a href="src/openai/types/beta/vector_stores/file_batch_create_params.py">params</a>) -> <a href="./src/openai/types/beta/vector_stores/vector_store_file_batch.py">VectorStoreFileBatch</a></code>
- <code title="get /vector_stores/{vector_store_id}/file_batches/{batch_id}">client.beta.vector_stores.file_batches.<a href="./src/openai/resources/beta/vector_stores/file_batches.py">retrieve</a>(batch_id, \*, vector_store_id) -> <a href="./src/openai/types/beta/vector_stores/vector_store_file_batch.py">VectorStoreFileBatch</a></code>
- <code title="post /vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel">client.beta.vector_stores.file_batches.<a href="./src/openai/resources/beta/vector_stores/file_batches.py">cancel</a>(batch_id, \*, vector_store_id) -> <a href="./src/openai/types/beta/vector_stores/vector_store_file_batch.py">VectorStoreFileBatch</a></code>
- <code title="get /vector_stores/{vector_store_id}/file_batches/{batch_id}/files">client.beta.vector_stores.file_batches.<a href="./src/openai/resources/beta/vector_stores/file_batches.py">list_files</a>(batch_id, \*, vector_store_id, \*\*<a href="src/openai/types/beta/vector_stores/file_batch_list_files_params.py">params</a>) -> <a href="./src/openai/types/beta/vector_stores/vector_store_file.py">SyncCursorPage[VectorStoreFile]</a></code>
- <code>client.beta.vector_stores.file_batches.<a href="./src/openai/resources/beta/vector_stores/file_batches.py">create_and_poll</a>(\*args) -> VectorStoreFileBatch</code>
- <code>client.beta.vector_stores.file_batches.<a href="./src/openai/resources/beta/vector_stores/file_batches.py">poll</a>(\*args) -> VectorStoreFileBatch</code>
- <code>client.beta.vector_stores.file_batches.<a href="./src/openai/resources/beta/vector_stores/file_batches.py">upload_and_poll</a>(\*args) -> VectorStoreFileBatch</code>

## Assistants

Types:
@@ -207,9 +260,9 @@ from openai.types.beta import (
AssistantStreamEvent,
AssistantTool,
CodeInterpreterTool,
FileSearchTool,
FunctionTool,
MessageStreamEvent,
RetrievalTool,
RunStepStreamEvent,
RunStreamEvent,
ThreadStreamEvent,
@@ -218,26 +271,11 @@ from openai.types.beta import (

Methods:

- <code title="post /assistants">client.beta.assistants.<a href="./src/openai/resources/beta/assistants/assistants.py">create</a>(\*\*<a href="src/openai/types/beta/assistant_create_params.py">params</a>) -> <a href="./src/openai/types/beta/assistant.py">Assistant</a></code>
- <code title="get /assistants/{assistant_id}">client.beta.assistants.<a href="./src/openai/resources/beta/assistants/assistants.py">retrieve</a>(assistant_id) -> <a href="./src/openai/types/beta/assistant.py">Assistant</a></code>
- <code title="post /assistants/{assistant_id}">client.beta.assistants.<a href="./src/openai/resources/beta/assistants/assistants.py">update</a>(assistant_id, \*\*<a href="src/openai/types/beta/assistant_update_params.py">params</a>) -> <a href="./src/openai/types/beta/assistant.py">Assistant</a></code>
- <code title="get /assistants">client.beta.assistants.<a href="./src/openai/resources/beta/assistants/assistants.py">list</a>(\*\*<a href="src/openai/types/beta/assistant_list_params.py">params</a>) -> <a href="./src/openai/types/beta/assistant.py">SyncCursorPage[Assistant]</a></code>
- <code title="delete /assistants/{assistant_id}">client.beta.assistants.<a href="./src/openai/resources/beta/assistants/assistants.py">delete</a>(assistant_id) -> <a href="./src/openai/types/beta/assistant_deleted.py">AssistantDeleted</a></code>

### Files

Types:

```python
from openai.types.beta.assistants import AssistantFile, FileDeleteResponse
```

Methods:

- <code title="post /assistants/{assistant_id}/files">client.beta.assistants.files.<a href="./src/openai/resources/beta/assistants/files.py">create</a>(assistant_id, \*\*<a href="src/openai/types/beta/assistants/file_create_params.py">params</a>) -> <a href="./src/openai/types/beta/assistants/assistant_file.py">AssistantFile</a></code>
- <code title="get /assistants/{assistant_id}/files/{file_id}">client.beta.assistants.files.<a href="./src/openai/resources/beta/assistants/files.py">retrieve</a>(file_id, \*, assistant_id) -> <a href="./src/openai/types/beta/assistants/assistant_file.py">AssistantFile</a></code>
- <code title="get /assistants/{assistant_id}/files">client.beta.assistants.files.<a href="./src/openai/resources/beta/assistants/files.py">list</a>(assistant_id, \*\*<a href="src/openai/types/beta/assistants/file_list_params.py">params</a>) -> <a href="./src/openai/types/beta/assistants/assistant_file.py">SyncCursorPage[AssistantFile]</a></code>
- <code title="delete /assistants/{assistant_id}/files/{file_id}">client.beta.assistants.files.<a href="./src/openai/resources/beta/assistants/files.py">delete</a>(file_id, \*, assistant_id) -> <a href="./src/openai/types/beta/assistants/file_delete_response.py">FileDeleteResponse</a></code>
- <code title="post /assistants">client.beta.assistants.<a href="./src/openai/resources/beta/assistants.py">create</a>(\*\*<a href="src/openai/types/beta/assistant_create_params.py">params</a>) -> <a href="./src/openai/types/beta/assistant.py">Assistant</a></code>
- <code title="get /assistants/{assistant_id}">client.beta.assistants.<a href="./src/openai/resources/beta/assistants.py">retrieve</a>(assistant_id) -> <a href="./src/openai/types/beta/assistant.py">Assistant</a></code>
- <code title="post /assistants/{assistant_id}">client.beta.assistants.<a href="./src/openai/resources/beta/assistants.py">update</a>(assistant_id, \*\*<a href="src/openai/types/beta/assistant_update_params.py">params</a>) -> <a href="./src/openai/types/beta/assistant.py">Assistant</a></code>
- <code title="get /assistants">client.beta.assistants.<a href="./src/openai/resources/beta/assistants.py">list</a>(\*\*<a href="src/openai/types/beta/assistant_list_params.py">params</a>) -> <a href="./src/openai/types/beta/assistant.py">SyncCursorPage[Assistant]</a></code>
- <code title="delete /assistants/{assistant_id}">client.beta.assistants.<a href="./src/openai/resources/beta/assistants.py">delete</a>(assistant_id) -> <a href="./src/openai/types/beta/assistant_deleted.py">AssistantDeleted</a></code>

## Threads

@@ -298,11 +336,11 @@ from openai.types.beta.threads.runs import (
CodeInterpreterOutputImage,
CodeInterpreterToolCall,
CodeInterpreterToolCallDelta,
FileSearchToolCall,
FileSearchToolCallDelta,
FunctionToolCall,
FunctionToolCallDelta,
MessageCreationStepDetails,
RetrievalToolCall,
RetrievalToolCallDelta,
RunStep,
RunStepDelta,
RunStepDeltaEvent,
@@ -350,23 +388,10 @@ from openai.types.beta.threads import (

Methods:

- <code title="post /threads/{thread_id}/messages">client.beta.threads.messages.<a href="./src/openai/resources/beta/threads/messages/messages.py">create</a>(thread_id, \*\*<a href="src/openai/types/beta/threads/message_create_params.py">params</a>) -> <a href="./src/openai/types/beta/threads/message.py">Message</a></code>
- <code title="get /threads/{thread_id}/messages/{message_id}">client.beta.threads.messages.<a href="./src/openai/resources/beta/threads/messages/messages.py">retrieve</a>(message_id, \*, thread_id) -> <a href="./src/openai/types/beta/threads/message.py">Message</a></code>
- <code title="post /threads/{thread_id}/messages/{message_id}">client.beta.threads.messages.<a href="./src/openai/resources/beta/threads/messages/messages.py">update</a>(message_id, \*, thread_id, \*\*<a href="src/openai/types/beta/threads/message_update_params.py">params</a>) -> <a href="./src/openai/types/beta/threads/message.py">Message</a></code>
- <code title="get /threads/{thread_id}/messages">client.beta.threads.messages.<a href="./src/openai/resources/beta/threads/messages/messages.py">list</a>(thread_id, \*\*<a href="src/openai/types/beta/threads/message_list_params.py">params</a>) -> <a href="./src/openai/types/beta/threads/message.py">SyncCursorPage[Message]</a></code>

#### Files

Types:

```python
from openai.types.beta.threads.messages import MessageFile
```

Methods:

- <code title="get /threads/{thread_id}/messages/{message_id}/files/{file_id}">client.beta.threads.messages.files.<a href="./src/openai/resources/beta/threads/messages/files.py">retrieve</a>(file_id, \*, thread_id, message_id) -> <a href="./src/openai/types/beta/threads/messages/message_file.py">MessageFile</a></code>
- <code title="get /threads/{thread_id}/messages/{message_id}/files">client.beta.threads.messages.files.<a href="./src/openai/resources/beta/threads/messages/files.py">list</a>(message_id, \*, thread_id, \*\*<a href="src/openai/types/beta/threads/messages/file_list_params.py">params</a>) -> <a href="./src/openai/types/beta/threads/messages/message_file.py">SyncCursorPage[MessageFile]</a></code>
- <code title="post /threads/{thread_id}/messages">client.beta.threads.messages.<a href="./src/openai/resources/beta/threads/messages.py">create</a>(thread_id, \*\*<a href="src/openai/types/beta/threads/message_create_params.py">params</a>) -> <a href="./src/openai/types/beta/threads/message.py">Message</a></code>
- <code title="get /threads/{thread_id}/messages/{message_id}">client.beta.threads.messages.<a href="./src/openai/resources/beta/threads/messages.py">retrieve</a>(message_id, \*, thread_id) -> <a href="./src/openai/types/beta/threads/message.py">Message</a></code>
- <code title="post /threads/{thread_id}/messages/{message_id}">client.beta.threads.messages.<a href="./src/openai/resources/beta/threads/messages.py">update</a>(message_id, \*, thread_id, \*\*<a href="src/openai/types/beta/threads/message_update_params.py">params</a>) -> <a href="./src/openai/types/beta/threads/message.py">Message</a></code>
- <code title="get /threads/{thread_id}/messages">client.beta.threads.messages.<a href="./src/openai/resources/beta/threads/messages.py">list</a>(thread_id, \*\*<a href="src/openai/types/beta/threads/message_list_params.py">params</a>) -> <a href="./src/openai/types/beta/threads/message.py">SyncCursorPage[Message]</a></code>

# Batches

21 changes: 21 additions & 0 deletions helpers.md
Original file line number Diff line number Diff line change
@@ -213,3 +213,24 @@ def get_final_messages(self) -> List[Message]

These methods are provided for convenience to collect information at the end of a stream. Calling these events
will trigger consumption of the stream until completion and then return the relevant accumulated objects.

# Polling Helpers

When interacting with the API some actions such as starting a Run and adding files to vector stores are asynchronous and take time to complete.
The SDK includes helper functions which will poll the status until it reaches a terminal state and then return the resulting object.
If an API method results in an action which could benefit from polling there will be a corresponding version of the
method ending in `_and_poll`.

All methods also allow you to set the polling frequency, how often the API is checked for an update, via a function argument (`poll_interval_ms`).

The polling methods are:

```python
client.beta.threads.create_and_run_poll(...)
client.beta.threads.runs.create_and_poll(...)
client.beta.threads.runs.submit_tool_ouptputs_and_poll(...)
client.beta.vector_stores.files.upload_and_poll(...)
client.beta.vector_stores.files.create_and_poll(...)
client.beta.vector_stores.file_batches.create_and_poll(...)
client.beta.vector_stores.file_batches.upload_and_poll(...)
```
5 changes: 3 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "openai"
version = "1.20.0"
version = "1.21.0"
description = "The official Python library for the openai API"
dynamic = ["readme"]
license = "Apache-2.0"
@@ -63,7 +63,8 @@ dev-dependencies = [
"inline-snapshot >=0.7.0",
"azure-identity >=1.14.1",
"types-tqdm > 4",
"types-pyaudio > 0"
"types-pyaudio > 0",
"trio >=0.22.2"
]

[tool.rye.scripts]
10 changes: 10 additions & 0 deletions requirements-dev.lock
Original file line number Diff line number Diff line change
@@ -18,7 +18,9 @@ argcomplete==3.1.2
asttokens==2.4.1
# via inline-snapshot
attrs==23.1.0
# via outcome
# via pytest
# via trio
azure-core==1.30.1
# via azure-identity
azure-identity==1.15.0
@@ -48,6 +50,7 @@ distro==1.8.0
# via openai
exceptiongroup==1.1.3
# via anyio
# via trio
executing==2.0.1
# via inline-snapshot
filelock==3.12.4
@@ -63,6 +66,7 @@ idna==3.4
# via anyio
# via httpx
# via requests
# via trio
importlib-metadata==7.0.0
iniconfig==2.0.0
# via pytest
@@ -83,6 +87,8 @@ numpy==1.26.3
# via openai
# via pandas
# via pandas-stubs
outcome==1.3.0.post0
# via trio
packaging==23.2
# via black
# via msal-extensions
@@ -136,6 +142,9 @@ sniffio==1.3.0
# via anyio
# via httpx
# via openai
# via trio
sortedcontainers==2.4.0
# via trio
time-machine==2.9.0
toml==0.10.2
# via inline-snapshot
@@ -145,6 +154,7 @@ tomli==2.0.1
# via pytest
tqdm==4.66.1
# via openai
trio==0.22.2
types-pyaudio==0.2.16.20240106
types-pytz==2024.1.0.20240203
# via pandas-stubs
2 changes: 1 addition & 1 deletion src/openai/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "openai"
__version__ = "1.20.0" # x-release-please-version
__version__ = "1.21.0" # x-release-please-version
14 changes: 14 additions & 0 deletions src/openai/resources/beta/__init__.py
Original file line number Diff line number Diff line change
@@ -24,8 +24,22 @@
AssistantsWithStreamingResponse,
AsyncAssistantsWithStreamingResponse,
)
from .vector_stores import (
VectorStores,
AsyncVectorStores,
VectorStoresWithRawResponse,
AsyncVectorStoresWithRawResponse,
VectorStoresWithStreamingResponse,
AsyncVectorStoresWithStreamingResponse,
)

__all__ = [
"VectorStores",
"AsyncVectorStores",
"VectorStoresWithRawResponse",
"AsyncVectorStoresWithRawResponse",
"VectorStoresWithStreamingResponse",
"AsyncVectorStoresWithStreamingResponse",
"Assistants",
"AsyncAssistants",
"AssistantsWithRawResponse",
Loading