Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: WIP Assistants API, feedback requested #126

Open
15 tasks done
cdillard opened this issue Nov 17, 2023 · 4 comments · May be fixed by #140
Open
15 tasks done

feat: WIP Assistants API, feedback requested #126

cdillard opened this issue Nov 17, 2023 · 4 comments · May be fixed by #140
Labels
enhancement New feature or request

Comments

@cdillard
Copy link

cdillard commented Nov 17, 2023

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:

  • Create
  • Modify
  • Attach 1 file (PDF only currently)
    • Attach up to 10(20) files of all supported OpenAI types.
  • List assistants
    • Paging through assistants list

Tools can be passed to assistant creation.

  • Code Interpreter
  • Retrieval
  • Functions

Threads/Runs

  • Create Thread
  • Create Run
  • Retrieve Run
  • Add Message to Thread
  • Retrieve Threads Messages

Files

  • 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
createAssistant

Chat with Assistant in thread
chatThread

List assistants
listAssistants

Describe the solution you'd like
Support for Assistants, Threads, Runs, Run Retrieval, Fetching messages from threads, and uploading files to OpenAI API.

@ingvarus-bc
Copy link
Contributor

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. 😌

@morad
Copy link

morad commented Nov 21, 2023

Hello, I am excited by this new PR. Any status/update with it?

Let me know if I can be any help.

@philippzagar
Copy link
Contributor

@cdillard Amazing work, let me know if I can be of any help!

@cdillard
Copy link
Author

Opened PR: #140

@ingvarus-bc ingvarus-bc linked a pull request Feb 14, 2024 that will close this issue
15 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants