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

Refactor types module #170

Merged
merged 18 commits into from
Jan 5, 2024
Merged

Refactor types module #170

merged 18 commits into from
Jan 5, 2024

Conversation

sharifhsn
Copy link
Contributor

Fixes #136

This PR organizes the types for each API endpoint into their own modules, matching the module structure in the base namespace.

Work that remains:

  • Factoring out modules in impls

Some open questions:

  • I maintained a flat namespace for the types using pub use to reduce churn. However, now that the types are properly modularized, I think it would be an improvement to remove pub use and access the types using module names instead. What do you think?

  • A few data structures are shared between chat, edit, and completion. As the latter two are deprecated and unlikely to be updated, I moved those data structures into chat to better express their future usage. Should they remain, or should they be moved into a common module?

@64bit
Copy link
Owner

64bit commented Jan 5, 2024

Hi @sharifhsn ,

Thank you for this PR, you have organized the code really well! So much less clutter - appreciate your work. Adding comments for macros is nice touch!

@64bit
Copy link
Owner

64bit commented Jan 5, 2024

Factoring out modules in impls

I think this is fine, otherwise it may get very fragmented. This can be revisited later if required.

I maintained a flat namespace for the types using pub use to reduce churn. However, now that the types are properly modularized, I think it would be an improvement to remove pub use and access the types using module names instead. What do you think?

I think flat namespace should be fine for now without over-modularizing.

A few data structures are shared between chat, edit, and completion. As the latter two are deprecated and unlikely to be updated, I moved those data structures into chat to better express their future usage. Should they remain, or should they be moved into a common module?

Your judgement here is reasonable - going with the current APIs and future usage and not with deprecated ones. Looks good to me in this PR

