OpenAI
OpenAI copied to clipboard
feat: WIP Assistants API, feedback requested
Is your feature request related to a problem? Please describe. Yeah, I'd like to be able to support the assistant features like threads, runs, and files with assistants API.
I have a PR to start to explore the possibilities here.
Six new API endpoints are exposed in the APIPath to support the assistants API.
static let assistants = "/v1/assistants"
static let threads = "/v1/threads"
static let runs = "/v1/threads/THREAD_ID/runs"
static let runRetrieve = "/v1/threads/THREAD_ID/runs/RUN_ID"
static let threadsMessages = "/v1/threads/THREAD_ID/messages"
static let files = "/v1/files"
The OpenAIProtocol
is modified as follows: added
func assistants(query: AssistantsQuery?, method: String, completion: @escaping (Result<AssistantsResult, Error>) -> Void)
func threads(query: ThreadsQuery, completion: @escaping (Result<ThreadsResult, Error>) -> Void)
func runs(threadId: String, query: RunsQuery, completion: @escaping (Result<RunsResult, Error>) -> Void)
func runRetrieve(threadId: String, runId:String, completion: @escaping (Result<RunRetreiveResult, Error>) -> Void)
func threadsMessages(threadId: String, before: String?, completion: @escaping (Result<ThreadsMessagesResult, Error>) -> Void)
func threadsAddMessage(threadId: String, query: ThreadAddMessageQuery, completion: @escaping (Result<ThreadAddMessageResult, Error>) -> Void)
func files(query: FilesQuery, completion: @escaping (Result<FilesResult, Error>) -> Void)
Assistants:
- [X] Create
- [x] Modify
- [x] Attach 1 file (PDF only currently)
- [x] Attach up to 10(20) files of all supported OpenAI types.
- [X] List assistants
- [x] Paging through assistants list
Tools can be passed to assistant creation.
- [X] Code Interpreter
- [X] Retrieval
- [x] Functions
Threads/Runs
- [X] Create Thread
- [X] Create Run
- [X] Retrieve Run
- [X] Add Message to Thread
- [X] Retrieve Threads Messages
Files
- [X] Upload
Example App:
A new demonstration of the assistants API and its requirements of the polling has been added to the Demo app.
-
Now you can create a new assistant on the Chats tab by selecting "+" -> New Assistant -> Fill in details -> OK. This should result in a "New Assistant" row being added to the chats, you can chat with your newly created assistant in this conversation.
-
You can now list your OpenAI API Assistants on the "Assistants" tab. Select "+" -> Get Assistants to load the assistants list.
- I've implemented the file upload and assistant creation with up to 1 PDF. (For now, will be fixed to add support for all of OpenAIs supported file types.)
Create Assistant
Chat with Assistant in thread
List assistants
Describe the solution you'd like Support for Assistants, Threads, Runs, Run Retrieval, Fetching messages from threads, and uploading files to OpenAI API.
Awesome! 😍😍😍 Will make a code review shortly! Thanks for your impressive work! 🔥🔥🔥 Let's make a PR into the main repository to be able to review everything, as you mentioned here, enable community cooperation in one place and use our CI pipeline? You can get acquainted with our Contribution Guidelines here. 😌
Hello, I am excited by this new PR. Any status/update with it?
Let me know if I can be any help.
@cdillard Amazing work, let me know if I can be of any help!
Opened PR: #140