@64bit 64bit merged commit b5c83c0 into 64bit:main Jan 5, 2024
@sharifhsn sharifhsn deleted the types-refactor branch January 5, 2024 14:53
64bit added a commit that referenced this pull request Jan 8, 2024
* Update to Assistants example (#146)

* Update to Assistants example

* Update examples/assistants/src/main.rs

update api config for consistency and secutity

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* added assistant creation

* exit, deconstruct assistant, improved readme

---------

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* Add examples tool-call and tool-call-stream (#153)

* add names (#150)

* Link to openai-func-enums (#152)

* Link to openai-func-enums

* Link to openai-func-enums

* Update async-openai/README.md

---------

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* In memory files (#154)

* Added ability to use in-memory files (Bytes, vec[u8])

* Removed unnecessary trait impls

* Polished example

* Spec, readme, and crate description updates (#156)

* get latest spec

* update description

* add WASM

* WASM support on experiments branch

* chore: Release

* Make tool choice lower case (#158)

* Fix: post_form to be Sendable (#157)

* changed to allow Send.

* add simple tests for sendable

* fix test name

* chore: Release

* Add support for rustls-webpki-roots (#168)

* Refactor `types` module (#170)

* Document `impl_from!` macro

* Fix up `impl_from!` docs

* Documents `impl_default!` macro

* Document `impl_input!` macro

* Factor out types from `assistants` module in `types`

* Factor out `model`

* Factor out `audio`

* Factor out `image`

* Factor out `file`

* Factor out `fine_tune`

* Factor out `moderation`

* Factor out `edit`

* Factor out `fine_tuning`

* Factor out missed `DeleteModelResponse` into `model`

* Factor out `embedding`

* Factor out `chat`

* Factor out `completion` and eliminate `types`

* Satisfy clippy

---------

Co-authored-by: Sharif Haason <sharif.haason@gmail.com>

* Sync updates from Spec (#171)

* updates to doc comments and types

* deprecated

* update ChatCompletionFunctions to FunctionObject

* More type updates

* add logprobs field

* update from spec

* updated spec

* fixes suggested by cargo clippy

* add query param to list files (#172)

* chore: Release

* Optional model in ModifyAssistantRequest (#174)

All fields (including model) are optional in OpenAI API.

* fix duplicate import due to merge

* fix stream object

* bring back feature gates lost due to merge

* delete old types.rs

---------

Co-authored-by: Gravel Hill <120497873+Strange-Knoll@users.noreply.github.com>
Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>
Co-authored-by: Frank Fralick <frankfralick@gmail.com>
Co-authored-by: Sam F <43347795+Prosammer@users.noreply.github.com>
Co-authored-by: David Weis <dweis7@gmail.com>
Co-authored-by: yykt <yuuya.yk.katoh@prism.ricoh>
Co-authored-by: XTY <xutianyi1999@live.com>
Co-authored-by: sharif <61516383+sharifhsn@users.noreply.github.com>
Co-authored-by: Sharif Haason <sharif.haason@gmail.com>
Co-authored-by: Sebastian Sosa <37946988+CakeCrusher@users.noreply.github.com>
64bit added a commit that referenced this pull request Jan 31, 2024
* Update to Assistants example (#146)

* Update to Assistants example

* Update examples/assistants/src/main.rs

update api config for consistency and secutity

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* added assistant creation

* exit, deconstruct assistant, improved readme

---------

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* Add examples tool-call and tool-call-stream (#153)

* add names (#150)

* Link to openai-func-enums (#152)

* Link to openai-func-enums

* Link to openai-func-enums

* Update async-openai/README.md

---------

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* In memory files (#154)

* Added ability to use in-memory files (Bytes, vec[u8])

* Removed unnecessary trait impls

* Polished example

* Spec, readme, and crate description updates (#156)

* get latest spec

* update description

* add WASM

* WASM support on experiments branch

* chore: Release

* Make tool choice lower case (#158)

* Fix: post_form to be Sendable (#157)

* changed to allow Send.

* add simple tests for sendable

* fix test name

* chore: Release

* Add support for rustls-webpki-roots (#168)

* Refactor `types` module (#170)

* Document `impl_from!` macro

* Fix up `impl_from!` docs

* Documents `impl_default!` macro

* Document `impl_input!` macro

* Factor out types from `assistants` module in `types`

* Factor out `model`

* Factor out `audio`

* Factor out `image`

* Factor out `file`

* Factor out `fine_tune`

* Factor out `moderation`

* Factor out `edit`

* Factor out `fine_tuning`

* Factor out missed `DeleteModelResponse` into `model`

* Factor out `embedding`

* Factor out `chat`

* Factor out `completion` and eliminate `types`

* Satisfy clippy

---------

Co-authored-by: Sharif Haason <sharif.haason@gmail.com>

* Sync updates from Spec (#171)

* updates to doc comments and types

* deprecated

* update ChatCompletionFunctions to FunctionObject

* More type updates

* add logprobs field

* update from spec

* updated spec

* fixes suggested by cargo clippy

* add query param to list files (#172)

* chore: Release

* Optional model in ModifyAssistantRequest (#174)

All fields (including model) are optional in OpenAI API.

* update contribution guidelines (#182)

* update contribution guidelines

* fix link

* update

* consistency

* Code of conduct

* chore: Release

* fix file test by providing query param

* Added dimensions param to embedding request (#185)

* chore: Release

---------

Co-authored-by: Gravel Hill <120497873+Strange-Knoll@users.noreply.github.com>
Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>
Co-authored-by: Frank Fralick <frankfralick@gmail.com>
Co-authored-by: Sam F <43347795+Prosammer@users.noreply.github.com>
Co-authored-by: David Weis <dweis7@gmail.com>
Co-authored-by: yykt <yuuya.yk.katoh@prism.ricoh>
Co-authored-by: XTY <xutianyi1999@live.com>
Co-authored-by: sharif <61516383+sharifhsn@users.noreply.github.com>
Co-authored-by: Sharif Haason <sharif.haason@gmail.com>
Co-authored-by: Sebastian Sosa <37946988+CakeCrusher@users.noreply.github.com>
Co-authored-by: vmg-dev <121135566+vmg-dev@users.noreply.github.com>
64bit added a commit that referenced this pull request Apr 10, 2024
* Update to Assistants example (#146)

* Update to Assistants example

* Update examples/assistants/src/main.rs

update api config for consistency and secutity

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* added assistant creation

* exit, deconstruct assistant, improved readme

---------

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* Add examples tool-call and tool-call-stream (#153)

* add names (#150)

* Link to openai-func-enums (#152)

* Link to openai-func-enums

* Link to openai-func-enums

* Update async-openai/README.md

---------

Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>

* In memory files (#154)

* Added ability to use in-memory files (Bytes, vec[u8])

* Removed unnecessary trait impls

* Polished example

* Spec, readme, and crate description updates (#156)

* get latest spec

* update description

* add WASM

* WASM support on experiments branch

* chore: Release

* Make tool choice lower case (#158)

* Fix: post_form to be Sendable (#157)

* changed to allow Send.

* add simple tests for sendable

* fix test name

* chore: Release

* Add support for rustls-webpki-roots (#168)

* Refactor `types` module (#170)

* Document `impl_from!` macro

* Fix up `impl_from!` docs

* Documents `impl_default!` macro

* Document `impl_input!` macro

* Factor out types from `assistants` module in `types`

* Factor out `model`

* Factor out `audio`

* Factor out `image`

* Factor out `file`

* Factor out `fine_tune`

* Factor out `moderation`

* Factor out `edit`

* Factor out `fine_tuning`

* Factor out missed `DeleteModelResponse` into `model`

* Factor out `embedding`

* Factor out `chat`

* Factor out `completion` and eliminate `types`

* Satisfy clippy

---------

Co-authored-by: Sharif Haason <sharif.haason@gmail.com>

* Sync updates from Spec (#171)

* updates to doc comments and types

* deprecated

* update ChatCompletionFunctions to FunctionObject

* More type updates

* add logprobs field

* update from spec

* updated spec

* fixes suggested by cargo clippy

* add query param to list files (#172)

* chore: Release

* Optional model in ModifyAssistantRequest (#174)

All fields (including model) are optional in OpenAI API.

* update contribution guidelines (#182)

* update contribution guidelines

* fix link

* update

* consistency

* Code of conduct

* chore: Release

* fix file test by providing query param

* Added dimensions param to embedding request (#185)

* chore: Release

* fix: CreateTranscriptionRequest language field not convert (#188)

* chore: Release

* Add usage information to the run object (#195)

* Updates from Spec (#196)

* updates from spec

* remove Edits

* remove Fine-Tunes (was deprecated)

* update spec

* cargo fix

* cargo fmt

* chore: Release

* Add Client::build for full customizability during instantiation (#197)

* Change std::sleep to tokio's sleep (#200)

* chore: Release

* add support for base64 embeddings (#190)

* add support for base64 embeddings

* Base64Embedding is an implementation detail

* feat: separate Embeddings::create_base64 method

* chore: use newtype for hosting base64 decoding instead

* chore: remove unused error variant

* Add vision-chat example (#203)

Example matches quickstart from https://platform.openai.com/docs/guides/vision
It showcases struct derived from ChatCompletionRequestMessageContent

* Update Audio APIs from updated spec (#202)

* Implement CreateTranscriptRequest::response_granularities

This PR adds support for `AudioResponseFormat::VerboseJson` and
`TimestampGranularity`, including updated example code. These were
defined as types before, but not fully implemented.

Implements #201.

* Modify transcription API to be more like spec

- Rename `CreateTranscriptionRespose` to `CreateTranscriptionResponseJson` (to match API spec)
- Add `CreateTranscriptionResponseVerboseJson` and `transcribe_verbose_json`
- Add `transcribe_raw` for SRT output
- Add `post_form_raw`
- Update example code

* Upgrade dependencies: Rust crates in Cargo.toml (#204)

* upgrade reqwest

* update reqwest-eventsource

* cargo test working (#207)

* fix: cargo fmt and compiler warnings fixes (#208)

* cargo fmt

* fix imports

* chore: Release

* fixed problems due to code sync

* update worker dependency to resolve build issue

* update test to fix test compilation issue

* add conditional imports

* change default of InputSource and bring back builders of file-related structs

* update doc

---------

Co-authored-by: Gravel Hill <120497873+Strange-Knoll@users.noreply.github.com>
Co-authored-by: Himanshu Neema <himanshun.iitkgp@gmail.com>
Co-authored-by: Frank Fralick <frankfralick@gmail.com>
Co-authored-by: Sam F <43347795+Prosammer@users.noreply.github.com>
Co-authored-by: David Weis <dweis7@gmail.com>
Co-authored-by: yykt <yuuya.yk.katoh@prism.ricoh>
Co-authored-by: XTY <xutianyi1999@live.com>
Co-authored-by: sharif <61516383+sharifhsn@users.noreply.github.com>
Co-authored-by: Sharif Haason <sharif.haason@gmail.com>
Co-authored-by: Sebastian Sosa <37946988+CakeCrusher@users.noreply.github.com>
Co-authored-by: vmg-dev <121135566+vmg-dev@users.noreply.github.com>
Co-authored-by: TAO <38341571+Taoaozw@users.noreply.github.com>
Co-authored-by: turingbuilder <144046780+turingbuilder@users.noreply.github.com>
Co-authored-by: Gabriel Bianconi <1275491+GabrielBianconi@users.noreply.github.com>
Co-authored-by: Santhanagopalan Krishnamoorthy <santhanagopalan.krishnamoorthy@cuanschutz.edu>
Co-authored-by: Adrien Wald <adrien@genei.io>
Co-authored-by: Gabriel <Gabriel2409@users.noreply.github.com>
Co-authored-by: Eric Kidd <git@randomhacks.net>
Co-authored-by: Samuel Batissou Tiburcio <samuelbatissou@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Refactoring src/types/types.rs similar to src/types/assistants
2 participants