diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..ee914c4e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,96 @@ +name: CI +on: + push: + branches-ignore: + - 'generated' + - 'codegen/**' + - 'integrated/**' + - 'stl-preview-head/**' + - 'stl-preview-base/**' + pull_request: + branches-ignore: + - 'stl-preview-head/**' + - 'stl-preview-base/**' + +jobs: + lint: + timeout-minutes: 10 + name: lint + runs-on: ${{ github.repository == 'stainless-sdks/llama-stack-client-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + if: github.event_name == 'push' || github.event.pull_request.head.repo.fork + steps: + - uses: actions/checkout@v4 + + - name: Install Rye + run: | + curl -sSf https://rye.astral.sh/get | bash + echo "$HOME/.rye/shims" >> $GITHUB_PATH + env: + RYE_VERSION: '0.44.0' + RYE_INSTALL_OPTION: '--yes' + + - name: Install dependencies + run: rye sync --all-features + + - name: Run lints + run: ./scripts/lint + + build: + if: github.repository == 'stainless-sdks/llama-stack-client-python' && (github.event_name == 'push' || github.event.pull_request.head.repo.fork) + timeout-minutes: 10 + name: build + permissions: + contents: read + id-token: write + runs-on: depot-ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + + - name: Install Rye + run: | + curl -sSf https://rye.astral.sh/get | bash + echo "$HOME/.rye/shims" >> $GITHUB_PATH + env: + RYE_VERSION: '0.44.0' + RYE_INSTALL_OPTION: '--yes' + + - name: Install dependencies + run: rye sync --all-features + + - name: Run build + run: rye build + + - name: Get GitHub OIDC Token + id: github-oidc + uses: actions/github-script@v6 + with: + script: core.setOutput('github_token', await core.getIDToken()); + + - name: Upload tarball + env: + URL: https://pkg.stainless.com/s + AUTH: ${{ steps.github-oidc.outputs.github_token }} + SHA: ${{ github.sha }} + run: ./scripts/utils/upload-artifact.sh + + test: + timeout-minutes: 10 + name: test + runs-on: ${{ github.repository == 'stainless-sdks/llama-stack-client-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + if: github.event_name == 'push' || github.event.pull_request.head.repo.fork + steps: + - uses: actions/checkout@v4 + + - name: Install Rye + run: | + curl -sSf https://rye.astral.sh/get | bash + echo "$HOME/.rye/shims" >> $GITHUB_PATH + env: + RYE_VERSION: '0.44.0' + RYE_INSTALL_OPTION: '--yes' + + - name: Bootstrap + run: ./scripts/bootstrap + + - name: Run tests + run: ./scripts/test diff --git a/.gitignore b/.gitignore index 87797408..95ceb189 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .prism.log -.vscode _dev __pycache__ diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b3b5e583..ca1d94e3 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.0-alpha.4" + ".": "0.2.17" } diff --git a/.stats.yml b/.stats.yml index fe4493c0..bd77bef1 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 105 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-df7a19394e9124c18ec4e888e2856d22b5ebfd6fe6fe6e929ff6cfadb2ae7e2a.yml -openapi_spec_hash: 9428682672fdd7e2afee7af9ef849dc9 -config_hash: e1d37a77a6e8ca86fb6bccb4b0f172c9 +configured_endpoints: 106 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-f59f1c7d33001d60b5190f68aa49eacec90f05dbe694620b8916152c3922051d.yml +openapi_spec_hash: 804edd2e834493906dc430145402be3b +config_hash: de16e52db65de71ac35adcdb665a74f5 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..5b010307 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.analysis.importFormat": "relative", +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 587420a7..888d369a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,129 @@ # Changelog +## 0.2.17 (2025-08-06) + +Full Changelog: [v0.2.15...v0.2.17](https://github.com/llamastack/llama-stack-client-python/compare/v0.2.15...v0.2.17) + +### Features + +* **api:** update via SDK Studio ([9c69353](https://github.com/llamastack/llama-stack-client-python/commit/9c693530330ad5e2bb427ccfeb154ac993601e05)) +* **api:** update via SDK Studio ([5f90b04](https://github.com/llamastack/llama-stack-client-python/commit/5f90b04bd0b07cc20729551b88578ff322231723)) +* **api:** update via SDK Studio ([6e26309](https://github.com/llamastack/llama-stack-client-python/commit/6e26309d14cb0b0a0b5d43b7cbab56528b878fd9)) +* **api:** update via SDK Studio ([54ff3c4](https://github.com/llamastack/llama-stack-client-python/commit/54ff3c405af01ce068230990654b75d26967e745)) +* **api:** update via SDK Studio ([a34c823](https://github.com/llamastack/llama-stack-client-python/commit/a34c8230f8a3f6f356c4f990f66bb02eda229819)) +* **api:** update via SDK Studio ([f6b80ca](https://github.com/llamastack/llama-stack-client-python/commit/f6b80caaad58711957b7935f9b6833528ae3bd78)) +* **api:** update via SDK Studio ([2a4296d](https://github.com/llamastack/llama-stack-client-python/commit/2a4296d3df60787b4fc3fe2812d06d6080b0d6db)) +* **api:** update via SDK Studio ([07691ac](https://github.com/llamastack/llama-stack-client-python/commit/07691acac571ff68cd1ff90f9d60ac3e49b1e144)) +* **api:** update via SDK Studio ([585f9ce](https://github.com/llamastack/llama-stack-client-python/commit/585f9ce929e0ac17775febb573fa109d9f3d07ac)) +* **api:** update via SDK Studio ([6d609e3](https://github.com/llamastack/llama-stack-client-python/commit/6d609e3b9e31477fd540dff8c0ecb24bc9d524d1)) +* **api:** update via SDK Studio ([3dbf2a4](https://github.com/llamastack/llama-stack-client-python/commit/3dbf2a4f205d7199cd4d92a7f3f6a2ee5723cb71)) +* **api:** update via SDK Studio ([dd0ae96](https://github.com/llamastack/llama-stack-client-python/commit/dd0ae96300ce6d2940063a7b33c0948d250bbc5e)) +* **api:** update via SDK Studio ([80a2969](https://github.com/llamastack/llama-stack-client-python/commit/80a296977917382fa42b0def0c6bf1a66be45780)) +* **api:** update via SDK Studio ([748e6db](https://github.com/llamastack/llama-stack-client-python/commit/748e6db5002f1ec2c8880414b803d1cfc3ff95ea)) +* **api:** update via SDK Studio ([b6fa2b1](https://github.com/llamastack/llama-stack-client-python/commit/b6fa2b194bc4d66adcc40b5cc07404c45a211cd3)) +* **api:** update via SDK Studio ([e97f870](https://github.com/llamastack/llama-stack-client-python/commit/e97f870b037685af1e65d8d895a063ab2381dc81)) +* **api:** update via SDK Studio ([489b54d](https://github.com/llamastack/llama-stack-client-python/commit/489b54d7acfee41874e2fa253578d3e95f6b111a)) +* **api:** update via SDK Studio ([13cfa4a](https://github.com/llamastack/llama-stack-client-python/commit/13cfa4aa1f12b7369f1bc13c3dff8d4cea46a3f6)) +* **api:** update via SDK Studio ([25c1e49](https://github.com/llamastack/llama-stack-client-python/commit/25c1e49f503e15649e0cdc18b0ac8dd00c2dff7e)) +* **api:** update via SDK Studio ([4a54d61](https://github.com/llamastack/llama-stack-client-python/commit/4a54d613ee0a7ff7a561bc41db626aaea3c00096)) +* **api:** update via SDK Studio ([ac4614a](https://github.com/llamastack/llama-stack-client-python/commit/ac4614a70aa632a7bc55037aa777f0ab40ea908b)) +* **api:** update via SDK Studio ([a201e22](https://github.com/llamastack/llama-stack-client-python/commit/a201e22e2bad1b2290092784d4e2255eaaf73758)) +* **client:** support file upload requests ([e84459f](https://github.com/llamastack/llama-stack-client-python/commit/e84459fc65a28e68ed185d6dba28b559e6882b99)) +* **client:** support file upload requests ([6c73da7](https://github.com/llamastack/llama-stack-client-python/commit/6c73da7c97a558468296f1e8d6da5ba7ae9ea1c4)) + + +### Bug Fixes + +* **ci:** correct conditional ([d7c2ab8](https://github.com/llamastack/llama-stack-client-python/commit/d7c2ab87065aaade14a143113c90a0082ef35ee4)) +* **ci:** correct conditional ([4368fbd](https://github.com/llamastack/llama-stack-client-python/commit/4368fbd1f733cfda7a2d4273f0c983e44be63fe1)) +* **client:** don't send Content-Type header on GET requests ([d6a80a5](https://github.com/llamastack/llama-stack-client-python/commit/d6a80a5c38305c63494a9f8498e47ba0c0031295)) +* **client:** don't send Content-Type header on GET requests ([c6e0026](https://github.com/llamastack/llama-stack-client-python/commit/c6e0026218d4fde46e23663b55384bdf417fbcbf)) +* helptext for 'inspect version' and 'providers inspect' ([#8](https://github.com/llamastack/llama-stack-client-python/issues/8)) ([d79345e](https://github.com/llamastack/llama-stack-client-python/commit/d79345e42d6a3f3b828396b1ac00e2ecf196c0eb)) +* kill requirements.txt ([a6bd44c](https://github.com/llamastack/llama-stack-client-python/commit/a6bd44c5bdb9415a8cacd53b552b8b43e341d91c)) +* model register missing model-type and not accepting metadata ([#11](https://github.com/llamastack/llama-stack-client-python/issues/11)) ([f3f4515](https://github.com/llamastack/llama-stack-client-python/commit/f3f45155864379f227824d00f6febb1b46ed4839)) +* **parsing:** correctly handle nested discriminated unions ([9f95130](https://github.com/llamastack/llama-stack-client-python/commit/9f95130b77729d2adcf906355ddef41d109999d0)) +* **parsing:** correctly handle nested discriminated unions ([8b7e9ba](https://github.com/llamastack/llama-stack-client-python/commit/8b7e9ba42dbafb89d765f870d7874c86f47b2e7b)) +* **parsing:** ignore empty metadata ([a8a398f](https://github.com/llamastack/llama-stack-client-python/commit/a8a398fb7ca67117d3b7663354a406d1432fd8fb)) +* **parsing:** ignore empty metadata ([264f24c](https://github.com/llamastack/llama-stack-client-python/commit/264f24c9c564a0a5ea862418bfebb6c3cad01cf0)) +* **parsing:** parse extra field types ([f981bdc](https://github.com/llamastack/llama-stack-client-python/commit/f981bdc927411cb3b69febd578d39299dac27670)) +* **parsing:** parse extra field types ([d54c5db](https://github.com/llamastack/llama-stack-client-python/commit/d54c5db3df7b6e5dca66e8e7c855998c67d03250)) +* pre-commit formatting ([a83b1c3](https://github.com/llamastack/llama-stack-client-python/commit/a83b1c36b8acff7d7f762d0eab9d832a3320bcce)) +* update agent event logger ([#10](https://github.com/llamastack/llama-stack-client-python/issues/10)) ([0a10b70](https://github.com/llamastack/llama-stack-client-python/commit/0a10b70f91f28f533710433ae860789f2cb0f70f)) + + +### Chores + +* **ci:** change upload type ([7827103](https://github.com/llamastack/llama-stack-client-python/commit/78271038dcd35ea78fc2addf0676c4cdbea07a0e)) +* **ci:** change upload type ([5febc13](https://github.com/llamastack/llama-stack-client-python/commit/5febc136956ce6ac5af8e638a6fa430a9d0f3dc3)) +* **ci:** only run for pushes and fork pull requests ([03a7636](https://github.com/llamastack/llama-stack-client-python/commit/03a7636bce1974ef9be709cd6df395d687f0f22b)) +* **ci:** only run for pushes and fork pull requests ([c05df66](https://github.com/llamastack/llama-stack-client-python/commit/c05df6620f31a4860e11c5b94b3d7bf85fc9d197)) +* **ci:** only run for pushes and fork pull requests ([87c9d01](https://github.com/llamastack/llama-stack-client-python/commit/87c9d01fd4f8451882e1b936ba43375e20a56622)) +* **ci:** only run for pushes and fork pull requests ([9d04993](https://github.com/llamastack/llama-stack-client-python/commit/9d04993f6cc133f6ea6ca943d14a59e9b309938a)) +* **ci:** only run for pushes and fork pull requests ([4da7f49](https://github.com/llamastack/llama-stack-client-python/commit/4da7f495eb06d0cb386deeef3825c4876c64cbe2)) +* **ci:** only run for pushes and fork pull requests ([8b37cd3](https://github.com/llamastack/llama-stack-client-python/commit/8b37cd35c06ba045c25be9f6777b854bd9d9dbf8)) +* **ci:** only run for pushes and fork pull requests ([3f0a4b9](https://github.com/llamastack/llama-stack-client-python/commit/3f0a4b9ba82bd9db5ae9f854a2a775781eb75fd0)) +* **ci:** only run for pushes and fork pull requests ([8a1efad](https://github.com/llamastack/llama-stack-client-python/commit/8a1efade982126d1742c912069321ce7bd267bd8)) +* delete unused scripts based on rye ([dae6506](https://github.com/llamastack/llama-stack-client-python/commit/dae65069d31bc4d3e55c15f3f1848d00c35a75ce)) +* **internal:** bump pinned h11 dep ([4a7073f](https://github.com/llamastack/llama-stack-client-python/commit/4a7073f0e60aea8a2b7ec6d72b31fc9554234ef0)) +* **internal:** bump pinned h11 dep ([0568d6d](https://github.com/llamastack/llama-stack-client-python/commit/0568d6d078eab8f65ac191218d6467df9bfa7901)) +* **internal:** codegen related update ([4d4afec](https://github.com/llamastack/llama-stack-client-python/commit/4d4afec936a1e6b2f0bf96a5508fb54620c894e4)) +* **internal:** codegen related update ([7cd543f](https://github.com/llamastack/llama-stack-client-python/commit/7cd543f782490fe6ed5a90474114c1ef084a8b34)) +* **internal:** codegen related update ([3165cad](https://github.com/llamastack/llama-stack-client-python/commit/3165cad3251782f4bfe529d9bdde1f18b5813fc0)) +* **internal:** codegen related update ([c27a701](https://github.com/llamastack/llama-stack-client-python/commit/c27a7015e1627582e00de6c4f6cbc9df9da99c54)) +* **internal:** codegen related update ([aa45ba3](https://github.com/llamastack/llama-stack-client-python/commit/aa45ba35f7107e6278c45134f6130ffaf99eb20e)) +* **internal:** codegen related update ([5d6ccb5](https://github.com/llamastack/llama-stack-client-python/commit/5d6ccb56adf0cdeafd2d027ba2f897fd2f5c7070)) +* **internal:** fix ruff target version ([c50a0e0](https://github.com/llamastack/llama-stack-client-python/commit/c50a0e0ee44f97ee1ac8ac2a9e80860ae7b71a37)) +* **internal:** version bump ([5af7869](https://github.com/llamastack/llama-stack-client-python/commit/5af7869be75f6e577c57509c11e55a6dbbcdc4d8)) +* **internal:** version bump ([148be8d](https://github.com/llamastack/llama-stack-client-python/commit/148be8d37f92a77e553edd599ad4a5981642b40c)) +* **internal:** version bump ([86a0766](https://github.com/llamastack/llama-stack-client-python/commit/86a0766da6a2e282a2185b42530266aaa4c1a9ce)) +* **internal:** version bump ([5d6cc6b](https://github.com/llamastack/llama-stack-client-python/commit/5d6cc6be97ca098140575e65803d3d51ddc1e9ea)) +* **internal:** version bump ([cc7a519](https://github.com/llamastack/llama-stack-client-python/commit/cc7a51927110f8f4ef7309b9f6c92ace0434b24e)) +* **internal:** version bump ([8f15ef0](https://github.com/llamastack/llama-stack-client-python/commit/8f15ef01b12c88af245e477362f86785586b697f)) +* **internal:** version bump ([f52cb89](https://github.com/llamastack/llama-stack-client-python/commit/f52cb89e8a8d2e2b41155b6b5db2e700d85fcc29)) +* **internal:** version bump ([2e1a629](https://github.com/llamastack/llama-stack-client-python/commit/2e1a629e8d24c37031d8d853ec5e3d9200952934)) +* **internal:** version bump ([da26ed0](https://github.com/llamastack/llama-stack-client-python/commit/da26ed01f5ad7ff77d0b2166a0c282806a6d1aff)) +* **internal:** version bump ([3727fa5](https://github.com/llamastack/llama-stack-client-python/commit/3727fa5703c3e6cfc38fc963650cee1af23c6d68)) +* **internal:** version bump ([443ce02](https://github.com/llamastack/llama-stack-client-python/commit/443ce023733e06e1a83920727630ad4442aa2104)) +* **internal:** version bump ([b2875ec](https://github.com/llamastack/llama-stack-client-python/commit/b2875ecbe69976ccaeeafb7b6216b711a0214edb)) +* **internal:** version bump ([9a4320d](https://github.com/llamastack/llama-stack-client-python/commit/9a4320d7a4a81412a8657f23a9b8e3331770951a)) +* **internal:** version bump ([39155e5](https://github.com/llamastack/llama-stack-client-python/commit/39155e53bff8e0255b5c62e7aa3e9b801c719f96)) +* **internal:** version bump ([607c7be](https://github.com/llamastack/llama-stack-client-python/commit/607c7bea3d8e24d12069fa8a496380319badd71c)) +* **internal:** version bump ([62901e7](https://github.com/llamastack/llama-stack-client-python/commit/62901e7b3bb26956f28b2443508d59ab6bc926b4)) +* **internal:** version bump ([4132af9](https://github.com/llamastack/llama-stack-client-python/commit/4132af981fe9d59864c6f2d23258c893200355c1)) +* **internal:** version bump ([e6ae920](https://github.com/llamastack/llama-stack-client-python/commit/e6ae920385cf6a92f1f0623428a61e0325521e67)) +* **internal:** version bump ([96768dc](https://github.com/llamastack/llama-stack-client-python/commit/96768dc3db60936a960a9a46b9597df292a9e85e)) +* **internal:** version bump ([74f7eda](https://github.com/llamastack/llama-stack-client-python/commit/74f7eda7bf4a5d024bdeaf36a0f228d610134530)) +* **internal:** version bump ([d59862a](https://github.com/llamastack/llama-stack-client-python/commit/d59862a1bca2d31bf0f6cd0138bf2a1d804aad9d)) +* **internal:** version bump ([ce98414](https://github.com/llamastack/llama-stack-client-python/commit/ce98414b294a451ac67b9fcee045f28ecce7b408)) +* **internal:** version bump ([9746774](https://github.com/llamastack/llama-stack-client-python/commit/9746774316aed9a04b5ee161452df14e88f3e62c)) +* **internal:** version bump ([6114dbf](https://github.com/llamastack/llama-stack-client-python/commit/6114dbf530354a56539a16a49a7c314bf643fca7)) +* **internal:** version bump ([02c9953](https://github.com/llamastack/llama-stack-client-python/commit/02c9953a78c22d447d5a93b901a2684cce25ee3d)) +* **internal:** version bump ([16f2953](https://github.com/llamastack/llama-stack-client-python/commit/16f2953d3292c3787e28f5178d1d149d6c808258)) +* **internal:** version bump ([c32029b](https://github.com/llamastack/llama-stack-client-python/commit/c32029b26c4e10bba8378cbb61d6b2d7e6c3d10d)) +* **internal:** version bump ([aef5dee](https://github.com/llamastack/llama-stack-client-python/commit/aef5dee81270b6372479fbeb2257d42f487dfcf3)) +* **internal:** version bump ([590de6d](https://github.com/llamastack/llama-stack-client-python/commit/590de6d2ac748199b489c00fe8f79d9f8111a283)) +* **internal:** version bump ([072269f](https://github.com/llamastack/llama-stack-client-python/commit/072269f0c2421313a1ba7a9feb372a72cc5f5f0f)) +* **internal:** version bump ([eee6f0b](https://github.com/llamastack/llama-stack-client-python/commit/eee6f0b5cd146fc962d13da371e09e5abd66f05e)) +* **internal:** version bump ([e6a964e](https://github.com/llamastack/llama-stack-client-python/commit/e6a964e9970e5d4bbd9f3bb9dae959ce6488b3bf)) +* **package:** mark python 3.13 as supported ([2afc17b](https://github.com/llamastack/llama-stack-client-python/commit/2afc17ba76b498f6f0c975111bfd9456090d10b5)) +* **package:** mark python 3.13 as supported ([d1a4e40](https://github.com/llamastack/llama-stack-client-python/commit/d1a4e40ba6a6d1b0ecf7b84cff55a79a6c00b925)) +* **project:** add settings file for vscode ([405febd](https://github.com/llamastack/llama-stack-client-python/commit/405febd7158db4c129c854293a735c8c71712bc5)) +* **project:** add settings file for vscode ([1dd3e53](https://github.com/llamastack/llama-stack-client-python/commit/1dd3e5310f668e81d246f929e2bd6b216a4ac9ad)) +* **readme:** fix version rendering on pypi ([ca89c7f](https://github.com/llamastack/llama-stack-client-python/commit/ca89c7fb2e09ef52565f7de34068b3b4bbb575dc)) +* **readme:** fix version rendering on pypi ([193fb64](https://github.com/llamastack/llama-stack-client-python/commit/193fb64864ce57e9a488d9ee874cededeaad1eae)) +* update SDK settings ([2d422f9](https://github.com/llamastack/llama-stack-client-python/commit/2d422f92ee95364dc67c6557beafccde42ea11eb)) +* update SDK settings ([59b933c](https://github.com/llamastack/llama-stack-client-python/commit/59b933ca39e08b9a36669995b3b5424231df84f5)) +* update version ([10ef53e](https://github.com/llamastack/llama-stack-client-python/commit/10ef53e74dbdd72a8dd829957820e61522fbe6ad)) + + +### Build System + +* Bump version to 0.2.14 ([745a94e](https://github.com/llamastack/llama-stack-client-python/commit/745a94e1d2875c8e7b4fac5b1676b890aebf4915)) +* Bump version to 0.2.15 ([8700dc6](https://github.com/llamastack/llama-stack-client-python/commit/8700dc6ed9411d436422ee94af2702f10a96b49e)) +* Bump version to 0.2.15 ([4692024](https://github.com/llamastack/llama-stack-client-python/commit/46920241be5f8b921bbba367e65a7afa3aefd612)) +* Bump version to 0.2.16 ([6ce9b84](https://github.com/llamastack/llama-stack-client-python/commit/6ce9b84007967702f6844679604e1b812df864e4)) +* Bump version to 0.2.17 ([69f67ef](https://github.com/llamastack/llama-stack-client-python/commit/69f67ef77c9ca6ffc089a6d24261272aa2fee36f)) + ## 0.1.0-alpha.4 (2025-06-27) Full Changelog: [v0.1.0-alpha.3...v0.1.0-alpha.4](https://github.com/llamastack/llama-stack-client-python/compare/v0.1.0-alpha.3...v0.1.0-alpha.4) diff --git a/README.md b/README.md index 23e32f01..cb5c6237 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Llama Stack Client Python API library + [![PyPI version](https://img.shields.io/pypi/v/llama_stack_client.svg)](https://pypi.org/project/llama_stack_client/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/llama-stack-client)](https://pypi.org/project/llama-stack-client/) [![Discord](https://img.shields.io/discord/1257833999603335178)](https://discord.gg/llama-stack) diff --git a/api.md b/api.md index c7a7686b..e01851c1 100644 --- a/api.md +++ b/api.md @@ -453,6 +453,18 @@ Methods: - client.routes.list() -> RouteListResponse +# Moderations + +Types: + +```python +from llama_stack_client.types import CreateResponse +``` + +Methods: + +- client.moderations.create(\*\*params) -> CreateResponse + # Safety Types: diff --git a/pyproject.toml b/pyproject.toml index c25039a0..c784560b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "llama_stack_client" version = "0.2.17" description = "The official Python library for the llama-stack-client API" dynamic = ["readme"] -license = "Apache-2.0" +license = "MIT" authors = [{ name = "Meta Llama", email = "llama-oss@meta.com" }] dependencies = [ "httpx>=0.23.0, <1", @@ -27,13 +27,14 @@ classifiers = [ "Typing :: Typed", "Intended Audience :: Developers", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Operating System :: OS Independent", "Operating System :: POSIX", "Operating System :: MacOS", "Operating System :: POSIX :: Linux", "Operating System :: Microsoft :: Windows", "Topic :: Software Development :: Libraries :: Python Modules", - "License :: OSI Approved :: Apache Software License" + "License :: OSI Approved :: MIT License" ] [dependency-groups] @@ -52,8 +53,6 @@ dev = [ Homepage = "https://github.com/llamastack/llama-stack-client-python" Repository = "https://github.com/llamastack/llama-stack-client-python" - - [build-system] requires = ["hatchling==1.26.3", "hatch-fancy-pypi-readme"] build-backend = "hatchling.build" diff --git a/requirements-dev.lock b/requirements-dev.lock index 869ac57f..e1a5175a 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -48,15 +48,15 @@ filelock==3.12.4 frozenlist==1.6.2 # via aiohttp # via aiosignal -h11==0.14.0 +h11==0.16.0 # via httpcore -httpcore==1.0.2 +httpcore==1.0.9 # via httpx httpx==0.28.1 # via httpx-aiohttp # via llama-stack-client # via respx -httpx-aiohttp==0.1.6 +httpx-aiohttp==0.1.8 # via llama-stack-client idna==3.4 # via anyio diff --git a/requirements.lock b/requirements.lock index ac621298..098354a7 100644 --- a/requirements.lock +++ b/requirements.lock @@ -36,14 +36,14 @@ exceptiongroup==1.2.2 frozenlist==1.6.2 # via aiohttp # via aiosignal -h11==0.14.0 +h11==0.16.0 # via httpcore -httpcore==1.0.2 +httpcore==1.0.9 # via httpx httpx==0.28.1 # via httpx-aiohttp # via llama-stack-client -httpx-aiohttp==0.1.6 +httpx-aiohttp==0.1.8 # via llama-stack-client idna==3.4 # via anyio diff --git a/scripts/utils/upload-artifact.sh b/scripts/utils/upload-artifact.sh index f6c7413b..8593351a 100755 --- a/scripts/utils/upload-artifact.sh +++ b/scripts/utils/upload-artifact.sh @@ -1,7 +1,9 @@ #!/usr/bin/env bash set -exuo pipefail -RESPONSE=$(curl -X POST "$URL" \ +FILENAME=$(basename dist/*.whl) + +RESPONSE=$(curl -X POST "$URL?filename=$FILENAME" \ -H "Authorization: Bearer $AUTH" \ -H "Content-Type: application/json") @@ -12,13 +14,13 @@ if [[ "$SIGNED_URL" == "null" ]]; then exit 1 fi -UPLOAD_RESPONSE=$(tar -cz . | curl -v -X PUT \ - -H "Content-Type: application/gzip" \ - --data-binary @- "$SIGNED_URL" 2>&1) +UPLOAD_RESPONSE=$(curl -v -X PUT \ + -H "Content-Type: binary/octet-stream" \ + --data-binary "@dist/$FILENAME" "$SIGNED_URL" 2>&1) if echo "$UPLOAD_RESPONSE" | grep -q "HTTP/[0-9.]* 200"; then echo -e "\033[32mUploaded build to Stainless storage.\033[0m" - echo -e "\033[32mInstallation: pip install --pre 'https://pkg.stainless.com/s/llama-stack-client-python/$SHA'\033[0m" + echo -e "\033[32mInstallation: pip install 'https://pkg.stainless.com/s/llama-stack-client-python/$SHA/$FILENAME'\033[0m" else echo -e "\033[31mFailed to upload artifact.\033[0m" exit 1 diff --git a/src/llama_stack_client/_base_client.py b/src/llama_stack_client/_base_client.py index a0bbc468..b5e326e9 100644 --- a/src/llama_stack_client/_base_client.py +++ b/src/llama_stack_client/_base_client.py @@ -529,6 +529,18 @@ def _build_request( # work around https://github.com/encode/httpx/discussions/2880 kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")} + is_body_allowed = options.method.lower() != "get" + + if is_body_allowed: + if isinstance(json_data, bytes): + kwargs["content"] = json_data + else: + kwargs["json"] = json_data if is_given(json_data) else None + kwargs["files"] = files + else: + headers.pop("Content-Type", None) + kwargs.pop("data", None) + # TODO: report this error to httpx return self._client.build_request( # pyright: ignore[reportUnknownMemberType] headers=headers, @@ -540,8 +552,6 @@ def _build_request( # so that passing a `TypedDict` doesn't cause an error. # https://github.com/microsoft/pyright/issues/3526#event-6715453066 params=self.qs.stringify(cast(Mapping[str, Any], params)) if params else None, - json=json_data if is_given(json_data) else None, - files=files, **kwargs, ) diff --git a/src/llama_stack_client/_client.py b/src/llama_stack_client/_client.py index b2f7110e..a479a9b3 100644 --- a/src/llama_stack_client/_client.py +++ b/src/llama_stack_client/_client.py @@ -41,6 +41,7 @@ toolgroups, vector_dbs, completions, + moderations, scoring_functions, synthetic_data_generation, ) @@ -91,6 +92,7 @@ class LlamaStackClient(SyncAPIClient): post_training: post_training.PostTrainingResource providers: providers.ProvidersResource routes: routes.RoutesResource + moderations: moderations.ModerationsResource safety: safety.SafetyResource shields: shields.ShieldsResource synthetic_data_generation: synthetic_data_generation.SyntheticDataGenerationResource @@ -177,6 +179,7 @@ def __init__( self.post_training = post_training.PostTrainingResource(self) self.providers = providers.ProvidersResource(self) self.routes = routes.RoutesResource(self) + self.moderations = moderations.ModerationsResource(self) self.safety = safety.SafetyResource(self) self.shields = shields.ShieldsResource(self) self.synthetic_data_generation = synthetic_data_generation.SyntheticDataGenerationResource(self) @@ -315,6 +318,7 @@ class AsyncLlamaStackClient(AsyncAPIClient): post_training: post_training.AsyncPostTrainingResource providers: providers.AsyncProvidersResource routes: routes.AsyncRoutesResource + moderations: moderations.AsyncModerationsResource safety: safety.AsyncSafetyResource shields: shields.AsyncShieldsResource synthetic_data_generation: synthetic_data_generation.AsyncSyntheticDataGenerationResource @@ -401,6 +405,7 @@ def __init__( self.post_training = post_training.AsyncPostTrainingResource(self) self.providers = providers.AsyncProvidersResource(self) self.routes = routes.AsyncRoutesResource(self) + self.moderations = moderations.AsyncModerationsResource(self) self.safety = safety.AsyncSafetyResource(self) self.shields = shields.AsyncShieldsResource(self) self.synthetic_data_generation = synthetic_data_generation.AsyncSyntheticDataGenerationResource(self) @@ -540,6 +545,7 @@ def __init__(self, client: LlamaStackClient) -> None: self.post_training = post_training.PostTrainingResourceWithRawResponse(client.post_training) self.providers = providers.ProvidersResourceWithRawResponse(client.providers) self.routes = routes.RoutesResourceWithRawResponse(client.routes) + self.moderations = moderations.ModerationsResourceWithRawResponse(client.moderations) self.safety = safety.SafetyResourceWithRawResponse(client.safety) self.shields = shields.ShieldsResourceWithRawResponse(client.shields) self.synthetic_data_generation = synthetic_data_generation.SyntheticDataGenerationResourceWithRawResponse( @@ -573,6 +579,7 @@ def __init__(self, client: AsyncLlamaStackClient) -> None: self.post_training = post_training.AsyncPostTrainingResourceWithRawResponse(client.post_training) self.providers = providers.AsyncProvidersResourceWithRawResponse(client.providers) self.routes = routes.AsyncRoutesResourceWithRawResponse(client.routes) + self.moderations = moderations.AsyncModerationsResourceWithRawResponse(client.moderations) self.safety = safety.AsyncSafetyResourceWithRawResponse(client.safety) self.shields = shields.AsyncShieldsResourceWithRawResponse(client.shields) self.synthetic_data_generation = synthetic_data_generation.AsyncSyntheticDataGenerationResourceWithRawResponse( @@ -608,6 +615,7 @@ def __init__(self, client: LlamaStackClient) -> None: self.post_training = post_training.PostTrainingResourceWithStreamingResponse(client.post_training) self.providers = providers.ProvidersResourceWithStreamingResponse(client.providers) self.routes = routes.RoutesResourceWithStreamingResponse(client.routes) + self.moderations = moderations.ModerationsResourceWithStreamingResponse(client.moderations) self.safety = safety.SafetyResourceWithStreamingResponse(client.safety) self.shields = shields.ShieldsResourceWithStreamingResponse(client.shields) self.synthetic_data_generation = synthetic_data_generation.SyntheticDataGenerationResourceWithStreamingResponse( @@ -643,6 +651,7 @@ def __init__(self, client: AsyncLlamaStackClient) -> None: self.post_training = post_training.AsyncPostTrainingResourceWithStreamingResponse(client.post_training) self.providers = providers.AsyncProvidersResourceWithStreamingResponse(client.providers) self.routes = routes.AsyncRoutesResourceWithStreamingResponse(client.routes) + self.moderations = moderations.AsyncModerationsResourceWithStreamingResponse(client.moderations) self.safety = safety.AsyncSafetyResourceWithStreamingResponse(client.safety) self.shields = shields.AsyncShieldsResourceWithStreamingResponse(client.shields) self.synthetic_data_generation = ( diff --git a/src/llama_stack_client/_files.py b/src/llama_stack_client/_files.py index 45f57c0a..035a1144 100644 --- a/src/llama_stack_client/_files.py +++ b/src/llama_stack_client/_files.py @@ -69,12 +69,12 @@ def _transform_file(file: FileTypes) -> HttpxFileTypes: return file if is_tuple_t(file): - return (file[0], _read_file_content(file[1]), *file[2:]) + return (file[0], read_file_content(file[1]), *file[2:]) raise TypeError(f"Expected file types input to be a FileContent type or to be a tuple") -def _read_file_content(file: FileContent) -> HttpxFileContent: +def read_file_content(file: FileContent) -> HttpxFileContent: if isinstance(file, os.PathLike): return pathlib.Path(file).read_bytes() return file @@ -111,12 +111,12 @@ async def _async_transform_file(file: FileTypes) -> HttpxFileTypes: return file if is_tuple_t(file): - return (file[0], await _async_read_file_content(file[1]), *file[2:]) + return (file[0], await async_read_file_content(file[1]), *file[2:]) raise TypeError(f"Expected file types input to be a FileContent type or to be a tuple") -async def _async_read_file_content(file: FileContent) -> HttpxFileContent: +async def async_read_file_content(file: FileContent) -> HttpxFileContent: if isinstance(file, os.PathLike): return await anyio.Path(file).read_bytes() diff --git a/src/llama_stack_client/_models.py b/src/llama_stack_client/_models.py index 4f214980..b8387ce9 100644 --- a/src/llama_stack_client/_models.py +++ b/src/llama_stack_client/_models.py @@ -2,9 +2,10 @@ import os import inspect -from typing import TYPE_CHECKING, Any, Type, Union, Generic, TypeVar, Callable, cast +from typing import TYPE_CHECKING, Any, Type, Union, Generic, TypeVar, Callable, Optional, cast from datetime import date, datetime from typing_extensions import ( + List, Unpack, Literal, ClassVar, @@ -207,14 +208,18 @@ def construct( # pyright: ignore[reportIncompatibleMethodOverride] else: fields_values[name] = field_get_default(field) + extra_field_type = _get_extra_fields_type(__cls) + _extra = {} for key, value in values.items(): if key not in model_fields: + parsed = construct_type(value=value, type_=extra_field_type) if extra_field_type is not None else value + if PYDANTIC_V2: - _extra[key] = value + _extra[key] = parsed else: _fields_set.add(key) - fields_values[key] = value + fields_values[key] = parsed object.__setattr__(m, "__dict__", fields_values) @@ -366,7 +371,24 @@ def _construct_field(value: object, field: FieldInfo, key: str) -> object: if type_ is None: raise RuntimeError(f"Unexpected field type is None for {key}") - return construct_type(value=value, type_=type_) + return construct_type(value=value, type_=type_, metadata=getattr(field, "metadata", None)) + + +def _get_extra_fields_type(cls: type[pydantic.BaseModel]) -> type | None: + if not PYDANTIC_V2: + # TODO + return None + + schema = cls.__pydantic_core_schema__ + if schema["type"] == "model": + fields = schema["schema"] + if fields["type"] == "model-fields": + extras = fields.get("extras_schema") + if extras and "cls" in extras: + # mypy can't narrow the type + return extras["cls"] # type: ignore[no-any-return] + + return None def is_basemodel(type_: type) -> bool: @@ -420,7 +442,7 @@ def construct_type_unchecked(*, value: object, type_: type[_T]) -> _T: return cast(_T, construct_type(value=value, type_=type_)) -def construct_type(*, value: object, type_: object) -> object: +def construct_type(*, value: object, type_: object, metadata: Optional[List[Any]] = None) -> object: """Loose coercion to the expected type with construction of nested values. If the given value does not match the expected type then it is returned as-is. @@ -438,8 +460,10 @@ def construct_type(*, value: object, type_: object) -> object: type_ = type_.__value__ # type: ignore[unreachable] # unwrap `Annotated[T, ...]` -> `T` - if is_annotated_type(type_): - meta: tuple[Any, ...] = get_args(type_)[1:] + if metadata is not None and len(metadata) > 0: + meta: tuple[Any, ...] = tuple(metadata) + elif is_annotated_type(type_): + meta = get_args(type_)[1:] type_ = extract_type_arg(type_, 0) else: meta = tuple() diff --git a/src/llama_stack_client/resources/__init__.py b/src/llama_stack_client/resources/__init__.py index 23f61be1..01e17f57 100644 --- a/src/llama_stack_client/resources/__init__.py +++ b/src/llama_stack_client/resources/__init__.py @@ -176,6 +176,14 @@ CompletionsResourceWithStreamingResponse, AsyncCompletionsResourceWithStreamingResponse, ) +from .moderations import ( + ModerationsResource, + AsyncModerationsResource, + ModerationsResourceWithRawResponse, + AsyncModerationsResourceWithRawResponse, + ModerationsResourceWithStreamingResponse, + AsyncModerationsResourceWithStreamingResponse, +) from .tool_runtime import ( ToolRuntimeResource, AsyncToolRuntimeResource, @@ -332,6 +340,12 @@ "AsyncRoutesResourceWithRawResponse", "RoutesResourceWithStreamingResponse", "AsyncRoutesResourceWithStreamingResponse", + "ModerationsResource", + "AsyncModerationsResource", + "ModerationsResourceWithRawResponse", + "AsyncModerationsResourceWithRawResponse", + "ModerationsResourceWithStreamingResponse", + "AsyncModerationsResourceWithStreamingResponse", "SafetyResource", "AsyncSafetyResource", "SafetyResourceWithRawResponse", diff --git a/src/llama_stack_client/resources/inference.py b/src/llama_stack_client/resources/inference.py index 84a8dd96..7aec2dbd 100644 --- a/src/llama_stack_client/resources/inference.py +++ b/src/llama_stack_client/resources/inference.py @@ -2,6 +2,7 @@ from __future__ import annotations +import typing_extensions from typing import List, Union, Iterable from typing_extensions import Literal, overload @@ -183,6 +184,9 @@ def batch_completion( cast_to=BatchCompletion, ) + @typing_extensions.deprecated( + "/v1/inference/chat-completion is deprecated. Please use /v1/openai/v1/chat/completions." + ) @overload def chat_completion( self, @@ -251,6 +255,9 @@ def chat_completion( """ ... + @typing_extensions.deprecated( + "/v1/inference/chat-completion is deprecated. Please use /v1/openai/v1/chat/completions." + ) @overload def chat_completion( self, @@ -319,6 +326,9 @@ def chat_completion( """ ... + @typing_extensions.deprecated( + "/v1/inference/chat-completion is deprecated. Please use /v1/openai/v1/chat/completions." + ) @overload def chat_completion( self, @@ -387,6 +397,9 @@ def chat_completion( """ ... + @typing_extensions.deprecated( + "/v1/inference/chat-completion is deprecated. Please use /v1/openai/v1/chat/completions." + ) @required_args(["messages", "model_id"], ["messages", "model_id", "stream"]) def chat_completion( self, @@ -437,6 +450,7 @@ def chat_completion( stream_cls=Stream[ChatCompletionResponseStreamChunk], ) + @typing_extensions.deprecated("/v1/inference/completion is deprecated. Please use /v1/openai/v1/completions.") @overload def completion( self, @@ -483,6 +497,7 @@ def completion( """ ... + @typing_extensions.deprecated("/v1/inference/completion is deprecated. Please use /v1/openai/v1/completions.") @overload def completion( self, @@ -529,6 +544,7 @@ def completion( """ ... + @typing_extensions.deprecated("/v1/inference/completion is deprecated. Please use /v1/openai/v1/completions.") @overload def completion( self, @@ -575,6 +591,7 @@ def completion( """ ... + @typing_extensions.deprecated("/v1/inference/completion is deprecated. Please use /v1/openai/v1/completions.") @required_args(["content", "model_id"], ["content", "model_id", "stream"]) def completion( self, @@ -617,6 +634,7 @@ def completion( stream_cls=Stream[CompletionResponse], ) + @typing_extensions.deprecated("/v1/inference/embeddings is deprecated. Please use /v1/openai/v1/embeddings.") def embeddings( self, *, @@ -821,6 +839,9 @@ async def batch_completion( cast_to=BatchCompletion, ) + @typing_extensions.deprecated( + "/v1/inference/chat-completion is deprecated. Please use /v1/openai/v1/chat/completions." + ) @overload async def chat_completion( self, @@ -889,6 +910,9 @@ async def chat_completion( """ ... + @typing_extensions.deprecated( + "/v1/inference/chat-completion is deprecated. Please use /v1/openai/v1/chat/completions." + ) @overload async def chat_completion( self, @@ -957,6 +981,9 @@ async def chat_completion( """ ... + @typing_extensions.deprecated( + "/v1/inference/chat-completion is deprecated. Please use /v1/openai/v1/chat/completions." + ) @overload async def chat_completion( self, @@ -1025,6 +1052,9 @@ async def chat_completion( """ ... + @typing_extensions.deprecated( + "/v1/inference/chat-completion is deprecated. Please use /v1/openai/v1/chat/completions." + ) @required_args(["messages", "model_id"], ["messages", "model_id", "stream"]) async def chat_completion( self, @@ -1075,6 +1105,7 @@ async def chat_completion( stream_cls=AsyncStream[ChatCompletionResponseStreamChunk], ) + @typing_extensions.deprecated("/v1/inference/completion is deprecated. Please use /v1/openai/v1/completions.") @overload async def completion( self, @@ -1121,6 +1152,7 @@ async def completion( """ ... + @typing_extensions.deprecated("/v1/inference/completion is deprecated. Please use /v1/openai/v1/completions.") @overload async def completion( self, @@ -1167,6 +1199,7 @@ async def completion( """ ... + @typing_extensions.deprecated("/v1/inference/completion is deprecated. Please use /v1/openai/v1/completions.") @overload async def completion( self, @@ -1213,6 +1246,7 @@ async def completion( """ ... + @typing_extensions.deprecated("/v1/inference/completion is deprecated. Please use /v1/openai/v1/completions.") @required_args(["content", "model_id"], ["content", "model_id", "stream"]) async def completion( self, @@ -1255,6 +1289,7 @@ async def completion( stream_cls=AsyncStream[CompletionResponse], ) + @typing_extensions.deprecated("/v1/inference/embeddings is deprecated. Please use /v1/openai/v1/embeddings.") async def embeddings( self, *, @@ -1327,14 +1362,20 @@ def __init__(self, inference: InferenceResource) -> None: self.batch_completion = to_raw_response_wrapper( inference.batch_completion, ) - self.chat_completion = to_raw_response_wrapper( - inference.chat_completion, + self.chat_completion = ( # pyright: ignore[reportDeprecated] + to_raw_response_wrapper( + inference.chat_completion # pyright: ignore[reportDeprecated], + ) ) - self.completion = to_raw_response_wrapper( - inference.completion, + self.completion = ( # pyright: ignore[reportDeprecated] + to_raw_response_wrapper( + inference.completion # pyright: ignore[reportDeprecated], + ) ) - self.embeddings = to_raw_response_wrapper( - inference.embeddings, + self.embeddings = ( # pyright: ignore[reportDeprecated] + to_raw_response_wrapper( + inference.embeddings # pyright: ignore[reportDeprecated], + ) ) @@ -1348,14 +1389,20 @@ def __init__(self, inference: AsyncInferenceResource) -> None: self.batch_completion = async_to_raw_response_wrapper( inference.batch_completion, ) - self.chat_completion = async_to_raw_response_wrapper( - inference.chat_completion, + self.chat_completion = ( # pyright: ignore[reportDeprecated] + async_to_raw_response_wrapper( + inference.chat_completion # pyright: ignore[reportDeprecated], + ) ) - self.completion = async_to_raw_response_wrapper( - inference.completion, + self.completion = ( # pyright: ignore[reportDeprecated] + async_to_raw_response_wrapper( + inference.completion # pyright: ignore[reportDeprecated], + ) ) - self.embeddings = async_to_raw_response_wrapper( - inference.embeddings, + self.embeddings = ( # pyright: ignore[reportDeprecated] + async_to_raw_response_wrapper( + inference.embeddings # pyright: ignore[reportDeprecated], + ) ) @@ -1369,14 +1416,20 @@ def __init__(self, inference: InferenceResource) -> None: self.batch_completion = to_streamed_response_wrapper( inference.batch_completion, ) - self.chat_completion = to_streamed_response_wrapper( - inference.chat_completion, + self.chat_completion = ( # pyright: ignore[reportDeprecated] + to_streamed_response_wrapper( + inference.chat_completion # pyright: ignore[reportDeprecated], + ) ) - self.completion = to_streamed_response_wrapper( - inference.completion, + self.completion = ( # pyright: ignore[reportDeprecated] + to_streamed_response_wrapper( + inference.completion # pyright: ignore[reportDeprecated], + ) ) - self.embeddings = to_streamed_response_wrapper( - inference.embeddings, + self.embeddings = ( # pyright: ignore[reportDeprecated] + to_streamed_response_wrapper( + inference.embeddings # pyright: ignore[reportDeprecated], + ) ) @@ -1390,12 +1443,18 @@ def __init__(self, inference: AsyncInferenceResource) -> None: self.batch_completion = async_to_streamed_response_wrapper( inference.batch_completion, ) - self.chat_completion = async_to_streamed_response_wrapper( - inference.chat_completion, + self.chat_completion = ( # pyright: ignore[reportDeprecated] + async_to_streamed_response_wrapper( + inference.chat_completion # pyright: ignore[reportDeprecated], + ) ) - self.completion = async_to_streamed_response_wrapper( - inference.completion, + self.completion = ( # pyright: ignore[reportDeprecated] + async_to_streamed_response_wrapper( + inference.completion # pyright: ignore[reportDeprecated], + ) ) - self.embeddings = async_to_streamed_response_wrapper( - inference.embeddings, + self.embeddings = ( # pyright: ignore[reportDeprecated] + async_to_streamed_response_wrapper( + inference.embeddings # pyright: ignore[reportDeprecated], + ) ) diff --git a/src/llama_stack_client/resources/inspect.py b/src/llama_stack_client/resources/inspect.py index eb028c16..bd67ae96 100644 --- a/src/llama_stack_client/resources/inspect.py +++ b/src/llama_stack_client/resources/inspect.py @@ -50,7 +50,7 @@ def health( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> HealthInfo: - """Get the health of the service.""" + """Get the current health status of the service.""" return self._get( "/v1/health", options=make_request_options( @@ -109,7 +109,7 @@ async def health( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> HealthInfo: - """Get the health of the service.""" + """Get the current health status of the service.""" return await self._get( "/v1/health", options=make_request_options( diff --git a/src/llama_stack_client/resources/moderations.py b/src/llama_stack_client/resources/moderations.py new file mode 100644 index 00000000..165f3ce3 --- /dev/null +++ b/src/llama_stack_client/resources/moderations.py @@ -0,0 +1,189 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing import List, Union + +import httpx + +from ..types import moderation_create_params +from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven +from .._utils import maybe_transform, async_maybe_transform +from .._compat import cached_property +from .._resource import SyncAPIResource, AsyncAPIResource +from .._response import ( + to_raw_response_wrapper, + to_streamed_response_wrapper, + async_to_raw_response_wrapper, + async_to_streamed_response_wrapper, +) +from .._base_client import make_request_options +from ..types.create_response import CreateResponse + +__all__ = ["ModerationsResource", "AsyncModerationsResource"] + + +class ModerationsResource(SyncAPIResource): + @cached_property + def with_raw_response(self) -> ModerationsResourceWithRawResponse: + """ + This property can be used as a prefix for any HTTP method call to return + the raw response object instead of the parsed content. + + For more information, see https://www.github.com/llamastack/llama-stack-client-python#accessing-raw-response-data-eg-headers + """ + return ModerationsResourceWithRawResponse(self) + + @cached_property + def with_streaming_response(self) -> ModerationsResourceWithStreamingResponse: + """ + An alternative to `.with_raw_response` that doesn't eagerly read the response body. + + For more information, see https://www.github.com/llamastack/llama-stack-client-python#with_streaming_response + """ + return ModerationsResourceWithStreamingResponse(self) + + def create( + self, + *, + input: Union[str, List[str]], + model: str, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, + ) -> CreateResponse: + """ + Classifies if text and/or image inputs are potentially harmful. + + Args: + input: Input (or inputs) to classify. Can be a single string, an array of strings, or + an array of multi-modal input objects similar to other models. + + model: The content moderation model you would like to use. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + return self._post( + "/v1/openai/v1/moderations", + body=maybe_transform( + { + "input": input, + "model": model, + }, + moderation_create_params.ModerationCreateParams, + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=CreateResponse, + ) + + +class AsyncModerationsResource(AsyncAPIResource): + @cached_property + def with_raw_response(self) -> AsyncModerationsResourceWithRawResponse: + """ + This property can be used as a prefix for any HTTP method call to return + the raw response object instead of the parsed content. + + For more information, see https://www.github.com/llamastack/llama-stack-client-python#accessing-raw-response-data-eg-headers + """ + return AsyncModerationsResourceWithRawResponse(self) + + @cached_property + def with_streaming_response(self) -> AsyncModerationsResourceWithStreamingResponse: + """ + An alternative to `.with_raw_response` that doesn't eagerly read the response body. + + For more information, see https://www.github.com/llamastack/llama-stack-client-python#with_streaming_response + """ + return AsyncModerationsResourceWithStreamingResponse(self) + + async def create( + self, + *, + input: Union[str, List[str]], + model: str, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, + ) -> CreateResponse: + """ + Classifies if text and/or image inputs are potentially harmful. + + Args: + input: Input (or inputs) to classify. Can be a single string, an array of strings, or + an array of multi-modal input objects similar to other models. + + model: The content moderation model you would like to use. + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + return await self._post( + "/v1/openai/v1/moderations", + body=await async_maybe_transform( + { + "input": input, + "model": model, + }, + moderation_create_params.ModerationCreateParams, + ), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=CreateResponse, + ) + + +class ModerationsResourceWithRawResponse: + def __init__(self, moderations: ModerationsResource) -> None: + self._moderations = moderations + + self.create = to_raw_response_wrapper( + moderations.create, + ) + + +class AsyncModerationsResourceWithRawResponse: + def __init__(self, moderations: AsyncModerationsResource) -> None: + self._moderations = moderations + + self.create = async_to_raw_response_wrapper( + moderations.create, + ) + + +class ModerationsResourceWithStreamingResponse: + def __init__(self, moderations: ModerationsResource) -> None: + self._moderations = moderations + + self.create = to_streamed_response_wrapper( + moderations.create, + ) + + +class AsyncModerationsResourceWithStreamingResponse: + def __init__(self, moderations: AsyncModerationsResource) -> None: + self._moderations = moderations + + self.create = async_to_streamed_response_wrapper( + moderations.create, + ) diff --git a/src/llama_stack_client/resources/responses/responses.py b/src/llama_stack_client/resources/responses/responses.py index fa05f7ed..f958f556 100644 --- a/src/llama_stack_client/resources/responses/responses.py +++ b/src/llama_stack_client/resources/responses/responses.py @@ -92,6 +92,8 @@ def create( response. This can be used to easily fork-off new responses from existing responses. + text: Text response configuration for OpenAI responses. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -135,6 +137,8 @@ def create( response. This can be used to easily fork-off new responses from existing responses. + text: Text response configuration for OpenAI responses. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -178,6 +182,8 @@ def create( response. This can be used to easily fork-off new responses from existing responses. + text: Text response configuration for OpenAI responses. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -381,6 +387,8 @@ async def create( response. This can be used to easily fork-off new responses from existing responses. + text: Text response configuration for OpenAI responses. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -424,6 +432,8 @@ async def create( response. This can be used to easily fork-off new responses from existing responses. + text: Text response configuration for OpenAI responses. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -467,6 +477,8 @@ async def create( response. This can be used to easily fork-off new responses from existing responses. + text: Text response configuration for OpenAI responses. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request diff --git a/src/llama_stack_client/resources/routes.py b/src/llama_stack_client/resources/routes.py index a95b5e06..7d544c0e 100644 --- a/src/llama_stack_client/resources/routes.py +++ b/src/llama_stack_client/resources/routes.py @@ -52,7 +52,7 @@ def list( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> RouteListResponse: - """List all routes.""" + """List all available API routes with their methods and implementing providers.""" return self._get( "/v1/inspect/routes", options=make_request_options( @@ -96,7 +96,7 @@ async def list( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> RouteListResponse: - """List all routes.""" + """List all available API routes with their methods and implementing providers.""" return await self._get( "/v1/inspect/routes", options=make_request_options( diff --git a/src/llama_stack_client/resources/synthetic_data_generation.py b/src/llama_stack_client/resources/synthetic_data_generation.py index 6e4e5a08..0843eafe 100644 --- a/src/llama_stack_client/resources/synthetic_data_generation.py +++ b/src/llama_stack_client/resources/synthetic_data_generation.py @@ -59,8 +59,15 @@ def generate( timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> SyntheticDataGenerationResponse: """ + Generate synthetic data based on input dialogs and apply filtering. + Args: - filtering_function: The type of filtering function. + dialogs: List of conversation messages to use as input for synthetic data generation + + filtering_function: Type of filtering to apply to generated synthetic data samples + + model: (Optional) The identifier of the model to use. The model must be registered with + Llama Stack and available via the /models endpoint extra_headers: Send extra headers @@ -121,8 +128,15 @@ async def generate( timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> SyntheticDataGenerationResponse: """ + Generate synthetic data based on input dialogs and apply filtering. + Args: - filtering_function: The type of filtering function. + dialogs: List of conversation messages to use as input for synthetic data generation + + filtering_function: Type of filtering to apply to generated synthetic data samples + + model: (Optional) The identifier of the model to use. The model must be registered with + Llama Stack and available via the /models endpoint extra_headers: Send extra headers diff --git a/src/llama_stack_client/resources/tool_runtime/rag_tool.py b/src/llama_stack_client/resources/tool_runtime/rag_tool.py index 65ef0463..3ff25968 100644 --- a/src/llama_stack_client/resources/tool_runtime/rag_tool.py +++ b/src/llama_stack_client/resources/tool_runtime/rag_tool.py @@ -60,9 +60,15 @@ def insert( timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> None: """ - Index documents so they can be used by the RAG system + Index documents so they can be used by the RAG system. Args: + chunk_size_in_tokens: (Optional) Size in tokens for document chunking during indexing + + documents: List of documents to index in the RAG system + + vector_db_id: ID of the vector database to store the document embeddings + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -102,12 +108,14 @@ def query( timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> QueryResult: """ - Query the RAG system for context; typically invoked by the agent + Query the RAG system for context; typically invoked by the agent. Args: - content: A image content item + content: The query content to search for in the indexed documents + + vector_db_ids: List of vector database IDs to search within - query_config: Configuration for the RAG query generation. + query_config: (Optional) Configuration parameters for the query operation extra_headers: Send extra headers @@ -168,9 +176,15 @@ async def insert( timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> None: """ - Index documents so they can be used by the RAG system + Index documents so they can be used by the RAG system. Args: + chunk_size_in_tokens: (Optional) Size in tokens for document chunking during indexing + + documents: List of documents to index in the RAG system + + vector_db_id: ID of the vector database to store the document embeddings + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -210,12 +224,14 @@ async def query( timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> QueryResult: """ - Query the RAG system for context; typically invoked by the agent + Query the RAG system for context; typically invoked by the agent. Args: - content: A image content item + content: The query content to search for in the indexed documents + + vector_db_ids: List of vector database IDs to search within - query_config: Configuration for the RAG query generation. + query_config: (Optional) Configuration parameters for the query operation extra_headers: Send extra headers diff --git a/src/llama_stack_client/resources/vector_dbs.py b/src/llama_stack_client/resources/vector_dbs.py index 3838c38e..ab62fa6a 100644 --- a/src/llama_stack_client/resources/vector_dbs.py +++ b/src/llama_stack_client/resources/vector_dbs.py @@ -110,6 +110,7 @@ def register( embedding_dimension: int | NotGiven = NOT_GIVEN, provider_id: str | NotGiven = NOT_GIVEN, provider_vector_db_id: str | NotGiven = NOT_GIVEN, + vector_db_name: str | NotGiven = NOT_GIVEN, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -131,6 +132,8 @@ def register( provider_vector_db_id: The identifier of the vector database in the provider. + vector_db_name: The name of the vector database. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -148,6 +151,7 @@ def register( "embedding_dimension": embedding_dimension, "provider_id": provider_id, "provider_vector_db_id": provider_vector_db_id, + "vector_db_name": vector_db_name, }, vector_db_register_params.VectorDBRegisterParams, ), @@ -276,6 +280,7 @@ async def register( embedding_dimension: int | NotGiven = NOT_GIVEN, provider_id: str | NotGiven = NOT_GIVEN, provider_vector_db_id: str | NotGiven = NOT_GIVEN, + vector_db_name: str | NotGiven = NOT_GIVEN, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -297,6 +302,8 @@ async def register( provider_vector_db_id: The identifier of the vector database in the provider. + vector_db_name: The name of the vector database. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -314,6 +321,7 @@ async def register( "embedding_dimension": embedding_dimension, "provider_id": provider_id, "provider_vector_db_id": provider_vector_db_id, + "vector_db_name": vector_db_name, }, vector_db_register_params.VectorDBRegisterParams, ), diff --git a/src/llama_stack_client/resources/vector_stores/files.py b/src/llama_stack_client/resources/vector_stores/files.py index 4ea92a1e..34757751 100644 --- a/src/llama_stack_client/resources/vector_stores/files.py +++ b/src/llama_stack_client/resources/vector_stores/files.py @@ -193,6 +193,20 @@ def list( List files in a vector store. Args: + after: (Optional) A cursor for use in pagination. `after` is an object ID that defines + your place in the list. + + before: (Optional) A cursor for use in pagination. `before` is an object ID that defines + your place in the list. + + filter: (Optional) Filter by file status to only return files with the specified status. + + limit: (Optional) A limit on the number of objects to be returned. Limit can range + between 1 and 100, and the default is 20. + + order: (Optional) Sort order by the `created_at` timestamp of the objects. `asc` for + ascending order and `desc` for descending order. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -463,6 +477,20 @@ async def list( List files in a vector store. Args: + after: (Optional) A cursor for use in pagination. `after` is an object ID that defines + your place in the list. + + before: (Optional) A cursor for use in pagination. `before` is an object ID that defines + your place in the list. + + filter: (Optional) Filter by file status to only return files with the specified status. + + limit: (Optional) A limit on the number of objects to be returned. Limit can range + between 1 and 100, and the default is 20. + + order: (Optional) Sort order by the `created_at` timestamp of the objects. `asc` for + ascending order and `desc` for descending order. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request diff --git a/src/llama_stack_client/resources/vector_stores/vector_stores.py b/src/llama_stack_client/resources/vector_stores/vector_stores.py index 7985cee9..4b62604d 100644 --- a/src/llama_stack_client/resources/vector_stores/vector_stores.py +++ b/src/llama_stack_client/resources/vector_stores/vector_stores.py @@ -66,15 +66,14 @@ def with_streaming_response(self) -> VectorStoresResourceWithStreamingResponse: def create( self, *, - name: str, chunking_strategy: Dict[str, Union[bool, float, str, Iterable[object], object, None]] | NotGiven = NOT_GIVEN, embedding_dimension: int | NotGiven = NOT_GIVEN, embedding_model: str | NotGiven = NOT_GIVEN, expires_after: Dict[str, Union[bool, float, str, Iterable[object], object, None]] | NotGiven = NOT_GIVEN, file_ids: List[str] | NotGiven = NOT_GIVEN, metadata: Dict[str, Union[bool, float, str, Iterable[object], object, None]] | NotGiven = NOT_GIVEN, + name: str | NotGiven = NOT_GIVEN, provider_id: str | NotGiven = NOT_GIVEN, - provider_vector_db_id: str | NotGiven = NOT_GIVEN, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -86,8 +85,6 @@ def create( Creates a vector store. Args: - name: A name for the vector store. - chunking_strategy: The chunking strategy used to chunk the file(s). If not set, will use the `auto` strategy. @@ -102,9 +99,9 @@ def create( metadata: Set of 16 key-value pairs that can be attached to an object. - provider_id: The ID of the provider to use for this vector store. + name: A name for the vector store. - provider_vector_db_id: The provider-specific vector database ID. + provider_id: The ID of the provider to use for this vector store. extra_headers: Send extra headers @@ -118,15 +115,14 @@ def create( "/v1/openai/v1/vector_stores", body=maybe_transform( { - "name": name, "chunking_strategy": chunking_strategy, "embedding_dimension": embedding_dimension, "embedding_model": embedding_model, "expires_after": expires_after, "file_ids": file_ids, "metadata": metadata, + "name": name, "provider_id": provider_id, - "provider_vector_db_id": provider_vector_db_id, }, vector_store_create_params.VectorStoreCreateParams, ), @@ -403,15 +399,14 @@ def with_streaming_response(self) -> AsyncVectorStoresResourceWithStreamingRespo async def create( self, *, - name: str, chunking_strategy: Dict[str, Union[bool, float, str, Iterable[object], object, None]] | NotGiven = NOT_GIVEN, embedding_dimension: int | NotGiven = NOT_GIVEN, embedding_model: str | NotGiven = NOT_GIVEN, expires_after: Dict[str, Union[bool, float, str, Iterable[object], object, None]] | NotGiven = NOT_GIVEN, file_ids: List[str] | NotGiven = NOT_GIVEN, metadata: Dict[str, Union[bool, float, str, Iterable[object], object, None]] | NotGiven = NOT_GIVEN, + name: str | NotGiven = NOT_GIVEN, provider_id: str | NotGiven = NOT_GIVEN, - provider_vector_db_id: str | NotGiven = NOT_GIVEN, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -423,8 +418,6 @@ async def create( Creates a vector store. Args: - name: A name for the vector store. - chunking_strategy: The chunking strategy used to chunk the file(s). If not set, will use the `auto` strategy. @@ -439,9 +432,9 @@ async def create( metadata: Set of 16 key-value pairs that can be attached to an object. - provider_id: The ID of the provider to use for this vector store. + name: A name for the vector store. - provider_vector_db_id: The provider-specific vector database ID. + provider_id: The ID of the provider to use for this vector store. extra_headers: Send extra headers @@ -455,15 +448,14 @@ async def create( "/v1/openai/v1/vector_stores", body=await async_maybe_transform( { - "name": name, "chunking_strategy": chunking_strategy, "embedding_dimension": embedding_dimension, "embedding_model": embedding_model, "expires_after": expires_after, "file_ids": file_ids, "metadata": metadata, + "name": name, "provider_id": provider_id, - "provider_vector_db_id": provider_vector_db_id, }, vector_store_create_params.VectorStoreCreateParams, ), diff --git a/src/llama_stack_client/types/__init__.py b/src/llama_stack_client/types/__init__.py index cfb77868..887f1706 100644 --- a/src/llama_stack_client/types/__init__.py +++ b/src/llama_stack_client/types/__init__.py @@ -47,6 +47,7 @@ from .tool_response import ToolResponse as ToolResponse from .inference_step import InferenceStep as InferenceStep from .tool_def_param import ToolDefParam as ToolDefParam +from .create_response import CreateResponse as CreateResponse from .response_object import ResponseObject as ResponseObject from .token_log_probs import TokenLogProbs as TokenLogProbs from .file_list_params import FileListParams as FileListParams @@ -111,6 +112,7 @@ from .completion_create_params import CompletionCreateParams as CompletionCreateParams from .list_benchmarks_response import ListBenchmarksResponse as ListBenchmarksResponse from .list_vector_dbs_response import ListVectorDBsResponse as ListVectorDBsResponse +from .moderation_create_params import ModerationCreateParams as ModerationCreateParams from .safety_run_shield_params import SafetyRunShieldParams as SafetyRunShieldParams from .vector_store_list_params import VectorStoreListParams as VectorStoreListParams from .benchmark_register_params import BenchmarkRegisterParams as BenchmarkRegisterParams diff --git a/src/llama_stack_client/types/agent_create_response.py b/src/llama_stack_client/types/agent_create_response.py index 93651cb6..24fe864e 100644 --- a/src/llama_stack_client/types/agent_create_response.py +++ b/src/llama_stack_client/types/agent_create_response.py @@ -7,3 +7,4 @@ class AgentCreateResponse(BaseModel): agent_id: str + """Unique identifier for the created agent""" diff --git a/src/llama_stack_client/types/agent_retrieve_response.py b/src/llama_stack_client/types/agent_retrieve_response.py index 132821cb..1671a9fc 100644 --- a/src/llama_stack_client/types/agent_retrieve_response.py +++ b/src/llama_stack_client/types/agent_retrieve_response.py @@ -10,8 +10,10 @@ class AgentRetrieveResponse(BaseModel): agent_config: AgentConfig - """Configuration for an agent.""" + """Configuration settings for the agent""" agent_id: str + """Unique identifier for the agent""" created_at: datetime + """Timestamp when the agent was created""" diff --git a/src/llama_stack_client/types/agents/agent_turn_response_stream_chunk.py b/src/llama_stack_client/types/agents/agent_turn_response_stream_chunk.py index c488ba81..1ce1b8a7 100644 --- a/src/llama_stack_client/types/agents/agent_turn_response_stream_chunk.py +++ b/src/llama_stack_client/types/agents/agent_turn_response_stream_chunk.py @@ -8,3 +8,4 @@ class AgentTurnResponseStreamChunk(BaseModel): event: TurnResponseEvent + """Individual event in the agent turn response stream""" diff --git a/src/llama_stack_client/types/agents/session.py b/src/llama_stack_client/types/agents/session.py index 707c4cbf..1d3d697e 100644 --- a/src/llama_stack_client/types/agents/session.py +++ b/src/llama_stack_client/types/agents/session.py @@ -11,9 +11,13 @@ class Session(BaseModel): session_id: str + """Unique identifier for the conversation session""" session_name: str + """Human-readable name for the session""" started_at: datetime + """Timestamp when the session was created""" turns: List[Turn] + """List of all turns that have occurred in this session""" diff --git a/src/llama_stack_client/types/agents/session_create_response.py b/src/llama_stack_client/types/agents/session_create_response.py index abf18665..e7fe2a06 100644 --- a/src/llama_stack_client/types/agents/session_create_response.py +++ b/src/llama_stack_client/types/agents/session_create_response.py @@ -7,3 +7,4 @@ class SessionCreateResponse(BaseModel): session_id: str + """Unique identifier for the created session""" diff --git a/src/llama_stack_client/types/agents/step_retrieve_response.py b/src/llama_stack_client/types/agents/step_retrieve_response.py index fcf2044b..10fc13d2 100644 --- a/src/llama_stack_client/types/agents/step_retrieve_response.py +++ b/src/llama_stack_client/types/agents/step_retrieve_response.py @@ -20,4 +20,4 @@ class StepRetrieveResponse(BaseModel): step: Step - """An inference step in an agent turn.""" + """The complete step data and execution details""" diff --git a/src/llama_stack_client/types/agents/turn.py b/src/llama_stack_client/types/agents/turn.py index aa8eeefe..386d7f78 100644 --- a/src/llama_stack_client/types/agents/turn.py +++ b/src/llama_stack_client/types/agents/turn.py @@ -38,6 +38,7 @@ class OutputAttachmentContentImageContentItemImageURL(BaseModel): uri: str + """The URL string pointing to the resource""" class OutputAttachmentContentImageContentItemImage(BaseModel): @@ -69,6 +70,7 @@ class OutputAttachmentContentTextContentItem(BaseModel): class OutputAttachmentContentURL(BaseModel): uri: str + """The URL string pointing to the resource""" OutputAttachmentContent: TypeAlias = Union[ @@ -90,18 +92,25 @@ class OutputAttachment(BaseModel): class Turn(BaseModel): input_messages: List[InputMessage] + """List of messages that initiated this turn""" output_message: CompletionMessage - """A message containing the model's (assistant) response in a chat conversation.""" + """The model's generated response containing content and metadata""" session_id: str + """Unique identifier for the conversation session""" started_at: datetime + """Timestamp when the turn began""" steps: List[Step] + """Ordered list of processing steps executed during this turn""" turn_id: str + """Unique identifier for the turn within a session""" completed_at: Optional[datetime] = None + """(Optional) Timestamp when the turn finished, if completed""" output_attachments: Optional[List[OutputAttachment]] = None + """(Optional) Files or media attached to the agent's response""" diff --git a/src/llama_stack_client/types/agents/turn_create_params.py b/src/llama_stack_client/types/agents/turn_create_params.py index 01e0f64b..fbb8de8e 100644 --- a/src/llama_stack_client/types/agents/turn_create_params.py +++ b/src/llama_stack_client/types/agents/turn_create_params.py @@ -54,6 +54,7 @@ class TurnCreateParamsBase(TypedDict, total=False): class DocumentContentImageContentItemImageURL(TypedDict, total=False): uri: Required[str] + """The URL string pointing to the resource""" class DocumentContentImageContentItemImage(TypedDict, total=False): @@ -85,6 +86,7 @@ class DocumentContentTextContentItem(TypedDict, total=False): class DocumentContentURL(TypedDict, total=False): uri: Required[str] + """The URL string pointing to the resource""" DocumentContent: TypeAlias = Union[ diff --git a/src/llama_stack_client/types/agents/turn_response_event.py b/src/llama_stack_client/types/agents/turn_response_event.py index c6a42d75..df213246 100644 --- a/src/llama_stack_client/types/agents/turn_response_event.py +++ b/src/llama_stack_client/types/agents/turn_response_event.py @@ -8,3 +8,4 @@ class TurnResponseEvent(BaseModel): payload: TurnResponseEventPayload + """Event-specific payload containing event data""" diff --git a/src/llama_stack_client/types/agents/turn_response_event_payload.py b/src/llama_stack_client/types/agents/turn_response_event_payload.py index 345a7ec4..1844c61e 100644 --- a/src/llama_stack_client/types/agents/turn_response_event_payload.py +++ b/src/llama_stack_client/types/agents/turn_response_event_payload.py @@ -26,24 +26,30 @@ class AgentTurnResponseStepStartPayload(BaseModel): event_type: Literal["step_start"] + """Type of event being reported""" step_id: str + """Unique identifier for the step within a turn""" step_type: Literal["inference", "tool_execution", "shield_call", "memory_retrieval"] - """Type of the step in an agent turn.""" + """Type of step being executed""" metadata: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Additional metadata for the step""" class AgentTurnResponseStepProgressPayload(BaseModel): delta: ContentDelta + """Incremental content changes during step execution""" event_type: Literal["step_progress"] + """Type of event being reported""" step_id: str + """Unique identifier for the step within a turn""" step_type: Literal["inference", "tool_execution", "shield_call", "memory_retrieval"] - """Type of the step in an agent turn.""" + """Type of step being executed""" AgentTurnResponseStepCompletePayloadStepDetails: TypeAlias = Annotated[ @@ -54,34 +60,40 @@ class AgentTurnResponseStepProgressPayload(BaseModel): class AgentTurnResponseStepCompletePayload(BaseModel): event_type: Literal["step_complete"] + """Type of event being reported""" step_details: AgentTurnResponseStepCompletePayloadStepDetails - """An inference step in an agent turn.""" + """Complete details of the executed step""" step_id: str + """Unique identifier for the step within a turn""" step_type: Literal["inference", "tool_execution", "shield_call", "memory_retrieval"] - """Type of the step in an agent turn.""" + """Type of step being executed""" class AgentTurnResponseTurnStartPayload(BaseModel): event_type: Literal["turn_start"] + """Type of event being reported""" turn_id: str + """Unique identifier for the turn within a session""" class AgentTurnResponseTurnCompletePayload(BaseModel): event_type: Literal["turn_complete"] + """Type of event being reported""" turn: Turn - """A single turn in an interaction with an Agentic System.""" + """Complete turn data including all steps and results""" class AgentTurnResponseTurnAwaitingInputPayload(BaseModel): event_type: Literal["turn_awaiting_input"] + """Type of event being reported""" turn: Turn - """A single turn in an interaction with an Agentic System.""" + """Turn data when waiting for external tool responses""" TurnResponseEventPayload: TypeAlias = Annotated[ diff --git a/src/llama_stack_client/types/algorithm_config_param.py b/src/llama_stack_client/types/algorithm_config_param.py index 3f3c0cac..f2856526 100644 --- a/src/llama_stack_client/types/algorithm_config_param.py +++ b/src/llama_stack_client/types/algorithm_config_param.py @@ -10,28 +10,39 @@ class LoraFinetuningConfig(TypedDict, total=False): alpha: Required[int] + """LoRA scaling parameter that controls adaptation strength""" apply_lora_to_mlp: Required[bool] + """Whether to apply LoRA to MLP layers""" apply_lora_to_output: Required[bool] + """Whether to apply LoRA to output projection layers""" lora_attn_modules: Required[List[str]] + """List of attention module names to apply LoRA to""" rank: Required[int] + """Rank of the LoRA adaptation (lower rank = fewer parameters)""" type: Required[Literal["LoRA"]] + """Algorithm type identifier, always "LoRA" """ quantize_base: bool + """(Optional) Whether to quantize the base model weights""" use_dora: bool + """(Optional) Whether to use DoRA (Weight-Decomposed Low-Rank Adaptation)""" class QatFinetuningConfig(TypedDict, total=False): group_size: Required[int] + """Size of groups for grouped quantization""" quantizer_name: Required[str] + """Name of the quantization algorithm to use""" type: Required[Literal["QAT"]] + """Algorithm type identifier, always "QAT" """ AlgorithmConfigParam: TypeAlias = Union[LoraFinetuningConfig, QatFinetuningConfig] diff --git a/src/llama_stack_client/types/benchmark.py b/src/llama_stack_client/types/benchmark.py index e0b1ce9e..eb6dde75 100644 --- a/src/llama_stack_client/types/benchmark.py +++ b/src/llama_stack_client/types/benchmark.py @@ -10,15 +10,19 @@ class Benchmark(BaseModel): dataset_id: str + """Identifier of the dataset to use for the benchmark evaluation""" identifier: str metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + """Metadata for this evaluation task""" provider_id: str scoring_functions: List[str] + """List of scoring function identifiers to apply during evaluation""" type: Literal["benchmark"] + """The resource type, always benchmark""" provider_resource_id: Optional[str] = None diff --git a/src/llama_stack_client/types/chat/completion_create_params.py b/src/llama_stack_client/types/chat/completion_create_params.py index 2c9d26f7..263c1c78 100644 --- a/src/llama_stack_client/types/chat/completion_create_params.py +++ b/src/llama_stack_client/types/chat/completion_create_params.py @@ -13,28 +13,18 @@ "MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", "MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", "MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", + "MessageOpenAIUserMessageParamContentUnionMember1OpenAIFile", + "MessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile", "MessageOpenAISystemMessageParam", "MessageOpenAISystemMessageParamContentUnionMember1", - "MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "MessageOpenAIAssistantMessageParam", "MessageOpenAIAssistantMessageParamContentUnionMember1", - "MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "MessageOpenAIAssistantMessageParamToolCall", "MessageOpenAIAssistantMessageParamToolCallFunction", "MessageOpenAIToolMessageParam", "MessageOpenAIToolMessageParamContentUnionMember1", - "MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "MessageOpenAIDeveloperMessageParam", "MessageOpenAIDeveloperMessageParamContentUnionMember1", - "MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "ResponseFormat", "ResponseFormatOpenAIResponseFormatText", "ResponseFormatOpenAIResponseFormatJsonSchema", @@ -119,29 +109,53 @@ class CompletionCreateParamsBase(TypedDict, total=False): class MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(TypedDict, total=False): text: Required[str] + """The text content of the message""" type: Required[Literal["text"]] + """Must be "text" to identify this as text content""" class MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( TypedDict, total=False ): url: Required[str] + """URL of the image to include in the message""" detail: str + """(Optional) Level of detail for image processing. + + Can be "low", "high", or "auto" + """ class MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(TypedDict, total=False): image_url: Required[ MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL ] + """Image URL specification and processing details""" type: Required[Literal["image_url"]] + """Must be "image_url" to identify this as image content""" + + +class MessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile(TypedDict, total=False): + file_data: str + + file_id: str + + filename: str + + +class MessageOpenAIUserMessageParamContentUnionMember1OpenAIFile(TypedDict, total=False): + file: Required[MessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile] + + type: Required[Literal["file"]] MessageOpenAIUserMessageParamContentUnionMember1: TypeAlias = Union[ MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, MessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, + MessageOpenAIUserMessageParamContentUnionMember1OpenAIFile, ] @@ -156,36 +170,12 @@ class MessageOpenAIUserMessageParam(TypedDict, total=False): """(Optional) The name of the user message participant.""" -class MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - TypedDict, total=False -): +class MessageOpenAISystemMessageParamContentUnionMember1(TypedDict, total=False): text: Required[str] + """The text content of the message""" type: Required[Literal["text"]] - - -class MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - TypedDict, total=False -): - url: Required[str] - - detail: str - - -class MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - TypedDict, total=False -): - image_url: Required[ - MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ] - - type: Required[Literal["image_url"]] - - -MessageOpenAISystemMessageParamContentUnionMember1: TypeAlias = Union[ - MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - MessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, -] + """Must be "text" to identify this as text content""" class MessageOpenAISystemMessageParam(TypedDict, total=False): @@ -204,52 +194,34 @@ class MessageOpenAISystemMessageParam(TypedDict, total=False): """(Optional) The name of the system message participant.""" -class MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - TypedDict, total=False -): +class MessageOpenAIAssistantMessageParamContentUnionMember1(TypedDict, total=False): text: Required[str] + """The text content of the message""" type: Required[Literal["text"]] - - -class MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - TypedDict, total=False -): - url: Required[str] - - detail: str - - -class MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - TypedDict, total=False -): - image_url: Required[ - MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ] - - type: Required[Literal["image_url"]] - - -MessageOpenAIAssistantMessageParamContentUnionMember1: TypeAlias = Union[ - MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - MessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, -] + """Must be "text" to identify this as text content""" class MessageOpenAIAssistantMessageParamToolCallFunction(TypedDict, total=False): arguments: str + """(Optional) Arguments to pass to the function as a JSON string""" name: str + """(Optional) Name of the function to call""" class MessageOpenAIAssistantMessageParamToolCall(TypedDict, total=False): type: Required[Literal["function"]] + """Must be "function" to identify this as a function call""" id: str + """(Optional) Unique identifier for the tool call""" function: MessageOpenAIAssistantMessageParamToolCallFunction + """(Optional) Function call details""" index: int + """(Optional) Index of the tool call in the list""" class MessageOpenAIAssistantMessageParam(TypedDict, total=False): @@ -266,32 +238,12 @@ class MessageOpenAIAssistantMessageParam(TypedDict, total=False): """List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object.""" -class MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(TypedDict, total=False): +class MessageOpenAIToolMessageParamContentUnionMember1(TypedDict, total=False): text: Required[str] + """The text content of the message""" type: Required[Literal["text"]] - - -class MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - TypedDict, total=False -): - url: Required[str] - - detail: str - - -class MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(TypedDict, total=False): - image_url: Required[ - MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ] - - type: Required[Literal["image_url"]] - - -MessageOpenAIToolMessageParamContentUnionMember1: TypeAlias = Union[ - MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - MessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, -] + """Must be "text" to identify this as text content""" class MessageOpenAIToolMessageParam(TypedDict, total=False): @@ -305,36 +257,12 @@ class MessageOpenAIToolMessageParam(TypedDict, total=False): """Unique identifier for the tool call this response is for""" -class MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - TypedDict, total=False -): +class MessageOpenAIDeveloperMessageParamContentUnionMember1(TypedDict, total=False): text: Required[str] + """The text content of the message""" type: Required[Literal["text"]] - - -class MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - TypedDict, total=False -): - url: Required[str] - - detail: str - - -class MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - TypedDict, total=False -): - image_url: Required[ - MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ] - - type: Required[Literal["image_url"]] - - -MessageOpenAIDeveloperMessageParamContentUnionMember1: TypeAlias = Union[ - MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - MessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, -] + """Must be "text" to identify this as text content""" class MessageOpenAIDeveloperMessageParam(TypedDict, total=False): @@ -359,26 +287,34 @@ class MessageOpenAIDeveloperMessageParam(TypedDict, total=False): class ResponseFormatOpenAIResponseFormatText(TypedDict, total=False): type: Required[Literal["text"]] + """Must be "text" to indicate plain text response format""" class ResponseFormatOpenAIResponseFormatJsonSchemaJsonSchema(TypedDict, total=False): name: Required[str] + """Name of the schema""" description: str + """(Optional) Description of the schema""" schema: Dict[str, Union[bool, float, str, Iterable[object], object, None]] + """(Optional) The JSON schema definition""" strict: bool + """(Optional) Whether to enforce strict adherence to the schema""" class ResponseFormatOpenAIResponseFormatJsonSchema(TypedDict, total=False): json_schema: Required[ResponseFormatOpenAIResponseFormatJsonSchemaJsonSchema] + """The JSON schema specification for the response""" type: Required[Literal["json_schema"]] + """Must be "json_schema" to indicate structured JSON response format""" class ResponseFormatOpenAIResponseFormatJsonObject(TypedDict, total=False): type: Required[Literal["json_object"]] + """Must be "json_object" to indicate generic JSON object response format""" ResponseFormat: TypeAlias = Union[ diff --git a/src/llama_stack_client/types/chat/completion_create_response.py b/src/llama_stack_client/types/chat/completion_create_response.py index 5c8eb51c..7c6b2299 100644 --- a/src/llama_stack_client/types/chat/completion_create_response.py +++ b/src/llama_stack_client/types/chat/completion_create_response.py @@ -17,28 +17,18 @@ "OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", "OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", "OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", + "OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile", + "OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile", "OpenAIChatCompletionChoiceMessageOpenAISystemMessageParam", "OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1", - "OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParam", "OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1", - "OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamToolCall", "OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamToolCallFunction", "OpenAIChatCompletionChoiceMessageOpenAIToolMessageParam", "OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1", - "OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParam", "OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1", - "OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "OpenAIChatCompletionChoiceLogprobs", "OpenAIChatCompletionChoiceLogprobsContent", "OpenAIChatCompletionChoiceLogprobsContentTopLogprob", @@ -51,30 +41,54 @@ class OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1 BaseModel ): text: str + """The text content of the message""" type: Literal["text"] + """Must be "text" to identify this as text content""" class OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( BaseModel ): url: str + """URL of the image to include in the message""" detail: Optional[str] = None + """(Optional) Level of detail for image processing. + + Can be "low", "high", or "auto" + """ class OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( BaseModel ): image_url: OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL + """Image URL specification and processing details""" type: Literal["image_url"] + """Must be "image_url" to identify this as image content""" + + +class OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile(BaseModel): + file_data: Optional[str] = None + + file_id: Optional[str] = None + + filename: Optional[str] = None + + +class OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile(BaseModel): + file: OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile + + type: Literal["file"] OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1: TypeAlias = Annotated[ Union[ OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, + OpenAIChatCompletionChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile, ], PropertyInfo(discriminator="type"), ] @@ -91,37 +105,12 @@ class OpenAIChatCompletionChoiceMessageOpenAIUserMessageParam(BaseModel): """(Optional) The name of the user message participant.""" -class OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - BaseModel -): +class OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - BaseModel -): - image_url: OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - - type: Literal["image_url"] - - -OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - OpenAIChatCompletionChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class OpenAIChatCompletionChoiceMessageOpenAISystemMessageParam(BaseModel): @@ -140,53 +129,34 @@ class OpenAIChatCompletionChoiceMessageOpenAISystemMessageParam(BaseModel): """(Optional) The name of the system message participant.""" -class OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - BaseModel -): +class OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - BaseModel -): - image_url: OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - - type: Literal["image_url"] - - -OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamToolCallFunction(BaseModel): arguments: Optional[str] = None + """(Optional) Arguments to pass to the function as a JSON string""" name: Optional[str] = None + """(Optional) Name of the function to call""" class OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamToolCall(BaseModel): type: Literal["function"] + """Must be "function" to identify this as a function call""" id: Optional[str] = None + """(Optional) Unique identifier for the tool call""" function: Optional[OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParamToolCallFunction] = None + """(Optional) Function call details""" index: Optional[int] = None + """(Optional) Index of the tool call in the list""" class OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParam(BaseModel): @@ -205,37 +175,12 @@ class OpenAIChatCompletionChoiceMessageOpenAIAssistantMessageParam(BaseModel): """List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object.""" -class OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - BaseModel -): +class OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - BaseModel -): - image_url: OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - - type: Literal["image_url"] - - -OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - OpenAIChatCompletionChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class OpenAIChatCompletionChoiceMessageOpenAIToolMessageParam(BaseModel): @@ -249,37 +194,12 @@ class OpenAIChatCompletionChoiceMessageOpenAIToolMessageParam(BaseModel): """Unique identifier for the tool call this response is for""" -class OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - BaseModel -): +class OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - BaseModel -): - image_url: OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - - type: Literal["image_url"] - - -OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class OpenAIChatCompletionChoiceMessageOpenAIDeveloperMessageParam(BaseModel): diff --git a/src/llama_stack_client/types/chat/completion_list_response.py b/src/llama_stack_client/types/chat/completion_list_response.py index d3b580a1..5f7731cc 100644 --- a/src/llama_stack_client/types/chat/completion_list_response.py +++ b/src/llama_stack_client/types/chat/completion_list_response.py @@ -16,28 +16,18 @@ "DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", "DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", "DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", + "DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile", + "DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile", "DataChoiceMessageOpenAISystemMessageParam", "DataChoiceMessageOpenAISystemMessageParamContentUnionMember1", - "DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "DataChoiceMessageOpenAIAssistantMessageParam", "DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1", - "DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "DataChoiceMessageOpenAIAssistantMessageParamToolCall", "DataChoiceMessageOpenAIAssistantMessageParamToolCallFunction", "DataChoiceMessageOpenAIToolMessageParam", "DataChoiceMessageOpenAIToolMessageParamContentUnionMember1", - "DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "DataChoiceMessageOpenAIDeveloperMessageParam", "DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1", - "DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "DataChoiceLogprobs", "DataChoiceLogprobsContent", "DataChoiceLogprobsContentTopLogprob", @@ -49,57 +39,71 @@ "DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", "DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", "DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", + "DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile", + "DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile", "DataInputMessageOpenAISystemMessageParam", "DataInputMessageOpenAISystemMessageParamContentUnionMember1", - "DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "DataInputMessageOpenAIAssistantMessageParam", "DataInputMessageOpenAIAssistantMessageParamContentUnionMember1", - "DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "DataInputMessageOpenAIAssistantMessageParamToolCall", "DataInputMessageOpenAIAssistantMessageParamToolCallFunction", "DataInputMessageOpenAIToolMessageParam", "DataInputMessageOpenAIToolMessageParamContentUnionMember1", - "DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "DataInputMessageOpenAIDeveloperMessageParam", "DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1", - "DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", ] class DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): text: str + """The text content of the message""" type: Literal["text"] + """Must be "text" to identify this as text content""" class DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( BaseModel ): url: str + """URL of the image to include in the message""" detail: Optional[str] = None + """(Optional) Level of detail for image processing. + + Can be "low", "high", or "auto" + """ class DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): image_url: ( DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL ) + """Image URL specification and processing details""" type: Literal["image_url"] + """Must be "image_url" to identify this as image content""" + + +class DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile(BaseModel): + file_data: Optional[str] = None + + file_id: Optional[str] = None + + filename: Optional[str] = None + + +class DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile(BaseModel): + file: DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile + + type: Literal["file"] DataChoiceMessageOpenAIUserMessageParamContentUnionMember1: TypeAlias = Annotated[ Union[ DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, + DataChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile, ], PropertyInfo(discriminator="type"), ] @@ -116,35 +120,12 @@ class DataChoiceMessageOpenAIUserMessageParam(BaseModel): """(Optional) The name of the user message participant.""" -class DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class DataChoiceMessageOpenAISystemMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ( - DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -DataChoiceMessageOpenAISystemMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - DataChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class DataChoiceMessageOpenAISystemMessageParam(BaseModel): @@ -163,55 +144,34 @@ class DataChoiceMessageOpenAISystemMessageParam(BaseModel): """(Optional) The name of the system message participant.""" -class DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - BaseModel -): +class DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - BaseModel -): - image_url: ( - DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - DataChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class DataChoiceMessageOpenAIAssistantMessageParamToolCallFunction(BaseModel): arguments: Optional[str] = None + """(Optional) Arguments to pass to the function as a JSON string""" name: Optional[str] = None + """(Optional) Name of the function to call""" class DataChoiceMessageOpenAIAssistantMessageParamToolCall(BaseModel): type: Literal["function"] + """Must be "function" to identify this as a function call""" id: Optional[str] = None + """(Optional) Unique identifier for the tool call""" function: Optional[DataChoiceMessageOpenAIAssistantMessageParamToolCallFunction] = None + """(Optional) Function call details""" index: Optional[int] = None + """(Optional) Index of the tool call in the list""" class DataChoiceMessageOpenAIAssistantMessageParam(BaseModel): @@ -228,35 +188,12 @@ class DataChoiceMessageOpenAIAssistantMessageParam(BaseModel): """List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object.""" -class DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class DataChoiceMessageOpenAIToolMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ( - DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -DataChoiceMessageOpenAIToolMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - DataChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class DataChoiceMessageOpenAIToolMessageParam(BaseModel): @@ -270,39 +207,12 @@ class DataChoiceMessageOpenAIToolMessageParam(BaseModel): """Unique identifier for the tool call this response is for""" -class DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam( - BaseModel -): +class DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - BaseModel -): - image_url: ( - DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - DataChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class DataChoiceMessageOpenAIDeveloperMessageParam(BaseModel): @@ -388,30 +298,54 @@ class DataChoice(BaseModel): class DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): text: str + """The text content of the message""" type: Literal["text"] + """Must be "text" to identify this as text content""" class DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( BaseModel ): url: str + """URL of the image to include in the message""" detail: Optional[str] = None + """(Optional) Level of detail for image processing. + + Can be "low", "high", or "auto" + """ class DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): image_url: ( DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL ) + """Image URL specification and processing details""" type: Literal["image_url"] + """Must be "image_url" to identify this as image content""" + + +class DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile(BaseModel): + file_data: Optional[str] = None + + file_id: Optional[str] = None + + filename: Optional[str] = None + + +class DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile(BaseModel): + file: DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile + + type: Literal["file"] DataInputMessageOpenAIUserMessageParamContentUnionMember1: TypeAlias = Annotated[ Union[ DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, + DataInputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile, ], PropertyInfo(discriminator="type"), ] @@ -428,35 +362,12 @@ class DataInputMessageOpenAIUserMessageParam(BaseModel): """(Optional) The name of the user message participant.""" -class DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class DataInputMessageOpenAISystemMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ( - DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -DataInputMessageOpenAISystemMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - DataInputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class DataInputMessageOpenAISystemMessageParam(BaseModel): @@ -475,53 +386,34 @@ class DataInputMessageOpenAISystemMessageParam(BaseModel): """(Optional) The name of the system message participant.""" -class DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class DataInputMessageOpenAIAssistantMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - BaseModel -): - image_url: ( - DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -DataInputMessageOpenAIAssistantMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - DataInputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class DataInputMessageOpenAIAssistantMessageParamToolCallFunction(BaseModel): arguments: Optional[str] = None + """(Optional) Arguments to pass to the function as a JSON string""" name: Optional[str] = None + """(Optional) Name of the function to call""" class DataInputMessageOpenAIAssistantMessageParamToolCall(BaseModel): type: Literal["function"] + """Must be "function" to identify this as a function call""" id: Optional[str] = None + """(Optional) Unique identifier for the tool call""" function: Optional[DataInputMessageOpenAIAssistantMessageParamToolCallFunction] = None + """(Optional) Function call details""" index: Optional[int] = None + """(Optional) Index of the tool call in the list""" class DataInputMessageOpenAIAssistantMessageParam(BaseModel): @@ -538,35 +430,12 @@ class DataInputMessageOpenAIAssistantMessageParam(BaseModel): """List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object.""" -class DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class DataInputMessageOpenAIToolMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ( - DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -DataInputMessageOpenAIToolMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - DataInputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class DataInputMessageOpenAIToolMessageParam(BaseModel): @@ -580,37 +449,12 @@ class DataInputMessageOpenAIToolMessageParam(BaseModel): """Unique identifier for the tool call this response is for""" -class DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam( - BaseModel -): - image_url: ( - DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - DataInputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class DataInputMessageOpenAIDeveloperMessageParam(BaseModel): @@ -657,11 +501,16 @@ class Data(BaseModel): class CompletionListResponse(BaseModel): data: List[Data] + """List of chat completion objects with their input messages""" first_id: str + """ID of the first completion in this list""" has_more: bool + """Whether there are more completions available beyond this list""" last_id: str + """ID of the last completion in this list""" object: Literal["list"] + """Must be "list" to identify this as a list response""" diff --git a/src/llama_stack_client/types/chat/completion_retrieve_response.py b/src/llama_stack_client/types/chat/completion_retrieve_response.py index 330c752d..74b60c35 100644 --- a/src/llama_stack_client/types/chat/completion_retrieve_response.py +++ b/src/llama_stack_client/types/chat/completion_retrieve_response.py @@ -15,28 +15,18 @@ "ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", "ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", "ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", + "ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile", + "ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile", "ChoiceMessageOpenAISystemMessageParam", "ChoiceMessageOpenAISystemMessageParamContentUnionMember1", - "ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "ChoiceMessageOpenAIAssistantMessageParam", "ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1", - "ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "ChoiceMessageOpenAIAssistantMessageParamToolCall", "ChoiceMessageOpenAIAssistantMessageParamToolCallFunction", "ChoiceMessageOpenAIToolMessageParam", "ChoiceMessageOpenAIToolMessageParamContentUnionMember1", - "ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "ChoiceMessageOpenAIDeveloperMessageParam", "ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1", - "ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "ChoiceLogprobs", "ChoiceLogprobsContent", "ChoiceLogprobsContentTopLogprob", @@ -48,55 +38,69 @@ "InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", "InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", "InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", + "InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile", + "InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile", "InputMessageOpenAISystemMessageParam", "InputMessageOpenAISystemMessageParamContentUnionMember1", - "InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "InputMessageOpenAIAssistantMessageParam", "InputMessageOpenAIAssistantMessageParamContentUnionMember1", - "InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "InputMessageOpenAIAssistantMessageParamToolCall", "InputMessageOpenAIAssistantMessageParamToolCallFunction", "InputMessageOpenAIToolMessageParam", "InputMessageOpenAIToolMessageParamContentUnionMember1", - "InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", "InputMessageOpenAIDeveloperMessageParam", "InputMessageOpenAIDeveloperMessageParamContentUnionMember1", - "InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam", - "InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam", - "InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL", ] class ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): text: str + """The text content of the message""" type: Literal["text"] + """Must be "text" to identify this as text content""" class ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( BaseModel ): url: str + """URL of the image to include in the message""" detail: Optional[str] = None + """(Optional) Level of detail for image processing. + + Can be "low", "high", or "auto" + """ class ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): image_url: ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL + """Image URL specification and processing details""" type: Literal["image_url"] + """Must be "image_url" to identify this as image content""" + + +class ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile(BaseModel): + file_data: Optional[str] = None + + file_id: Optional[str] = None + + filename: Optional[str] = None + + +class ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile(BaseModel): + file: ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile + + type: Literal["file"] ChoiceMessageOpenAIUserMessageParamContentUnionMember1: TypeAlias = Annotated[ Union[ ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, + ChoiceMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile, ], PropertyInfo(discriminator="type"), ] @@ -113,33 +117,12 @@ class ChoiceMessageOpenAIUserMessageParam(BaseModel): """(Optional) The name of the user message participant.""" -class ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class ChoiceMessageOpenAISystemMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - - type: Literal["image_url"] - - -ChoiceMessageOpenAISystemMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - ChoiceMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class ChoiceMessageOpenAISystemMessageParam(BaseModel): @@ -158,51 +141,34 @@ class ChoiceMessageOpenAISystemMessageParam(BaseModel): """(Optional) The name of the system message participant.""" -class ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ( - ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - ChoiceMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class ChoiceMessageOpenAIAssistantMessageParamToolCallFunction(BaseModel): arguments: Optional[str] = None + """(Optional) Arguments to pass to the function as a JSON string""" name: Optional[str] = None + """(Optional) Name of the function to call""" class ChoiceMessageOpenAIAssistantMessageParamToolCall(BaseModel): type: Literal["function"] + """Must be "function" to identify this as a function call""" id: Optional[str] = None + """(Optional) Unique identifier for the tool call""" function: Optional[ChoiceMessageOpenAIAssistantMessageParamToolCallFunction] = None + """(Optional) Function call details""" index: Optional[int] = None + """(Optional) Index of the tool call in the list""" class ChoiceMessageOpenAIAssistantMessageParam(BaseModel): @@ -219,33 +185,12 @@ class ChoiceMessageOpenAIAssistantMessageParam(BaseModel): """List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object.""" -class ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class ChoiceMessageOpenAIToolMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - - type: Literal["image_url"] - - -ChoiceMessageOpenAIToolMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - ChoiceMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class ChoiceMessageOpenAIToolMessageParam(BaseModel): @@ -259,35 +204,12 @@ class ChoiceMessageOpenAIToolMessageParam(BaseModel): """Unique identifier for the tool call this response is for""" -class ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ( - ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - ChoiceMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class ChoiceMessageOpenAIDeveloperMessageParam(BaseModel): @@ -373,26 +295,50 @@ class Choice(BaseModel): class InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): text: str + """The text content of the message""" type: Literal["text"] + """Must be "text" to identify this as text content""" class InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL(BaseModel): url: str + """URL of the image to include in the message""" detail: Optional[str] = None + """(Optional) Level of detail for image processing. + + Can be "low", "high", or "auto" + """ class InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): image_url: InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL + """Image URL specification and processing details""" type: Literal["image_url"] + """Must be "image_url" to identify this as image content""" + + +class InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile(BaseModel): + file_data: Optional[str] = None + + file_id: Optional[str] = None + + filename: Optional[str] = None + + +class InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile(BaseModel): + file: InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFileFile + + type: Literal["file"] InputMessageOpenAIUserMessageParamContentUnionMember1: TypeAlias = Annotated[ Union[ InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, + InputMessageOpenAIUserMessageParamContentUnionMember1OpenAIFile, ], PropertyInfo(discriminator="type"), ] @@ -409,33 +355,12 @@ class InputMessageOpenAIUserMessageParam(BaseModel): """(Optional) The name of the user message participant.""" -class InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class InputMessageOpenAISystemMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - - type: Literal["image_url"] - - -InputMessageOpenAISystemMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - InputMessageOpenAISystemMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class InputMessageOpenAISystemMessageParam(BaseModel): @@ -454,51 +379,34 @@ class InputMessageOpenAISystemMessageParam(BaseModel): """(Optional) The name of the system message participant.""" -class InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class InputMessageOpenAIAssistantMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ( - InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -InputMessageOpenAIAssistantMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - InputMessageOpenAIAssistantMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class InputMessageOpenAIAssistantMessageParamToolCallFunction(BaseModel): arguments: Optional[str] = None + """(Optional) Arguments to pass to the function as a JSON string""" name: Optional[str] = None + """(Optional) Name of the function to call""" class InputMessageOpenAIAssistantMessageParamToolCall(BaseModel): type: Literal["function"] + """Must be "function" to identify this as a function call""" id: Optional[str] = None + """(Optional) Unique identifier for the tool call""" function: Optional[InputMessageOpenAIAssistantMessageParamToolCallFunction] = None + """(Optional) Function call details""" index: Optional[int] = None + """(Optional) Index of the tool call in the list""" class InputMessageOpenAIAssistantMessageParam(BaseModel): @@ -515,31 +423,12 @@ class InputMessageOpenAIAssistantMessageParam(BaseModel): """List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object.""" -class InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class InputMessageOpenAIToolMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL(BaseModel): - url: str - - detail: Optional[str] = None - - -class InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - - type: Literal["image_url"] - - -InputMessageOpenAIToolMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - InputMessageOpenAIToolMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class InputMessageOpenAIToolMessageParam(BaseModel): @@ -553,35 +442,12 @@ class InputMessageOpenAIToolMessageParam(BaseModel): """Unique identifier for the tool call this response is for""" -class InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam(BaseModel): +class InputMessageOpenAIDeveloperMessageParamContentUnionMember1(BaseModel): text: str + """The text content of the message""" type: Literal["text"] - - -class InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL( - BaseModel -): - url: str - - detail: Optional[str] = None - - -class InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam(BaseModel): - image_url: ( - InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParamImageURL - ) - - type: Literal["image_url"] - - -InputMessageOpenAIDeveloperMessageParamContentUnionMember1: TypeAlias = Annotated[ - Union[ - InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartTextParam, - InputMessageOpenAIDeveloperMessageParamContentUnionMember1OpenAIChatCompletionContentPartImageParam, - ], - PropertyInfo(discriminator="type"), -] + """Must be "text" to identify this as text content""" class InputMessageOpenAIDeveloperMessageParam(BaseModel): diff --git a/src/llama_stack_client/types/chat_completion_chunk.py b/src/llama_stack_client/types/chat_completion_chunk.py index 7d74663a..788a34ed 100644 --- a/src/llama_stack_client/types/chat_completion_chunk.py +++ b/src/llama_stack_client/types/chat_completion_chunk.py @@ -21,18 +21,24 @@ class ChoiceDeltaToolCallFunction(BaseModel): arguments: Optional[str] = None + """(Optional) Arguments to pass to the function as a JSON string""" name: Optional[str] = None + """(Optional) Name of the function to call""" class ChoiceDeltaToolCall(BaseModel): type: Literal["function"] + """Must be "function" to identify this as a function call""" id: Optional[str] = None + """(Optional) Unique identifier for the tool call""" function: Optional[ChoiceDeltaToolCallFunction] = None + """(Optional) Function call details""" index: Optional[int] = None + """(Optional) Index of the tool call in the list""" class ChoiceDelta(BaseModel): diff --git a/src/llama_stack_client/types/chat_completion_response_stream_chunk.py b/src/llama_stack_client/types/chat_completion_response_stream_chunk.py index 3c236fd4..2b94eb18 100644 --- a/src/llama_stack_client/types/chat_completion_response_stream_chunk.py +++ b/src/llama_stack_client/types/chat_completion_response_stream_chunk.py @@ -29,10 +29,13 @@ class Event(BaseModel): class Metric(BaseModel): metric: str + """The name of the metric""" value: float + """The numeric value of the metric""" unit: Optional[str] = None + """(Optional) The unit of measurement for the metric value""" class ChatCompletionResponseStreamChunk(BaseModel): @@ -40,3 +43,4 @@ class ChatCompletionResponseStreamChunk(BaseModel): """The event containing the new content""" metrics: Optional[List[Metric]] = None + """(Optional) List of metrics associated with the API response""" diff --git a/src/llama_stack_client/types/completion_response.py b/src/llama_stack_client/types/completion_response.py index 78254b28..51772801 100644 --- a/src/llama_stack_client/types/completion_response.py +++ b/src/llama_stack_client/types/completion_response.py @@ -11,10 +11,13 @@ class Metric(BaseModel): metric: str + """The name of the metric""" value: float + """The numeric value of the metric""" unit: Optional[str] = None + """(Optional) The unit of measurement for the metric value""" class CompletionResponse(BaseModel): @@ -28,3 +31,4 @@ class CompletionResponse(BaseModel): """Optional log probabilities for generated tokens""" metrics: Optional[List[Metric]] = None + """(Optional) List of metrics associated with the API response""" diff --git a/src/llama_stack_client/types/create_response.py b/src/llama_stack_client/types/create_response.py new file mode 100644 index 00000000..b0eaf3e5 --- /dev/null +++ b/src/llama_stack_client/types/create_response.py @@ -0,0 +1,44 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Dict, List, Union, Optional + +from .._models import BaseModel + +__all__ = ["CreateResponse", "Result"] + + +class Result(BaseModel): + flagged: bool + """Whether any of the below categories are flagged.""" + + metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + + categories: Optional[Dict[str, bool]] = None + """A list of the categories, and whether they are flagged or not.""" + + category_applied_input_types: Optional[Dict[str, List[str]]] = None + """ + A list of the categories along with the input type(s) that the score applies to. + """ + + category_scores: Optional[Dict[str, float]] = None + """A list of the categories along with their scores as predicted by model. + + Required set of categories that need to be in response - violence - + violence/graphic - harassment - harassment/threatening - hate - + hate/threatening - illicit - illicit/violent - sexual - sexual/minors - + self-harm - self-harm/intent - self-harm/instructions + """ + + user_message: Optional[str] = None + + +class CreateResponse(BaseModel): + id: str + """The unique identifier for the moderation request.""" + + model: str + """The model used to generate the moderation results.""" + + results: List[Result] + """A list of moderation objects""" diff --git a/src/llama_stack_client/types/dataset_list_response.py b/src/llama_stack_client/types/dataset_list_response.py index 42b27ab4..7080e589 100644 --- a/src/llama_stack_client/types/dataset_list_response.py +++ b/src/llama_stack_client/types/dataset_list_response.py @@ -47,16 +47,18 @@ class DatasetListResponseItem(BaseModel): identifier: str metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + """Additional metadata for the dataset""" provider_id: str purpose: Literal["post-training/messages", "eval/question-answer", "eval/messages-answer"] - """Purpose of the dataset. Each purpose has a required input data schema.""" + """Purpose of the dataset indicating its intended use""" source: DatasetListResponseItemSource - """A dataset that can be obtained from a URI.""" + """Data source configuration for the dataset""" type: Literal["dataset"] + """Type of resource, always 'dataset' for datasets""" provider_resource_id: Optional[str] = None diff --git a/src/llama_stack_client/types/dataset_register_response.py b/src/llama_stack_client/types/dataset_register_response.py index a79367bb..8da590b8 100644 --- a/src/llama_stack_client/types/dataset_register_response.py +++ b/src/llama_stack_client/types/dataset_register_response.py @@ -38,15 +38,17 @@ class DatasetRegisterResponse(BaseModel): identifier: str metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + """Additional metadata for the dataset""" provider_id: str purpose: Literal["post-training/messages", "eval/question-answer", "eval/messages-answer"] - """Purpose of the dataset. Each purpose has a required input data schema.""" + """Purpose of the dataset indicating its intended use""" source: Source - """A dataset that can be obtained from a URI.""" + """Data source configuration for the dataset""" type: Literal["dataset"] + """Type of resource, always 'dataset' for datasets""" provider_resource_id: Optional[str] = None diff --git a/src/llama_stack_client/types/dataset_retrieve_response.py b/src/llama_stack_client/types/dataset_retrieve_response.py index ab96c387..6cda0a42 100644 --- a/src/llama_stack_client/types/dataset_retrieve_response.py +++ b/src/llama_stack_client/types/dataset_retrieve_response.py @@ -38,15 +38,17 @@ class DatasetRetrieveResponse(BaseModel): identifier: str metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + """Additional metadata for the dataset""" provider_id: str purpose: Literal["post-training/messages", "eval/question-answer", "eval/messages-answer"] - """Purpose of the dataset. Each purpose has a required input data schema.""" + """Purpose of the dataset indicating its intended use""" source: Source - """A dataset that can be obtained from a URI.""" + """Data source configuration for the dataset""" type: Literal["dataset"] + """Type of resource, always 'dataset' for datasets""" provider_resource_id: Optional[str] = None diff --git a/src/llama_stack_client/types/event_param.py b/src/llama_stack_client/types/event_param.py index 500e4a24..b26f2916 100644 --- a/src/llama_stack_client/types/event_param.py +++ b/src/llama_stack_client/types/event_param.py @@ -21,50 +21,70 @@ class UnstructuredLogEvent(TypedDict, total=False): message: Required[str] + """The log message text""" severity: Required[Literal["verbose", "debug", "info", "warn", "error", "critical"]] + """The severity level of the log message""" span_id: Required[str] + """Unique identifier for the span this event belongs to""" timestamp: Required[Annotated[Union[str, datetime], PropertyInfo(format="iso8601")]] + """Timestamp when the event occurred""" trace_id: Required[str] + """Unique identifier for the trace this event belongs to""" type: Required[Literal["unstructured_log"]] + """Event type identifier set to UNSTRUCTURED_LOG""" attributes: Dict[str, Union[str, float, bool, None]] + """(Optional) Key-value pairs containing additional metadata about the event""" class MetricEvent(TypedDict, total=False): metric: Required[str] + """The name of the metric being measured""" span_id: Required[str] + """Unique identifier for the span this event belongs to""" timestamp: Required[Annotated[Union[str, datetime], PropertyInfo(format="iso8601")]] + """Timestamp when the event occurred""" trace_id: Required[str] + """Unique identifier for the trace this event belongs to""" type: Required[Literal["metric"]] + """Event type identifier set to METRIC""" unit: Required[str] + """The unit of measurement for the metric value""" value: Required[float] + """The numeric value of the metric measurement""" attributes: Dict[str, Union[str, float, bool, None]] + """(Optional) Key-value pairs containing additional metadata about the event""" class StructuredLogEventPayloadSpanStartPayload(TypedDict, total=False): name: Required[str] + """Human-readable name describing the operation this span represents""" type: Required[Literal["span_start"]] + """Payload type identifier set to SPAN_START""" parent_span_id: str + """(Optional) Unique identifier for the parent span, if this is a child span""" class StructuredLogEventPayloadSpanEndPayload(TypedDict, total=False): status: Required[Literal["ok", "error"]] + """The final status of the span indicating success or failure""" type: Required[Literal["span_end"]] + """Payload type identifier set to SPAN_END""" StructuredLogEventPayload: TypeAlias = Union[ @@ -74,16 +94,22 @@ class StructuredLogEventPayloadSpanEndPayload(TypedDict, total=False): class StructuredLogEvent(TypedDict, total=False): payload: Required[StructuredLogEventPayload] + """The structured payload data for the log event""" span_id: Required[str] + """Unique identifier for the span this event belongs to""" timestamp: Required[Annotated[Union[str, datetime], PropertyInfo(format="iso8601")]] + """Timestamp when the event occurred""" trace_id: Required[str] + """Unique identifier for the trace this event belongs to""" type: Required[Literal["structured_log"]] + """Event type identifier set to STRUCTURED_LOG""" attributes: Dict[str, Union[str, float, bool, None]] + """(Optional) Key-value pairs containing additional metadata about the event""" EventParam: TypeAlias = Union[UnstructuredLogEvent, MetricEvent, StructuredLogEvent] diff --git a/src/llama_stack_client/types/health_info.py b/src/llama_stack_client/types/health_info.py index 3441ddd1..86410ed0 100644 --- a/src/llama_stack_client/types/health_info.py +++ b/src/llama_stack_client/types/health_info.py @@ -9,3 +9,4 @@ class HealthInfo(BaseModel): status: Literal["OK", "Error", "Not Implemented"] + """Current health status of the service""" diff --git a/src/llama_stack_client/types/inference_batch_chat_completion_response.py b/src/llama_stack_client/types/inference_batch_chat_completion_response.py index 84d6c425..ed24908d 100644 --- a/src/llama_stack_client/types/inference_batch_chat_completion_response.py +++ b/src/llama_stack_client/types/inference_batch_chat_completion_response.py @@ -10,3 +10,4 @@ class InferenceBatchChatCompletionResponse(BaseModel): batch: List[ChatCompletionResponse] + """List of chat completion responses, one for each conversation in the batch""" diff --git a/src/llama_stack_client/types/job.py b/src/llama_stack_client/types/job.py index 4953b3bf..9635de38 100644 --- a/src/llama_stack_client/types/job.py +++ b/src/llama_stack_client/types/job.py @@ -9,5 +9,7 @@ class Job(BaseModel): job_id: str + """Unique identifier for the job""" status: Literal["completed", "in_progress", "failed", "scheduled", "cancelled"] + """Current execution status of the job""" diff --git a/src/llama_stack_client/types/list_datasets_response.py b/src/llama_stack_client/types/list_datasets_response.py index 5a897f78..21c4b72a 100644 --- a/src/llama_stack_client/types/list_datasets_response.py +++ b/src/llama_stack_client/types/list_datasets_response.py @@ -8,3 +8,4 @@ class ListDatasetsResponse(BaseModel): data: DatasetListResponse + """List of datasets""" diff --git a/src/llama_stack_client/types/list_files_response.py b/src/llama_stack_client/types/list_files_response.py index cbb7d514..fb42f298 100644 --- a/src/llama_stack_client/types/list_files_response.py +++ b/src/llama_stack_client/types/list_files_response.py @@ -14,10 +14,13 @@ class ListFilesResponse(BaseModel): """List of file objects""" first_id: str + """ID of the first file in the list for pagination""" has_more: bool + """Whether there are more files available beyond this page""" last_id: str + """ID of the last file in the list for pagination""" object: Literal["list"] """The object type, which is always "list" """ diff --git a/src/llama_stack_client/types/list_providers_response.py b/src/llama_stack_client/types/list_providers_response.py index 4904c0b1..c75b6880 100644 --- a/src/llama_stack_client/types/list_providers_response.py +++ b/src/llama_stack_client/types/list_providers_response.py @@ -8,3 +8,4 @@ class ListProvidersResponse(BaseModel): data: ProviderListResponse + """List of provider information objects""" diff --git a/src/llama_stack_client/types/list_routes_response.py b/src/llama_stack_client/types/list_routes_response.py index 59e8392b..d038fe6d 100644 --- a/src/llama_stack_client/types/list_routes_response.py +++ b/src/llama_stack_client/types/list_routes_response.py @@ -8,3 +8,4 @@ class ListRoutesResponse(BaseModel): data: RouteListResponse + """List of available route information objects""" diff --git a/src/llama_stack_client/types/list_tool_groups_response.py b/src/llama_stack_client/types/list_tool_groups_response.py index 6433b164..94c5c145 100644 --- a/src/llama_stack_client/types/list_tool_groups_response.py +++ b/src/llama_stack_client/types/list_tool_groups_response.py @@ -8,3 +8,4 @@ class ListToolGroupsResponse(BaseModel): data: ToolgroupListResponse + """List of tool groups""" diff --git a/src/llama_stack_client/types/list_tools_response.py b/src/llama_stack_client/types/list_tools_response.py index c9b4ec6b..47f040b5 100644 --- a/src/llama_stack_client/types/list_tools_response.py +++ b/src/llama_stack_client/types/list_tools_response.py @@ -8,3 +8,4 @@ class ListToolsResponse(BaseModel): data: ToolListResponse + """List of tools""" diff --git a/src/llama_stack_client/types/list_vector_dbs_response.py b/src/llama_stack_client/types/list_vector_dbs_response.py index fede6c42..5ff7d5e5 100644 --- a/src/llama_stack_client/types/list_vector_dbs_response.py +++ b/src/llama_stack_client/types/list_vector_dbs_response.py @@ -8,3 +8,4 @@ class ListVectorDBsResponse(BaseModel): data: VectorDBListResponse + """List of vector databases""" diff --git a/src/llama_stack_client/types/list_vector_stores_response.py b/src/llama_stack_client/types/list_vector_stores_response.py index c79fd895..d4960217 100644 --- a/src/llama_stack_client/types/list_vector_stores_response.py +++ b/src/llama_stack_client/types/list_vector_stores_response.py @@ -10,11 +10,16 @@ class ListVectorStoresResponse(BaseModel): data: List[VectorStore] + """List of vector store objects""" has_more: bool + """Whether there are more vector stores available beyond this page""" object: str + """Object type identifier, always "list" """ first_id: Optional[str] = None + """(Optional) ID of the first vector store in the list for pagination""" last_id: Optional[str] = None + """(Optional) ID of the last vector store in the list for pagination""" diff --git a/src/llama_stack_client/types/model.py b/src/llama_stack_client/types/model.py index dea24d53..5651667d 100644 --- a/src/llama_stack_client/types/model.py +++ b/src/llama_stack_client/types/model.py @@ -12,13 +12,19 @@ class Model(BaseModel): identifier: str + """Unique identifier for this resource in llama stack""" metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + """Any additional metadata for this model""" api_model_type: Literal["llm", "embedding"] = FieldInfo(alias="model_type") + """The type of model (LLM or embedding model)""" provider_id: str + """ID of the provider that owns this resource""" type: Literal["model"] + """The resource type, always 'model' for model resources""" provider_resource_id: Optional[str] = None + """Unique identifier for this resource in the provider""" diff --git a/src/llama_stack_client/types/moderation_create_params.py b/src/llama_stack_client/types/moderation_create_params.py new file mode 100644 index 00000000..61f7bc1b --- /dev/null +++ b/src/llama_stack_client/types/moderation_create_params.py @@ -0,0 +1,20 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing import List, Union +from typing_extensions import Required, TypedDict + +__all__ = ["ModerationCreateParams"] + + +class ModerationCreateParams(TypedDict, total=False): + input: Required[Union[str, List[str]]] + """Input (or inputs) to classify. + + Can be a single string, an array of strings, or an array of multi-modal input + objects similar to other models. + """ + + model: Required[str] + """The content moderation model you would like to use.""" diff --git a/src/llama_stack_client/types/post_training/job_artifacts_response.py b/src/llama_stack_client/types/post_training/job_artifacts_response.py index 0fb98c6c..42784aee 100644 --- a/src/llama_stack_client/types/post_training/job_artifacts_response.py +++ b/src/llama_stack_client/types/post_training/job_artifacts_response.py @@ -1,13 +1,50 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List +from typing import List, Optional +from datetime import datetime from ..._models import BaseModel -__all__ = ["JobArtifactsResponse"] +__all__ = ["JobArtifactsResponse", "Checkpoint", "CheckpointTrainingMetrics"] + + +class CheckpointTrainingMetrics(BaseModel): + epoch: int + """Training epoch number""" + + perplexity: float + """Perplexity metric indicating model confidence""" + + train_loss: float + """Loss value on the training dataset""" + + validation_loss: float + """Loss value on the validation dataset""" + + +class Checkpoint(BaseModel): + created_at: datetime + """Timestamp when the checkpoint was created""" + + epoch: int + """Training epoch when the checkpoint was saved""" + + identifier: str + """Unique identifier for the checkpoint""" + + path: str + """File system path where the checkpoint is stored""" + + post_training_job_id: str + """Identifier of the training job that created this checkpoint""" + + training_metrics: Optional[CheckpointTrainingMetrics] = None + """(Optional) Training metrics associated with this checkpoint""" class JobArtifactsResponse(BaseModel): - checkpoints: List[object] + checkpoints: List[Checkpoint] + """List of model checkpoints created during training""" job_uuid: str + """Unique identifier for the training job""" diff --git a/src/llama_stack_client/types/post_training/job_status_response.py b/src/llama_stack_client/types/post_training/job_status_response.py index 5ba60a6a..94379579 100644 --- a/src/llama_stack_client/types/post_training/job_status_response.py +++ b/src/llama_stack_client/types/post_training/job_status_response.py @@ -6,20 +6,61 @@ from ..._models import BaseModel -__all__ = ["JobStatusResponse"] +__all__ = ["JobStatusResponse", "Checkpoint", "CheckpointTrainingMetrics"] + + +class CheckpointTrainingMetrics(BaseModel): + epoch: int + """Training epoch number""" + + perplexity: float + """Perplexity metric indicating model confidence""" + + train_loss: float + """Loss value on the training dataset""" + + validation_loss: float + """Loss value on the validation dataset""" + + +class Checkpoint(BaseModel): + created_at: datetime + """Timestamp when the checkpoint was created""" + + epoch: int + """Training epoch when the checkpoint was saved""" + + identifier: str + """Unique identifier for the checkpoint""" + + path: str + """File system path where the checkpoint is stored""" + + post_training_job_id: str + """Identifier of the training job that created this checkpoint""" + + training_metrics: Optional[CheckpointTrainingMetrics] = None + """(Optional) Training metrics associated with this checkpoint""" class JobStatusResponse(BaseModel): - checkpoints: List[object] + checkpoints: List[Checkpoint] + """List of model checkpoints created during training""" job_uuid: str + """Unique identifier for the training job""" status: Literal["completed", "in_progress", "failed", "scheduled", "cancelled"] + """Current status of the training job""" completed_at: Optional[datetime] = None + """(Optional) Timestamp when the job finished, if completed""" resources_allocated: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Information about computational resources allocated to the job""" scheduled_at: Optional[datetime] = None + """(Optional) Timestamp when the job was scheduled""" started_at: Optional[datetime] = None + """(Optional) Timestamp when the job execution began""" diff --git a/src/llama_stack_client/types/post_training_preference_optimize_params.py b/src/llama_stack_client/types/post_training_preference_optimize_params.py index f7d998eb..2dcd294d 100644 --- a/src/llama_stack_client/types/post_training_preference_optimize_params.py +++ b/src/llama_stack_client/types/post_training_preference_optimize_params.py @@ -36,64 +36,88 @@ class PostTrainingPreferenceOptimizeParams(TypedDict, total=False): class AlgorithmConfig(TypedDict, total=False): - epsilon: Required[float] + beta: Required[float] + """Temperature parameter for the DPO loss""" - gamma: Required[float] - - reward_clip: Required[float] - - reward_scale: Required[float] + loss_type: Required[Literal["sigmoid", "hinge", "ipo", "kto_pair"]] + """The type of loss function to use for DPO""" class TrainingConfigDataConfig(TypedDict, total=False): batch_size: Required[int] + """Number of samples per training batch""" data_format: Required[Literal["instruct", "dialog"]] + """Format of the dataset (instruct or dialog)""" dataset_id: Required[str] + """Unique identifier for the training dataset""" shuffle: Required[bool] + """Whether to shuffle the dataset during training""" packed: bool + """ + (Optional) Whether to pack multiple samples into a single sequence for + efficiency + """ train_on_input: bool + """(Optional) Whether to compute loss on input tokens as well as output tokens""" validation_dataset_id: str + """(Optional) Unique identifier for the validation dataset""" class TrainingConfigEfficiencyConfig(TypedDict, total=False): enable_activation_checkpointing: bool + """(Optional) Whether to use activation checkpointing to reduce memory usage""" enable_activation_offloading: bool + """(Optional) Whether to offload activations to CPU to save GPU memory""" fsdp_cpu_offload: bool + """(Optional) Whether to offload FSDP parameters to CPU""" memory_efficient_fsdp_wrap: bool + """(Optional) Whether to use memory-efficient FSDP wrapping""" class TrainingConfigOptimizerConfig(TypedDict, total=False): lr: Required[float] + """Learning rate for the optimizer""" num_warmup_steps: Required[int] + """Number of steps for learning rate warmup""" optimizer_type: Required[Literal["adam", "adamw", "sgd"]] + """Type of optimizer to use (adam, adamw, or sgd)""" weight_decay: Required[float] + """Weight decay coefficient for regularization""" class TrainingConfig(TypedDict, total=False): gradient_accumulation_steps: Required[int] + """Number of steps to accumulate gradients before updating""" max_steps_per_epoch: Required[int] + """Maximum number of steps to run per epoch""" n_epochs: Required[int] + """Number of training epochs to run""" data_config: TrainingConfigDataConfig + """(Optional) Configuration for data loading and formatting""" dtype: str + """(Optional) Data type for model parameters (bf16, fp16, fp32)""" efficiency_config: TrainingConfigEfficiencyConfig + """(Optional) Configuration for memory and compute optimizations""" max_validation_steps: int + """(Optional) Maximum number of validation steps per epoch""" optimizer_config: TrainingConfigOptimizerConfig + """(Optional) Configuration for the optimization algorithm""" diff --git a/src/llama_stack_client/types/post_training_supervised_fine_tune_params.py b/src/llama_stack_client/types/post_training_supervised_fine_tune_params.py index 596ec18b..c23796f0 100644 --- a/src/llama_stack_client/types/post_training_supervised_fine_tune_params.py +++ b/src/llama_stack_client/types/post_training_supervised_fine_tune_params.py @@ -41,53 +41,79 @@ class PostTrainingSupervisedFineTuneParams(TypedDict, total=False): class TrainingConfigDataConfig(TypedDict, total=False): batch_size: Required[int] + """Number of samples per training batch""" data_format: Required[Literal["instruct", "dialog"]] + """Format of the dataset (instruct or dialog)""" dataset_id: Required[str] + """Unique identifier for the training dataset""" shuffle: Required[bool] + """Whether to shuffle the dataset during training""" packed: bool + """ + (Optional) Whether to pack multiple samples into a single sequence for + efficiency + """ train_on_input: bool + """(Optional) Whether to compute loss on input tokens as well as output tokens""" validation_dataset_id: str + """(Optional) Unique identifier for the validation dataset""" class TrainingConfigEfficiencyConfig(TypedDict, total=False): enable_activation_checkpointing: bool + """(Optional) Whether to use activation checkpointing to reduce memory usage""" enable_activation_offloading: bool + """(Optional) Whether to offload activations to CPU to save GPU memory""" fsdp_cpu_offload: bool + """(Optional) Whether to offload FSDP parameters to CPU""" memory_efficient_fsdp_wrap: bool + """(Optional) Whether to use memory-efficient FSDP wrapping""" class TrainingConfigOptimizerConfig(TypedDict, total=False): lr: Required[float] + """Learning rate for the optimizer""" num_warmup_steps: Required[int] + """Number of steps for learning rate warmup""" optimizer_type: Required[Literal["adam", "adamw", "sgd"]] + """Type of optimizer to use (adam, adamw, or sgd)""" weight_decay: Required[float] + """Weight decay coefficient for regularization""" class TrainingConfig(TypedDict, total=False): gradient_accumulation_steps: Required[int] + """Number of steps to accumulate gradients before updating""" max_steps_per_epoch: Required[int] + """Maximum number of steps to run per epoch""" n_epochs: Required[int] + """Number of training epochs to run""" data_config: TrainingConfigDataConfig + """(Optional) Configuration for data loading and formatting""" dtype: str + """(Optional) Data type for model parameters (bf16, fp16, fp32)""" efficiency_config: TrainingConfigEfficiencyConfig + """(Optional) Configuration for memory and compute optimizations""" max_validation_steps: int + """(Optional) Maximum number of validation steps per epoch""" optimizer_config: TrainingConfigOptimizerConfig + """(Optional) Configuration for the optimization algorithm""" diff --git a/src/llama_stack_client/types/provider_info.py b/src/llama_stack_client/types/provider_info.py index c9c748cc..6b8a1ec6 100644 --- a/src/llama_stack_client/types/provider_info.py +++ b/src/llama_stack_client/types/provider_info.py @@ -9,11 +9,16 @@ class ProviderInfo(BaseModel): api: str + """The API name this provider implements""" config: Dict[str, Union[bool, float, str, List[object], object, None]] + """Configuration parameters for the provider""" health: Dict[str, Union[bool, float, str, List[object], object, None]] + """Current health status of the provider""" provider_id: str + """Unique identifier for the provider""" provider_type: str + """The type of provider implementation""" diff --git a/src/llama_stack_client/types/query_chunks_response.py b/src/llama_stack_client/types/query_chunks_response.py index 97c1927c..6a06b3f2 100644 --- a/src/llama_stack_client/types/query_chunks_response.py +++ b/src/llama_stack_client/types/query_chunks_response.py @@ -76,5 +76,7 @@ class Chunk(BaseModel): class QueryChunksResponse(BaseModel): chunks: List[Chunk] + """List of content chunks returned from the query""" scores: List[float] + """Relevance scores corresponding to each returned chunk""" diff --git a/src/llama_stack_client/types/query_condition_param.py b/src/llama_stack_client/types/query_condition_param.py index 37c48093..59def1b4 100644 --- a/src/llama_stack_client/types/query_condition_param.py +++ b/src/llama_stack_client/types/query_condition_param.py @@ -10,7 +10,10 @@ class QueryConditionParam(TypedDict, total=False): key: Required[str] + """The attribute key to filter on""" op: Required[Literal["eq", "ne", "gt", "lt"]] + """The comparison operator to apply""" value: Required[Union[bool, float, str, Iterable[object], object, None]] + """The value to compare against""" diff --git a/src/llama_stack_client/types/query_spans_response.py b/src/llama_stack_client/types/query_spans_response.py index 488a4331..a20c9b92 100644 --- a/src/llama_stack_client/types/query_spans_response.py +++ b/src/llama_stack_client/types/query_spans_response.py @@ -8,3 +8,4 @@ class QuerySpansResponse(BaseModel): data: TelemetryQuerySpansResponse + """List of spans matching the query criteria""" diff --git a/src/llama_stack_client/types/response_create_params.py b/src/llama_stack_client/types/response_create_params.py index 471d8b21..74857714 100644 --- a/src/llama_stack_client/types/response_create_params.py +++ b/src/llama_stack_client/types/response_create_params.py @@ -62,42 +62,57 @@ class ResponseCreateParamsBase(TypedDict, total=False): temperature: float text: Text + """Text response configuration for OpenAI responses.""" tools: Iterable[Tool] class InputUnionMember1OpenAIResponseOutputMessageWebSearchToolCall(TypedDict, total=False): id: Required[str] + """Unique identifier for this tool call""" status: Required[str] + """Current status of the web search operation""" type: Required[Literal["web_search_call"]] + """Tool call type identifier, always "web_search_call" """ class InputUnionMember1OpenAIResponseOutputMessageFileSearchToolCall(TypedDict, total=False): id: Required[str] + """Unique identifier for this tool call""" queries: Required[List[str]] + """List of search queries executed""" status: Required[str] + """Current status of the file search operation""" type: Required[Literal["file_search_call"]] + """Tool call type identifier, always "file_search_call" """ results: Iterable[Dict[str, Union[bool, float, str, Iterable[object], object, None]]] + """(Optional) Search results returned by the file search operation""" class InputUnionMember1OpenAIResponseOutputMessageFunctionToolCall(TypedDict, total=False): arguments: Required[str] + """JSON string containing the function arguments""" call_id: Required[str] + """Unique identifier for the function call""" name: Required[str] + """Name of the function being called""" type: Required[Literal["function_call"]] + """Tool call type identifier, always "function_call" """ id: str + """(Optional) Additional identifier for the tool call""" status: str + """(Optional) Current status of the function call execution""" class InputUnionMember1OpenAIResponseInputFunctionToolCallOutput(TypedDict, total=False): @@ -116,18 +131,23 @@ class InputUnionMember1OpenAIResponseMessageContentUnionMember1OpenAIResponseInp TypedDict, total=False ): text: Required[str] + """The text content of the input message""" type: Required[Literal["input_text"]] + """Content type identifier, always "input_text" """ class InputUnionMember1OpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage( TypedDict, total=False ): detail: Required[Literal["low", "high", "auto"]] + """Level of detail for image processing, can be "low", "high", or "auto" """ type: Required[Literal["input_image"]] + """Content type identifier, always "input_image" """ image_url: str + """(Optional) URL of the image content""" InputUnionMember1OpenAIResponseMessageContentUnionMember1: TypeAlias = Union[ @@ -140,26 +160,35 @@ class InputUnionMember1OpenAIResponseMessageContentUnionMember2AnnotationOpenAIR TypedDict, total=False ): file_id: Required[str] + """Unique identifier of the referenced file""" filename: Required[str] + """Name of the referenced file""" index: Required[int] + """Position index of the citation within the content""" type: Required[Literal["file_citation"]] + """Annotation type identifier, always "file_citation" """ class InputUnionMember1OpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationCitation( TypedDict, total=False ): end_index: Required[int] + """End position of the citation span in the content""" start_index: Required[int] + """Start position of the citation span in the content""" title: Required[str] + """Title of the referenced web resource""" type: Required[Literal["url_citation"]] + """Annotation type identifier, always "url_citation" """ url: Required[str] + """URL of the referenced web resource""" class InputUnionMember1OpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationContainerFileCitation( @@ -256,49 +285,65 @@ class TextFormat(TypedDict, total=False): class Text(TypedDict, total=False): format: TextFormat - """Configuration for Responses API text format.""" + """(Optional) Text format configuration specifying output format requirements""" class ToolOpenAIResponseInputToolWebSearch(TypedDict, total=False): type: Required[Literal["web_search", "web_search_preview", "web_search_preview_2025_03_11"]] + """Web search tool type variant to use""" search_context_size: str + """(Optional) Size of search context, must be "low", "medium", or "high" """ class ToolOpenAIResponseInputToolFileSearchRankingOptions(TypedDict, total=False): ranker: str + """(Optional) Name of the ranking algorithm to use""" score_threshold: float + """(Optional) Minimum relevance score threshold for results""" class ToolOpenAIResponseInputToolFileSearch(TypedDict, total=False): type: Required[Literal["file_search"]] + """Tool type identifier, always "file_search" """ vector_store_ids: Required[List[str]] + """List of vector store identifiers to search within""" filters: Dict[str, Union[bool, float, str, Iterable[object], object, None]] + """(Optional) Additional filters to apply to the search""" max_num_results: int + """(Optional) Maximum number of search results to return (1-50)""" ranking_options: ToolOpenAIResponseInputToolFileSearchRankingOptions + """(Optional) Options for ranking and scoring search results""" class ToolOpenAIResponseInputToolFunction(TypedDict, total=False): name: Required[str] + """Name of the function that can be called""" type: Required[Literal["function"]] + """Tool type identifier, always "function" """ description: str + """(Optional) Description of what the function does""" parameters: Dict[str, Union[bool, float, str, Iterable[object], object, None]] + """(Optional) JSON schema defining the function's parameters""" strict: bool + """(Optional) Whether to enforce strict parameter validation""" class ToolOpenAIResponseInputToolMcpRequireApprovalApprovalFilter(TypedDict, total=False): always: List[str] + """(Optional) List of tool names that always require approval""" never: List[str] + """(Optional) List of tool names that never require approval""" ToolOpenAIResponseInputToolMcpRequireApproval: TypeAlias = Union[ @@ -308,6 +353,7 @@ class ToolOpenAIResponseInputToolMcpRequireApprovalApprovalFilter(TypedDict, tot class ToolOpenAIResponseInputToolMcpAllowedToolsAllowedToolsFilter(TypedDict, total=False): tool_names: List[str] + """(Optional) List of specific tool names that are allowed""" ToolOpenAIResponseInputToolMcpAllowedTools: TypeAlias = Union[ @@ -317,16 +363,22 @@ class ToolOpenAIResponseInputToolMcpAllowedToolsAllowedToolsFilter(TypedDict, to class ToolOpenAIResponseInputToolMcp(TypedDict, total=False): require_approval: Required[ToolOpenAIResponseInputToolMcpRequireApproval] + """Approval requirement for tool calls ("always", "never", or filter)""" server_label: Required[str] + """Label to identify this MCP server""" server_url: Required[str] + """URL endpoint of the MCP server""" type: Required[Literal["mcp"]] + """Tool type identifier, always "mcp" """ allowed_tools: ToolOpenAIResponseInputToolMcpAllowedTools + """(Optional) Restriction on which tools can be used from this server""" headers: Dict[str, Union[bool, float, str, Iterable[object], object, None]] + """(Optional) HTTP headers to include when connecting to the server""" Tool: TypeAlias = Union[ diff --git a/src/llama_stack_client/types/response_list_response.py b/src/llama_stack_client/types/response_list_response.py index d46213ef..996fb00a 100644 --- a/src/llama_stack_client/types/response_list_response.py +++ b/src/llama_stack_client/types/response_list_response.py @@ -51,36 +51,50 @@ class DataInputOpenAIResponseOutputMessageWebSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" status: str + """Current status of the web search operation""" type: Literal["web_search_call"] + """Tool call type identifier, always "web_search_call" """ class DataInputOpenAIResponseOutputMessageFileSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" queries: List[str] + """List of search queries executed""" status: str + """Current status of the file search operation""" type: Literal["file_search_call"] + """Tool call type identifier, always "file_search_call" """ results: Optional[List[Dict[str, Union[bool, float, str, List[object], object, None]]]] = None + """(Optional) Search results returned by the file search operation""" class DataInputOpenAIResponseOutputMessageFunctionToolCall(BaseModel): arguments: str + """JSON string containing the function arguments""" call_id: str + """Unique identifier for the function call""" name: str + """Name of the function being called""" type: Literal["function_call"] + """Tool call type identifier, always "function_call" """ id: Optional[str] = None + """(Optional) Additional identifier for the tool call""" status: Optional[str] = None + """(Optional) Current status of the function call execution""" class DataInputOpenAIResponseInputFunctionToolCallOutput(BaseModel): @@ -97,16 +111,21 @@ class DataInputOpenAIResponseInputFunctionToolCallOutput(BaseModel): class DataInputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentText(BaseModel): text: str + """The text content of the input message""" type: Literal["input_text"] + """Content type identifier, always "input_text" """ class DataInputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage(BaseModel): detail: Literal["low", "high", "auto"] + """Level of detail for image processing, can be "low", "high", or "auto" """ type: Literal["input_image"] + """Content type identifier, always "input_image" """ image_url: Optional[str] = None + """(Optional) URL of the image content""" DataInputOpenAIResponseMessageContentUnionMember1: TypeAlias = Annotated[ @@ -120,24 +139,33 @@ class DataInputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessag class DataInputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationFileCitation(BaseModel): file_id: str + """Unique identifier of the referenced file""" filename: str + """Name of the referenced file""" index: int + """Position index of the citation within the content""" type: Literal["file_citation"] + """Annotation type identifier, always "file_citation" """ class DataInputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationCitation(BaseModel): end_index: int + """End position of the citation span in the content""" start_index: int + """Start position of the citation span in the content""" title: str + """Title of the referenced web resource""" type: Literal["url_citation"] + """Annotation type identifier, always "url_citation" """ url: str + """URL of the referenced web resource""" class DataInputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationContainerFileCitation( @@ -210,16 +238,21 @@ class DataInputOpenAIResponseMessage(BaseModel): class DataOutputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentText(BaseModel): text: str + """The text content of the input message""" type: Literal["input_text"] + """Content type identifier, always "input_text" """ class DataOutputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage(BaseModel): detail: Literal["low", "high", "auto"] + """Level of detail for image processing, can be "low", "high", or "auto" """ type: Literal["input_image"] + """Content type identifier, always "input_image" """ image_url: Optional[str] = None + """(Optional) URL of the image content""" DataOutputOpenAIResponseMessageContentUnionMember1: TypeAlias = Annotated[ @@ -233,24 +266,33 @@ class DataOutputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessa class DataOutputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationFileCitation(BaseModel): file_id: str + """Unique identifier of the referenced file""" filename: str + """Name of the referenced file""" index: int + """Position index of the citation within the content""" type: Literal["file_citation"] + """Annotation type identifier, always "file_citation" """ class DataOutputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationCitation(BaseModel): end_index: int + """End position of the citation span in the content""" start_index: int + """Start position of the citation span in the content""" title: str + """Title of the referenced web resource""" type: Literal["url_citation"] + """Annotation type identifier, always "url_citation" """ url: str + """URL of the referenced web resource""" class DataOutputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationContainerFileCitation( @@ -314,70 +356,98 @@ class DataOutputOpenAIResponseMessage(BaseModel): class DataOutputOpenAIResponseOutputMessageWebSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" status: str + """Current status of the web search operation""" type: Literal["web_search_call"] + """Tool call type identifier, always "web_search_call" """ class DataOutputOpenAIResponseOutputMessageFileSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" queries: List[str] + """List of search queries executed""" status: str + """Current status of the file search operation""" type: Literal["file_search_call"] + """Tool call type identifier, always "file_search_call" """ results: Optional[List[Dict[str, Union[bool, float, str, List[object], object, None]]]] = None + """(Optional) Search results returned by the file search operation""" class DataOutputOpenAIResponseOutputMessageFunctionToolCall(BaseModel): arguments: str + """JSON string containing the function arguments""" call_id: str + """Unique identifier for the function call""" name: str + """Name of the function being called""" type: Literal["function_call"] + """Tool call type identifier, always "function_call" """ id: Optional[str] = None + """(Optional) Additional identifier for the tool call""" status: Optional[str] = None + """(Optional) Current status of the function call execution""" class DataOutputOpenAIResponseOutputMessageMcpCall(BaseModel): id: str + """Unique identifier for this MCP call""" arguments: str + """JSON string containing the MCP call arguments""" name: str + """Name of the MCP method being called""" server_label: str + """Label identifying the MCP server handling the call""" type: Literal["mcp_call"] + """Tool call type identifier, always "mcp_call" """ error: Optional[str] = None + """(Optional) Error message if the MCP call failed""" output: Optional[str] = None + """(Optional) Output result from the successful MCP call""" class DataOutputOpenAIResponseOutputMessageMcpListToolsTool(BaseModel): input_schema: Dict[str, Union[bool, float, str, List[object], object, None]] + """JSON schema defining the tool's input parameters""" name: str + """Name of the tool""" description: Optional[str] = None + """(Optional) Description of what the tool does""" class DataOutputOpenAIResponseOutputMessageMcpListTools(BaseModel): id: str + """Unique identifier for this MCP list tools operation""" server_label: str + """Label identifying the MCP server providing the tools""" tools: List[DataOutputOpenAIResponseOutputMessageMcpListToolsTool] + """List of available tools provided by the MCP server""" type: Literal["mcp_list_tools"] + """Tool call type identifier, always "mcp_list_tools" """ DataOutput: TypeAlias = Annotated[ @@ -420,54 +490,76 @@ class DataTextFormat(BaseModel): class DataText(BaseModel): format: Optional[DataTextFormat] = None - """Configuration for Responses API text format.""" + """(Optional) Text format configuration specifying output format requirements""" class DataError(BaseModel): code: str + """Error code identifying the type of failure""" message: str + """Human-readable error message describing the failure""" class Data(BaseModel): id: str + """Unique identifier for this response""" created_at: int + """Unix timestamp when the response was created""" input: List[DataInput] + """List of input items that led to this response""" model: str + """Model identifier used for generation""" object: Literal["response"] + """Object type identifier, always "response" """ output: List[DataOutput] + """List of generated output items (messages, tool calls, etc.)""" parallel_tool_calls: bool + """Whether tool calls can be executed in parallel""" status: str + """Current status of the response generation""" text: DataText + """Text formatting configuration for the response""" error: Optional[DataError] = None + """(Optional) Error details if the response generation failed""" previous_response_id: Optional[str] = None + """(Optional) ID of the previous response in a conversation""" temperature: Optional[float] = None + """(Optional) Sampling temperature used for generation""" top_p: Optional[float] = None + """(Optional) Nucleus sampling parameter used for generation""" truncation: Optional[str] = None + """(Optional) Truncation strategy applied to the response""" user: Optional[str] = None + """(Optional) User identifier associated with the request""" class ResponseListResponse(BaseModel): data: List[Data] + """List of response objects with their input context""" first_id: str + """Identifier of the first item in this page""" has_more: bool + """Whether there are more results available beyond this page""" last_id: str + """Identifier of the last item in this page""" object: Literal["list"] + """Object type identifier, always "list" """ diff --git a/src/llama_stack_client/types/response_object.py b/src/llama_stack_client/types/response_object.py index e4b313d3..e1c88a16 100644 --- a/src/llama_stack_client/types/response_object.py +++ b/src/llama_stack_client/types/response_object.py @@ -35,16 +35,21 @@ class OutputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentText(BaseModel): text: str + """The text content of the input message""" type: Literal["input_text"] + """Content type identifier, always "input_text" """ class OutputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage(BaseModel): detail: Literal["low", "high", "auto"] + """Level of detail for image processing, can be "low", "high", or "auto" """ type: Literal["input_image"] + """Content type identifier, always "input_image" """ image_url: Optional[str] = None + """(Optional) URL of the image content""" OutputOpenAIResponseMessageContentUnionMember1: TypeAlias = Annotated[ @@ -58,24 +63,33 @@ class OutputOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageCo class OutputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationFileCitation(BaseModel): file_id: str + """Unique identifier of the referenced file""" filename: str + """Name of the referenced file""" index: int + """Position index of the citation within the content""" type: Literal["file_citation"] + """Annotation type identifier, always "file_citation" """ class OutputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationCitation(BaseModel): end_index: int + """End position of the citation span in the content""" start_index: int + """Start position of the citation span in the content""" title: str + """Title of the referenced web resource""" type: Literal["url_citation"] + """Annotation type identifier, always "url_citation" """ url: str + """URL of the referenced web resource""" class OutputOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationContainerFileCitation(BaseModel): @@ -135,70 +149,98 @@ class OutputOpenAIResponseMessage(BaseModel): class OutputOpenAIResponseOutputMessageWebSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" status: str + """Current status of the web search operation""" type: Literal["web_search_call"] + """Tool call type identifier, always "web_search_call" """ class OutputOpenAIResponseOutputMessageFileSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" queries: List[str] + """List of search queries executed""" status: str + """Current status of the file search operation""" type: Literal["file_search_call"] + """Tool call type identifier, always "file_search_call" """ results: Optional[List[Dict[str, Union[bool, float, str, List[object], object, None]]]] = None + """(Optional) Search results returned by the file search operation""" class OutputOpenAIResponseOutputMessageFunctionToolCall(BaseModel): arguments: str + """JSON string containing the function arguments""" call_id: str + """Unique identifier for the function call""" name: str + """Name of the function being called""" type: Literal["function_call"] + """Tool call type identifier, always "function_call" """ id: Optional[str] = None + """(Optional) Additional identifier for the tool call""" status: Optional[str] = None + """(Optional) Current status of the function call execution""" class OutputOpenAIResponseOutputMessageMcpCall(BaseModel): id: str + """Unique identifier for this MCP call""" arguments: str + """JSON string containing the MCP call arguments""" name: str + """Name of the MCP method being called""" server_label: str + """Label identifying the MCP server handling the call""" type: Literal["mcp_call"] + """Tool call type identifier, always "mcp_call" """ error: Optional[str] = None + """(Optional) Error message if the MCP call failed""" output: Optional[str] = None + """(Optional) Output result from the successful MCP call""" class OutputOpenAIResponseOutputMessageMcpListToolsTool(BaseModel): input_schema: Dict[str, Union[bool, float, str, List[object], object, None]] + """JSON schema defining the tool's input parameters""" name: str + """Name of the tool""" description: Optional[str] = None + """(Optional) Description of what the tool does""" class OutputOpenAIResponseOutputMessageMcpListTools(BaseModel): id: str + """Unique identifier for this MCP list tools operation""" server_label: str + """Label identifying the MCP server providing the tools""" tools: List[OutputOpenAIResponseOutputMessageMcpListToolsTool] + """List of available tools provided by the MCP server""" type: Literal["mcp_list_tools"] + """Tool call type identifier, always "mcp_list_tools" """ Output: TypeAlias = Annotated[ @@ -241,13 +283,15 @@ class TextFormat(BaseModel): class Text(BaseModel): format: Optional[TextFormat] = None - """Configuration for Responses API text format.""" + """(Optional) Text format configuration specifying output format requirements""" class Error(BaseModel): code: str + """Error code identifying the type of failure""" message: str + """Human-readable error message describing the failure""" class ResponseObject(BaseModel): @@ -262,29 +306,43 @@ def output_text(self) -> str: return "".join(texts) id: str + """Unique identifier for this response""" created_at: int + """Unix timestamp when the response was created""" model: str + """Model identifier used for generation""" object: Literal["response"] + """Object type identifier, always "response" """ output: List[Output] + """List of generated output items (messages, tool calls, etc.)""" parallel_tool_calls: bool + """Whether tool calls can be executed in parallel""" status: str + """Current status of the response generation""" text: Text + """Text formatting configuration for the response""" error: Optional[Error] = None + """(Optional) Error details if the response generation failed""" previous_response_id: Optional[str] = None + """(Optional) ID of the previous response in a conversation""" temperature: Optional[float] = None + """(Optional) Sampling temperature used for generation""" top_p: Optional[float] = None + """(Optional) Nucleus sampling parameter used for generation""" truncation: Optional[str] = None + """(Optional) Truncation strategy applied to the response""" user: Optional[str] = None + """(Optional) User identifier associated with the request""" diff --git a/src/llama_stack_client/types/response_object_stream.py b/src/llama_stack_client/types/response_object_stream.py index 311ad6bd..aa787093 100644 --- a/src/llama_stack_client/types/response_object_stream.py +++ b/src/llama_stack_client/types/response_object_stream.py @@ -67,26 +67,33 @@ class OpenAIResponseObjectStreamResponseCreated(BaseModel): response: ResponseObject + """The newly created response object""" type: Literal["response.created"] + """Event type identifier, always "response.created" """ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentText( BaseModel ): text: str + """The text content of the input message""" type: Literal["input_text"] + """Content type identifier, always "input_text" """ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage( BaseModel ): detail: Literal["low", "high", "auto"] + """Level of detail for image processing, can be "low", "high", or "auto" """ type: Literal["input_image"] + """Content type identifier, always "input_image" """ image_url: Optional[str] = None + """(Optional) URL of the image content""" OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessageContentUnionMember1: TypeAlias = Annotated[ @@ -102,26 +109,35 @@ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessage BaseModel ): file_id: str + """Unique identifier of the referenced file""" filename: str + """Name of the referenced file""" index: int + """Position index of the citation within the content""" type: Literal["file_citation"] + """Annotation type identifier, always "file_citation" """ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationCitation( BaseModel ): end_index: int + """End position of the citation span in the content""" start_index: int + """Start position of the citation span in the content""" title: str + """Title of the referenced web resource""" type: Literal["url_citation"] + """Annotation type identifier, always "url_citation" """ url: str + """URL of the referenced web resource""" class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationContainerFileCitation( @@ -189,70 +205,98 @@ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessage class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageWebSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" status: str + """Current status of the web search operation""" type: Literal["web_search_call"] + """Tool call type identifier, always "web_search_call" """ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageFileSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" queries: List[str] + """List of search queries executed""" status: str + """Current status of the file search operation""" type: Literal["file_search_call"] + """Tool call type identifier, always "file_search_call" """ results: Optional[List[Dict[str, Union[bool, float, str, List[object], object, None]]]] = None + """(Optional) Search results returned by the file search operation""" class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageFunctionToolCall(BaseModel): arguments: str + """JSON string containing the function arguments""" call_id: str + """Unique identifier for the function call""" name: str + """Name of the function being called""" type: Literal["function_call"] + """Tool call type identifier, always "function_call" """ id: Optional[str] = None + """(Optional) Additional identifier for the tool call""" status: Optional[str] = None + """(Optional) Current status of the function call execution""" class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpCall(BaseModel): id: str + """Unique identifier for this MCP call""" arguments: str + """JSON string containing the MCP call arguments""" name: str + """Name of the MCP method being called""" server_label: str + """Label identifying the MCP server handling the call""" type: Literal["mcp_call"] + """Tool call type identifier, always "mcp_call" """ error: Optional[str] = None + """(Optional) Error message if the MCP call failed""" output: Optional[str] = None + """(Optional) Output result from the successful MCP call""" class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListToolsTool(BaseModel): input_schema: Dict[str, Union[bool, float, str, List[object], object, None]] + """JSON schema defining the tool's input parameters""" name: str + """Name of the tool""" description: Optional[str] = None + """(Optional) Description of what the tool does""" class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListTools(BaseModel): id: str + """Unique identifier for this MCP list tools operation""" server_label: str + """Label identifying the MCP server providing the tools""" tools: List[OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListToolsTool] + """List of available tools provided by the MCP server""" type: Literal["mcp_list_tools"] + """Tool call type identifier, always "mcp_list_tools" """ OpenAIResponseObjectStreamResponseOutputItemAddedItem: TypeAlias = Annotated[ @@ -270,37 +314,42 @@ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputM class OpenAIResponseObjectStreamResponseOutputItemAdded(BaseModel): item: OpenAIResponseObjectStreamResponseOutputItemAddedItem - """Corresponds to the various Message types in the Responses API. - - They are all under one type because the Responses API gives them all the same - "type" value, and there is no way to tell them apart in certain scenarios. - """ + """The output item that was added (message, tool call, etc.)""" output_index: int + """Index position of this item in the output list""" response_id: str + """Unique identifier of the response containing this output""" sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.output_item.added"] + """Event type identifier, always "response.output_item.added" """ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentText( BaseModel ): text: str + """The text content of the input message""" type: Literal["input_text"] + """Content type identifier, always "input_text" """ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage( BaseModel ): detail: Literal["low", "high", "auto"] + """Level of detail for image processing, can be "low", "high", or "auto" """ type: Literal["input_image"] + """Content type identifier, always "input_image" """ image_url: Optional[str] = None + """(Optional) URL of the image content""" OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessageContentUnionMember1: TypeAlias = Annotated[ @@ -316,26 +365,35 @@ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessageC BaseModel ): file_id: str + """Unique identifier of the referenced file""" filename: str + """Name of the referenced file""" index: int + """Position index of the citation within the content""" type: Literal["file_citation"] + """Annotation type identifier, always "file_citation" """ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationCitation( BaseModel ): end_index: int + """End position of the citation span in the content""" start_index: int + """Start position of the citation span in the content""" title: str + """Title of the referenced web resource""" type: Literal["url_citation"] + """Annotation type identifier, always "url_citation" """ url: str + """URL of the referenced web resource""" class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationContainerFileCitation( @@ -403,70 +461,98 @@ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessage( class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageWebSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" status: str + """Current status of the web search operation""" type: Literal["web_search_call"] + """Tool call type identifier, always "web_search_call" """ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageFileSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" queries: List[str] + """List of search queries executed""" status: str + """Current status of the file search operation""" type: Literal["file_search_call"] + """Tool call type identifier, always "file_search_call" """ results: Optional[List[Dict[str, Union[bool, float, str, List[object], object, None]]]] = None + """(Optional) Search results returned by the file search operation""" class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageFunctionToolCall(BaseModel): arguments: str + """JSON string containing the function arguments""" call_id: str + """Unique identifier for the function call""" name: str + """Name of the function being called""" type: Literal["function_call"] + """Tool call type identifier, always "function_call" """ id: Optional[str] = None + """(Optional) Additional identifier for the tool call""" status: Optional[str] = None + """(Optional) Current status of the function call execution""" class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpCall(BaseModel): id: str + """Unique identifier for this MCP call""" arguments: str + """JSON string containing the MCP call arguments""" name: str + """Name of the MCP method being called""" server_label: str + """Label identifying the MCP server handling the call""" type: Literal["mcp_call"] + """Tool call type identifier, always "mcp_call" """ error: Optional[str] = None + """(Optional) Error message if the MCP call failed""" output: Optional[str] = None + """(Optional) Output result from the successful MCP call""" class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListToolsTool(BaseModel): input_schema: Dict[str, Union[bool, float, str, List[object], object, None]] + """JSON schema defining the tool's input parameters""" name: str + """Name of the tool""" description: Optional[str] = None + """(Optional) Description of what the tool does""" class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListTools(BaseModel): id: str + """Unique identifier for this MCP list tools operation""" server_label: str + """Label identifying the MCP server providing the tools""" tools: List[OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListToolsTool] + """List of available tools provided by the MCP server""" type: Literal["mcp_list_tools"] + """Tool call type identifier, always "mcp_list_tools" """ OpenAIResponseObjectStreamResponseOutputItemDoneItem: TypeAlias = Annotated[ @@ -484,81 +570,107 @@ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMe class OpenAIResponseObjectStreamResponseOutputItemDone(BaseModel): item: OpenAIResponseObjectStreamResponseOutputItemDoneItem - """Corresponds to the various Message types in the Responses API. - - They are all under one type because the Responses API gives them all the same - "type" value, and there is no way to tell them apart in certain scenarios. - """ + """The completed output item (message, tool call, etc.)""" output_index: int + """Index position of this item in the output list""" response_id: str + """Unique identifier of the response containing this output""" sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.output_item.done"] + """Event type identifier, always "response.output_item.done" """ class OpenAIResponseObjectStreamResponseOutputTextDelta(BaseModel): content_index: int + """Index position within the text content""" delta: str + """Incremental text content being added""" item_id: str + """Unique identifier of the output item being updated""" output_index: int + """Index position of the item in the output list""" sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.output_text.delta"] + """Event type identifier, always "response.output_text.delta" """ class OpenAIResponseObjectStreamResponseOutputTextDone(BaseModel): content_index: int + """Index position within the text content""" item_id: str + """Unique identifier of the completed output item""" output_index: int + """Index position of the item in the output list""" sequence_number: int + """Sequential number for ordering streaming events""" text: str + """Final complete text content of the output item""" type: Literal["response.output_text.done"] + """Event type identifier, always "response.output_text.done" """ class OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta(BaseModel): delta: str + """Incremental function call arguments being added""" item_id: str + """Unique identifier of the function call being updated""" output_index: int + """Index position of the item in the output list""" sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.function_call_arguments.delta"] + """Event type identifier, always "response.function_call_arguments.delta" """ class OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone(BaseModel): arguments: str + """Final complete arguments JSON string for the function call""" item_id: str + """Unique identifier of the completed function call""" output_index: int + """Index position of the item in the output list""" sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.function_call_arguments.done"] + """Event type identifier, always "response.function_call_arguments.done" """ class OpenAIResponseObjectStreamResponseWebSearchCallInProgress(BaseModel): item_id: str + """Unique identifier of the web search call""" output_index: int + """Index position of the item in the output list""" sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.web_search_call.in_progress"] + """Event type identifier, always "response.web_search_call.in_progress" """ class OpenAIResponseObjectStreamResponseWebSearchCallSearching(BaseModel): @@ -573,12 +685,16 @@ class OpenAIResponseObjectStreamResponseWebSearchCallSearching(BaseModel): class OpenAIResponseObjectStreamResponseWebSearchCallCompleted(BaseModel): item_id: str + """Unique identifier of the completed web search call""" output_index: int + """Index position of the item in the output list""" sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.web_search_call.completed"] + """Event type identifier, always "response.web_search_call.completed" """ class OpenAIResponseObjectStreamResponseMcpListToolsInProgress(BaseModel): @@ -625,30 +741,40 @@ class OpenAIResponseObjectStreamResponseMcpCallArgumentsDone(BaseModel): class OpenAIResponseObjectStreamResponseMcpCallInProgress(BaseModel): item_id: str + """Unique identifier of the MCP call""" output_index: int + """Index position of the item in the output list""" sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.mcp_call.in_progress"] + """Event type identifier, always "response.mcp_call.in_progress" """ class OpenAIResponseObjectStreamResponseMcpCallFailed(BaseModel): sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.mcp_call.failed"] + """Event type identifier, always "response.mcp_call.failed" """ class OpenAIResponseObjectStreamResponseMcpCallCompleted(BaseModel): sequence_number: int + """Sequential number for ordering streaming events""" type: Literal["response.mcp_call.completed"] + """Event type identifier, always "response.mcp_call.completed" """ class OpenAIResponseObjectStreamResponseCompleted(BaseModel): response: ResponseObject + """The completed response object""" type: Literal["response.completed"] + """Event type identifier, always "response.completed" """ ResponseObjectStream: TypeAlias = Annotated[ diff --git a/src/llama_stack_client/types/responses/input_item_list_response.py b/src/llama_stack_client/types/responses/input_item_list_response.py index aadcd9f2..abb09e98 100644 --- a/src/llama_stack_client/types/responses/input_item_list_response.py +++ b/src/llama_stack_client/types/responses/input_item_list_response.py @@ -28,36 +28,50 @@ class DataOpenAIResponseOutputMessageWebSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" status: str + """Current status of the web search operation""" type: Literal["web_search_call"] + """Tool call type identifier, always "web_search_call" """ class DataOpenAIResponseOutputMessageFileSearchToolCall(BaseModel): id: str + """Unique identifier for this tool call""" queries: List[str] + """List of search queries executed""" status: str + """Current status of the file search operation""" type: Literal["file_search_call"] + """Tool call type identifier, always "file_search_call" """ results: Optional[List[Dict[str, Union[bool, float, str, List[object], object, None]]]] = None + """(Optional) Search results returned by the file search operation""" class DataOpenAIResponseOutputMessageFunctionToolCall(BaseModel): arguments: str + """JSON string containing the function arguments""" call_id: str + """Unique identifier for the function call""" name: str + """Name of the function being called""" type: Literal["function_call"] + """Tool call type identifier, always "function_call" """ id: Optional[str] = None + """(Optional) Additional identifier for the tool call""" status: Optional[str] = None + """(Optional) Current status of the function call execution""" class DataOpenAIResponseInputFunctionToolCallOutput(BaseModel): @@ -74,16 +88,21 @@ class DataOpenAIResponseInputFunctionToolCallOutput(BaseModel): class DataOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentText(BaseModel): text: str + """The text content of the input message""" type: Literal["input_text"] + """Content type identifier, always "input_text" """ class DataOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageContentImage(BaseModel): detail: Literal["low", "high", "auto"] + """Level of detail for image processing, can be "low", "high", or "auto" """ type: Literal["input_image"] + """Content type identifier, always "input_image" """ image_url: Optional[str] = None + """(Optional) URL of the image content""" DataOpenAIResponseMessageContentUnionMember1: TypeAlias = Annotated[ @@ -97,24 +116,33 @@ class DataOpenAIResponseMessageContentUnionMember1OpenAIResponseInputMessageCont class DataOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationFileCitation(BaseModel): file_id: str + """Unique identifier of the referenced file""" filename: str + """Name of the referenced file""" index: int + """Position index of the citation within the content""" type: Literal["file_citation"] + """Annotation type identifier, always "file_citation" """ class DataOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationCitation(BaseModel): end_index: int + """End position of the citation span in the content""" start_index: int + """Start position of the citation span in the content""" title: str + """Title of the referenced web resource""" type: Literal["url_citation"] + """Annotation type identifier, always "url_citation" """ url: str + """URL of the referenced web resource""" class DataOpenAIResponseMessageContentUnionMember2AnnotationOpenAIResponseAnnotationContainerFileCitation(BaseModel): @@ -183,5 +211,7 @@ class DataOpenAIResponseMessage(BaseModel): class InputItemListResponse(BaseModel): data: List[Data] + """List of input items""" object: Literal["list"] + """Object type identifier, always "list" """ diff --git a/src/llama_stack_client/types/route_info.py b/src/llama_stack_client/types/route_info.py index 3d8880f1..671361b9 100644 --- a/src/llama_stack_client/types/route_info.py +++ b/src/llama_stack_client/types/route_info.py @@ -9,7 +9,10 @@ class RouteInfo(BaseModel): method: str + """HTTP method for the route""" provider_types: List[str] + """List of provider types that implement this route""" route: str + """The API endpoint path""" diff --git a/src/llama_stack_client/types/run_shield_response.py b/src/llama_stack_client/types/run_shield_response.py index 1dbdf5a0..ba7bac0b 100644 --- a/src/llama_stack_client/types/run_shield_response.py +++ b/src/llama_stack_client/types/run_shield_response.py @@ -10,3 +10,4 @@ class RunShieldResponse(BaseModel): violation: Optional[SafetyViolation] = None + """(Optional) Safety violation detected by the shield, if any""" diff --git a/src/llama_stack_client/types/scoring_fn.py b/src/llama_stack_client/types/scoring_fn.py index 3569cb44..8c558f2a 100644 --- a/src/llama_stack_client/types/scoring_fn.py +++ b/src/llama_stack_client/types/scoring_fn.py @@ -20,9 +20,11 @@ class ScoringFn(BaseModel): return_type: ReturnType type: Literal["scoring_function"] + """The resource type, always scoring_function""" description: Optional[str] = None params: Optional[ScoringFnParams] = None + """Parameters for LLM-as-judge scoring function configuration.""" provider_resource_id: Optional[str] = None diff --git a/src/llama_stack_client/types/scoring_fn_params.py b/src/llama_stack_client/types/scoring_fn_params.py index a46b46f5..937fd886 100644 --- a/src/llama_stack_client/types/scoring_fn_params.py +++ b/src/llama_stack_client/types/scoring_fn_params.py @@ -11,28 +11,38 @@ class LlmAsJudgeScoringFnParams(BaseModel): aggregation_functions: List[Literal["average", "weighted_average", "median", "categorical_count", "accuracy"]] + """Aggregation functions to apply to the scores of each row""" judge_model: str + """Identifier of the LLM model to use as a judge for scoring""" judge_score_regexes: List[str] + """Regexes to extract the answer from generated response""" type: Literal["llm_as_judge"] + """The type of scoring function parameters, always llm_as_judge""" prompt_template: Optional[str] = None + """(Optional) Custom prompt template for the judge model""" class RegexParserScoringFnParams(BaseModel): aggregation_functions: List[Literal["average", "weighted_average", "median", "categorical_count", "accuracy"]] + """Aggregation functions to apply to the scores of each row""" parsing_regexes: List[str] + """Regex to extract the answer from generated response""" type: Literal["regex_parser"] + """The type of scoring function parameters, always regex_parser""" class BasicScoringFnParams(BaseModel): aggregation_functions: List[Literal["average", "weighted_average", "median", "categorical_count", "accuracy"]] + """Aggregation functions to apply to the scores of each row""" type: Literal["basic"] + """The type of scoring function parameters, always basic""" ScoringFnParams: TypeAlias = Annotated[ diff --git a/src/llama_stack_client/types/scoring_fn_params_param.py b/src/llama_stack_client/types/scoring_fn_params_param.py index b404bc89..9753ddeb 100644 --- a/src/llama_stack_client/types/scoring_fn_params_param.py +++ b/src/llama_stack_client/types/scoring_fn_params_param.py @@ -12,32 +12,42 @@ class LlmAsJudgeScoringFnParams(TypedDict, total=False): aggregation_functions: Required[ List[Literal["average", "weighted_average", "median", "categorical_count", "accuracy"]] ] + """Aggregation functions to apply to the scores of each row""" judge_model: Required[str] + """Identifier of the LLM model to use as a judge for scoring""" judge_score_regexes: Required[List[str]] + """Regexes to extract the answer from generated response""" type: Required[Literal["llm_as_judge"]] + """The type of scoring function parameters, always llm_as_judge""" prompt_template: str + """(Optional) Custom prompt template for the judge model""" class RegexParserScoringFnParams(TypedDict, total=False): aggregation_functions: Required[ List[Literal["average", "weighted_average", "median", "categorical_count", "accuracy"]] ] + """Aggregation functions to apply to the scores of each row""" parsing_regexes: Required[List[str]] + """Regex to extract the answer from generated response""" type: Required[Literal["regex_parser"]] + """The type of scoring function parameters, always regex_parser""" class BasicScoringFnParams(TypedDict, total=False): aggregation_functions: Required[ List[Literal["average", "weighted_average", "median", "categorical_count", "accuracy"]] ] + """Aggregation functions to apply to the scores of each row""" type: Required[Literal["basic"]] + """The type of scoring function parameters, always basic""" ScoringFnParamsParam: TypeAlias = Union[LlmAsJudgeScoringFnParams, RegexParserScoringFnParams, BasicScoringFnParams] diff --git a/src/llama_stack_client/types/scoring_score_batch_response.py b/src/llama_stack_client/types/scoring_score_batch_response.py index da124b1e..7f5f7e24 100644 --- a/src/llama_stack_client/types/scoring_score_batch_response.py +++ b/src/llama_stack_client/types/scoring_score_batch_response.py @@ -10,5 +10,7 @@ class ScoringScoreBatchResponse(BaseModel): results: Dict[str, ScoringResult] + """A map of scoring function name to ScoringResult""" dataset_id: Optional[str] = None + """(Optional) The identifier of the dataset that was scored""" diff --git a/src/llama_stack_client/types/shared/batch_completion.py b/src/llama_stack_client/types/shared/batch_completion.py index 547884d1..43a0a735 100644 --- a/src/llama_stack_client/types/shared/batch_completion.py +++ b/src/llama_stack_client/types/shared/batch_completion.py @@ -10,3 +10,4 @@ class BatchCompletion(BaseModel): batch: List[CompletionResponse] + """List of completion responses, one for each input in the batch""" diff --git a/src/llama_stack_client/types/shared/chat_completion_response.py b/src/llama_stack_client/types/shared/chat_completion_response.py index 20dd1ecc..3ff6e0bc 100644 --- a/src/llama_stack_client/types/shared/chat_completion_response.py +++ b/src/llama_stack_client/types/shared/chat_completion_response.py @@ -11,10 +11,13 @@ class Metric(BaseModel): metric: str + """The name of the metric""" value: float + """The numeric value of the metric""" unit: Optional[str] = None + """(Optional) The unit of measurement for the metric value""" class ChatCompletionResponse(BaseModel): @@ -25,3 +28,4 @@ class ChatCompletionResponse(BaseModel): """Optional log probabilities for generated tokens""" metrics: Optional[List[Metric]] = None + """(Optional) List of metrics associated with the API response""" diff --git a/src/llama_stack_client/types/shared/content_delta.py b/src/llama_stack_client/types/shared/content_delta.py index ae036ad8..e5936990 100644 --- a/src/llama_stack_client/types/shared/content_delta.py +++ b/src/llama_stack_client/types/shared/content_delta.py @@ -12,22 +12,29 @@ class TextDelta(BaseModel): text: str + """The incremental text content""" type: Literal["text"] + """Discriminator type of the delta. Always "text" """ class ImageDelta(BaseModel): image: str + """The incremental image data as bytes""" type: Literal["image"] + """Discriminator type of the delta. Always "image" """ class ToolCallDelta(BaseModel): parse_status: Literal["started", "in_progress", "failed", "succeeded"] + """Current parsing status of the tool call""" tool_call: ToolCallOrString + """Either an in-progress tool call string or the final parsed tool call""" type: Literal["tool_call"] + """Discriminator type of the delta. Always "tool_call" """ ContentDelta: TypeAlias = Annotated[Union[TextDelta, ImageDelta, ToolCallDelta], PropertyInfo(discriminator="type")] diff --git a/src/llama_stack_client/types/shared/document.py b/src/llama_stack_client/types/shared/document.py index 67704232..492e6abd 100644 --- a/src/llama_stack_client/types/shared/document.py +++ b/src/llama_stack_client/types/shared/document.py @@ -19,6 +19,7 @@ class ContentImageContentItemImageURL(BaseModel): uri: str + """The URL string pointing to the resource""" class ContentImageContentItemImage(BaseModel): @@ -50,6 +51,7 @@ class ContentTextContentItem(BaseModel): class ContentURL(BaseModel): uri: str + """The URL string pointing to the resource""" Content: TypeAlias = Union[ diff --git a/src/llama_stack_client/types/shared/interleaved_content.py b/src/llama_stack_client/types/shared/interleaved_content.py index dc496150..852e487e 100644 --- a/src/llama_stack_client/types/shared/interleaved_content.py +++ b/src/llama_stack_client/types/shared/interleaved_content.py @@ -17,6 +17,7 @@ class ImageContentItemImageURL(BaseModel): uri: str + """The URL string pointing to the resource""" class ImageContentItemImage(BaseModel): diff --git a/src/llama_stack_client/types/shared/interleaved_content_item.py b/src/llama_stack_client/types/shared/interleaved_content_item.py index 8a3238b8..cb034712 100644 --- a/src/llama_stack_client/types/shared/interleaved_content_item.py +++ b/src/llama_stack_client/types/shared/interleaved_content_item.py @@ -17,6 +17,7 @@ class ImageContentItemImageURL(BaseModel): uri: str + """The URL string pointing to the resource""" class ImageContentItemImage(BaseModel): diff --git a/src/llama_stack_client/types/shared/param_type.py b/src/llama_stack_client/types/shared/param_type.py index 2fed6df2..199b0fd7 100644 --- a/src/llama_stack_client/types/shared/param_type.py +++ b/src/llama_stack_client/types/shared/param_type.py @@ -23,42 +23,52 @@ class StringType(BaseModel): type: Literal["string"] + """Discriminator type. Always "string" """ class NumberType(BaseModel): type: Literal["number"] + """Discriminator type. Always "number" """ class BooleanType(BaseModel): type: Literal["boolean"] + """Discriminator type. Always "boolean" """ class ArrayType(BaseModel): type: Literal["array"] + """Discriminator type. Always "array" """ class ObjectType(BaseModel): type: Literal["object"] + """Discriminator type. Always "object" """ class JsonType(BaseModel): type: Literal["json"] + """Discriminator type. Always "json" """ class UnionType(BaseModel): type: Literal["union"] + """Discriminator type. Always "union" """ class ChatCompletionInputType(BaseModel): type: Literal["chat_completion_input"] + """Discriminator type. Always "chat_completion_input" """ class CompletionInputType(BaseModel): type: Literal["completion_input"] + """Discriminator type. Always "completion_input" """ class AgentTurnInputType(BaseModel): type: Literal["agent_turn_input"] + """Discriminator type. Always "agent_turn_input" """ ParamType: TypeAlias = Annotated[ diff --git a/src/llama_stack_client/types/shared/query_config.py b/src/llama_stack_client/types/shared/query_config.py index 3628efbf..389514c7 100644 --- a/src/llama_stack_client/types/shared/query_config.py +++ b/src/llama_stack_client/types/shared/query_config.py @@ -14,8 +14,7 @@ class RankerRrfRanker(BaseModel): impact_factor: float """The impact factor for RRF scoring. - Higher values give more weight to higher-ranked results. Must be greater than 0. - Default of 60 is from the original RRF paper (Cormack et al., 2009). + Higher values give more weight to higher-ranked results. Must be greater than 0 """ type: Literal["rrf"] @@ -55,7 +54,7 @@ class QueryConfig(BaseModel): query_generator_config: QueryGeneratorConfig """Configuration for the query generator.""" - mode: Optional[str] = None + mode: Optional[Literal["vector", "keyword", "hybrid"]] = None """Search mode for retrieval—either "vector", "keyword", or "hybrid". Default "vector". diff --git a/src/llama_stack_client/types/shared/query_generator_config.py b/src/llama_stack_client/types/shared/query_generator_config.py index 559fca7d..624fc190 100644 --- a/src/llama_stack_client/types/shared/query_generator_config.py +++ b/src/llama_stack_client/types/shared/query_generator_config.py @@ -11,16 +11,21 @@ class DefaultRagQueryGeneratorConfig(BaseModel): separator: str + """String separator used to join query terms""" type: Literal["default"] + """Type of query generator, always 'default'""" class LlmragQueryGeneratorConfig(BaseModel): model: str + """Name of the language model to use for query generation""" template: str + """Template string for formatting the query generation prompt""" type: Literal["llm"] + """Type of query generator, always 'llm'""" QueryGeneratorConfig: TypeAlias = Annotated[ diff --git a/src/llama_stack_client/types/shared/query_result.py b/src/llama_stack_client/types/shared/query_result.py index c0a1d44c..c623c6d6 100644 --- a/src/llama_stack_client/types/shared/query_result.py +++ b/src/llama_stack_client/types/shared/query_result.py @@ -10,6 +10,7 @@ class QueryResult(BaseModel): metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + """Additional metadata about the query result""" content: Optional[InterleavedContent] = None - """A image content item""" + """(Optional) The retrieved content from the query""" diff --git a/src/llama_stack_client/types/shared/safety_violation.py b/src/llama_stack_client/types/shared/safety_violation.py index e3c94312..bea7ca93 100644 --- a/src/llama_stack_client/types/shared/safety_violation.py +++ b/src/llama_stack_client/types/shared/safety_violation.py @@ -10,7 +10,13 @@ class SafetyViolation(BaseModel): metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + """ + Additional metadata including specific violation codes for debugging and + telemetry + """ violation_level: Literal["info", "warn", "error"] + """Severity level of the violation""" user_message: Optional[str] = None + """(Optional) Message to convey to the user about the violation""" diff --git a/src/llama_stack_client/types/shared/sampling_params.py b/src/llama_stack_client/types/shared/sampling_params.py index 7ce2211e..6823aee7 100644 --- a/src/llama_stack_client/types/shared/sampling_params.py +++ b/src/llama_stack_client/types/shared/sampling_params.py @@ -17,20 +17,26 @@ class StrategyGreedySamplingStrategy(BaseModel): type: Literal["greedy"] + """Must be "greedy" to identify this sampling strategy""" class StrategyTopPSamplingStrategy(BaseModel): type: Literal["top_p"] + """Must be "top_p" to identify this sampling strategy""" temperature: Optional[float] = None + """Controls randomness in sampling. Higher values increase randomness""" top_p: Optional[float] = None + """Cumulative probability threshold for nucleus sampling. Defaults to 0.95""" class StrategyTopKSamplingStrategy(BaseModel): top_k: int + """Number of top tokens to consider for sampling. Must be at least 1""" type: Literal["top_k"] + """Must be "top_k" to identify this sampling strategy""" Strategy: TypeAlias = Annotated[ diff --git a/src/llama_stack_client/types/shared_params/document.py b/src/llama_stack_client/types/shared_params/document.py index 78564cfa..db9cd51d 100644 --- a/src/llama_stack_client/types/shared_params/document.py +++ b/src/llama_stack_client/types/shared_params/document.py @@ -20,6 +20,7 @@ class ContentImageContentItemImageURL(TypedDict, total=False): uri: Required[str] + """The URL string pointing to the resource""" class ContentImageContentItemImage(TypedDict, total=False): @@ -51,6 +52,7 @@ class ContentTextContentItem(TypedDict, total=False): class ContentURL(TypedDict, total=False): uri: Required[str] + """The URL string pointing to the resource""" Content: TypeAlias = Union[ diff --git a/src/llama_stack_client/types/shared_params/interleaved_content.py b/src/llama_stack_client/types/shared_params/interleaved_content.py index 5d045a20..5ea3953a 100644 --- a/src/llama_stack_client/types/shared_params/interleaved_content.py +++ b/src/llama_stack_client/types/shared_params/interleaved_content.py @@ -18,6 +18,7 @@ class ImageContentItemImageURL(TypedDict, total=False): uri: Required[str] + """The URL string pointing to the resource""" class ImageContentItemImage(TypedDict, total=False): diff --git a/src/llama_stack_client/types/shared_params/interleaved_content_item.py b/src/llama_stack_client/types/shared_params/interleaved_content_item.py index b5c0bcc1..ed3daa32 100644 --- a/src/llama_stack_client/types/shared_params/interleaved_content_item.py +++ b/src/llama_stack_client/types/shared_params/interleaved_content_item.py @@ -16,6 +16,7 @@ class ImageContentItemImageURL(TypedDict, total=False): uri: Required[str] + """The URL string pointing to the resource""" class ImageContentItemImage(TypedDict, total=False): diff --git a/src/llama_stack_client/types/shared_params/query_config.py b/src/llama_stack_client/types/shared_params/query_config.py index dd482ecf..d008c48c 100644 --- a/src/llama_stack_client/types/shared_params/query_config.py +++ b/src/llama_stack_client/types/shared_params/query_config.py @@ -14,8 +14,7 @@ class RankerRrfRanker(TypedDict, total=False): impact_factor: Required[float] """The impact factor for RRF scoring. - Higher values give more weight to higher-ranked results. Must be greater than 0. - Default of 60 is from the original RRF paper (Cormack et al., 2009). + Higher values give more weight to higher-ranked results. Must be greater than 0 """ type: Required[Literal["rrf"]] @@ -55,7 +54,7 @@ class QueryConfig(TypedDict, total=False): query_generator_config: Required[QueryGeneratorConfig] """Configuration for the query generator.""" - mode: str + mode: Literal["vector", "keyword", "hybrid"] """Search mode for retrieval—either "vector", "keyword", or "hybrid". Default "vector". diff --git a/src/llama_stack_client/types/shared_params/query_generator_config.py b/src/llama_stack_client/types/shared_params/query_generator_config.py index db135e80..8c589bf9 100644 --- a/src/llama_stack_client/types/shared_params/query_generator_config.py +++ b/src/llama_stack_client/types/shared_params/query_generator_config.py @@ -10,16 +10,21 @@ class DefaultRagQueryGeneratorConfig(TypedDict, total=False): separator: Required[str] + """String separator used to join query terms""" type: Required[Literal["default"]] + """Type of query generator, always 'default'""" class LlmragQueryGeneratorConfig(TypedDict, total=False): model: Required[str] + """Name of the language model to use for query generation""" template: Required[str] + """Template string for formatting the query generation prompt""" type: Required[Literal["llm"]] + """Type of query generator, always 'llm'""" QueryGeneratorConfig: TypeAlias = Union[DefaultRagQueryGeneratorConfig, LlmragQueryGeneratorConfig] diff --git a/src/llama_stack_client/types/shared_params/sampling_params.py b/src/llama_stack_client/types/shared_params/sampling_params.py index 158db1c5..55f05e8b 100644 --- a/src/llama_stack_client/types/shared_params/sampling_params.py +++ b/src/llama_stack_client/types/shared_params/sampling_params.py @@ -16,20 +16,26 @@ class StrategyGreedySamplingStrategy(TypedDict, total=False): type: Required[Literal["greedy"]] + """Must be "greedy" to identify this sampling strategy""" class StrategyTopPSamplingStrategy(TypedDict, total=False): type: Required[Literal["top_p"]] + """Must be "top_p" to identify this sampling strategy""" temperature: float + """Controls randomness in sampling. Higher values increase randomness""" top_p: float + """Cumulative probability threshold for nucleus sampling. Defaults to 0.95""" class StrategyTopKSamplingStrategy(TypedDict, total=False): top_k: Required[int] + """Number of top tokens to consider for sampling. Must be at least 1""" type: Required[Literal["top_k"]] + """Must be "top_k" to identify this sampling strategy""" Strategy: TypeAlias = Union[StrategyGreedySamplingStrategy, StrategyTopPSamplingStrategy, StrategyTopKSamplingStrategy] diff --git a/src/llama_stack_client/types/shield.py b/src/llama_stack_client/types/shield.py index ff5f01f1..dd48dfae 100644 --- a/src/llama_stack_client/types/shield.py +++ b/src/llama_stack_client/types/shield.py @@ -14,7 +14,9 @@ class Shield(BaseModel): provider_id: str type: Literal["shield"] + """The resource type, always shield""" params: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Configuration parameters for the shield""" provider_resource_id: Optional[str] = None diff --git a/src/llama_stack_client/types/span_with_status.py b/src/llama_stack_client/types/span_with_status.py index f93f4ff5..04d124bd 100644 --- a/src/llama_stack_client/types/span_with_status.py +++ b/src/llama_stack_client/types/span_with_status.py @@ -11,17 +11,25 @@ class SpanWithStatus(BaseModel): name: str + """Human-readable name describing the operation this span represents""" span_id: str + """Unique identifier for the span""" start_time: datetime + """Timestamp when the operation began""" trace_id: str + """Unique identifier for the trace this span belongs to""" attributes: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Key-value pairs containing additional metadata about the span""" end_time: Optional[datetime] = None + """(Optional) Timestamp when the operation finished, if completed""" parent_span_id: Optional[str] = None + """(Optional) Unique identifier for the parent span, if this is a child span""" status: Optional[Literal["ok", "error"]] = None + """(Optional) The current status of the span""" diff --git a/src/llama_stack_client/types/synthetic_data_generation_generate_params.py b/src/llama_stack_client/types/synthetic_data_generation_generate_params.py index abf51059..5f55a97c 100644 --- a/src/llama_stack_client/types/synthetic_data_generation_generate_params.py +++ b/src/llama_stack_client/types/synthetic_data_generation_generate_params.py @@ -12,8 +12,14 @@ class SyntheticDataGenerationGenerateParams(TypedDict, total=False): dialogs: Required[Iterable[Message]] + """List of conversation messages to use as input for synthetic data generation""" filtering_function: Required[Literal["none", "random", "top_k", "top_p", "top_k_top_p", "sigmoid"]] - """The type of filtering function.""" + """Type of filtering to apply to generated synthetic data samples""" model: str + """(Optional) The identifier of the model to use. + + The model must be registered with Llama Stack and available via the /models + endpoint + """ diff --git a/src/llama_stack_client/types/synthetic_data_generation_response.py b/src/llama_stack_client/types/synthetic_data_generation_response.py index a2ee11e6..cfb20f08 100644 --- a/src/llama_stack_client/types/synthetic_data_generation_response.py +++ b/src/llama_stack_client/types/synthetic_data_generation_response.py @@ -9,5 +9,10 @@ class SyntheticDataGenerationResponse(BaseModel): synthetic_data: List[Dict[str, Union[bool, float, str, List[object], object, None]]] + """List of generated synthetic data samples that passed the filtering criteria""" statistics: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """ + (Optional) Statistical information about the generation process and filtering + results + """ diff --git a/src/llama_stack_client/types/telemetry_get_span_response.py b/src/llama_stack_client/types/telemetry_get_span_response.py index 9e50ed0d..6826d4d0 100644 --- a/src/llama_stack_client/types/telemetry_get_span_response.py +++ b/src/llama_stack_client/types/telemetry_get_span_response.py @@ -10,15 +10,22 @@ class TelemetryGetSpanResponse(BaseModel): name: str + """Human-readable name describing the operation this span represents""" span_id: str + """Unique identifier for the span""" start_time: datetime + """Timestamp when the operation began""" trace_id: str + """Unique identifier for the trace this span belongs to""" attributes: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Key-value pairs containing additional metadata about the span""" end_time: Optional[datetime] = None + """(Optional) Timestamp when the operation finished, if completed""" parent_span_id: Optional[str] = None + """(Optional) Unique identifier for the parent span, if this is a child span""" diff --git a/src/llama_stack_client/types/telemetry_query_spans_response.py b/src/llama_stack_client/types/telemetry_query_spans_response.py index c630efeb..49eaeb38 100644 --- a/src/llama_stack_client/types/telemetry_query_spans_response.py +++ b/src/llama_stack_client/types/telemetry_query_spans_response.py @@ -11,18 +11,25 @@ class TelemetryQuerySpansResponseItem(BaseModel): name: str + """Human-readable name describing the operation this span represents""" span_id: str + """Unique identifier for the span""" start_time: datetime + """Timestamp when the operation began""" trace_id: str + """Unique identifier for the trace this span belongs to""" attributes: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Key-value pairs containing additional metadata about the span""" end_time: Optional[datetime] = None + """(Optional) Timestamp when the operation finished, if completed""" parent_span_id: Optional[str] = None + """(Optional) Unique identifier for the parent span, if this is a child span""" TelemetryQuerySpansResponse: TypeAlias = List[TelemetryQuerySpansResponseItem] diff --git a/src/llama_stack_client/types/tool.py b/src/llama_stack_client/types/tool.py index 6beb8764..c6994268 100644 --- a/src/llama_stack_client/types/tool.py +++ b/src/llama_stack_client/types/tool.py @@ -10,29 +10,39 @@ class Parameter(BaseModel): description: str + """Human-readable description of what the parameter does""" name: str + """Name of the parameter""" parameter_type: str + """Type of the parameter (e.g., string, integer)""" required: bool + """Whether this parameter is required for tool invocation""" default: Union[bool, float, str, List[object], object, None] = None + """(Optional) Default value for the parameter if not provided""" class Tool(BaseModel): description: str + """Human-readable description of what the tool does""" identifier: str parameters: List[Parameter] + """List of parameters this tool accepts""" provider_id: str toolgroup_id: str + """ID of the tool group this tool belongs to""" type: Literal["tool"] + """Type of resource, always 'tool'""" metadata: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Additional metadata about the tool""" provider_resource_id: Optional[str] = None diff --git a/src/llama_stack_client/types/tool_def.py b/src/llama_stack_client/types/tool_def.py index d96c5c5d..c82a9b8a 100644 --- a/src/llama_stack_client/types/tool_def.py +++ b/src/llama_stack_client/types/tool_def.py @@ -9,21 +9,30 @@ class Parameter(BaseModel): description: str + """Human-readable description of what the parameter does""" name: str + """Name of the parameter""" parameter_type: str + """Type of the parameter (e.g., string, integer)""" required: bool + """Whether this parameter is required for tool invocation""" default: Union[bool, float, str, List[object], object, None] = None + """(Optional) Default value for the parameter if not provided""" class ToolDef(BaseModel): name: str + """Name of the tool""" description: Optional[str] = None + """(Optional) Human-readable description of what the tool does""" metadata: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Additional metadata about the tool""" parameters: Optional[List[Parameter]] = None + """(Optional) List of parameters this tool accepts""" diff --git a/src/llama_stack_client/types/tool_def_param.py b/src/llama_stack_client/types/tool_def_param.py index 42d27fbd..93ad8285 100644 --- a/src/llama_stack_client/types/tool_def_param.py +++ b/src/llama_stack_client/types/tool_def_param.py @@ -10,21 +10,30 @@ class Parameter(TypedDict, total=False): description: Required[str] + """Human-readable description of what the parameter does""" name: Required[str] + """Name of the parameter""" parameter_type: Required[str] + """Type of the parameter (e.g., string, integer)""" required: Required[bool] + """Whether this parameter is required for tool invocation""" default: Union[bool, float, str, Iterable[object], object, None] + """(Optional) Default value for the parameter if not provided""" class ToolDefParam(TypedDict, total=False): name: Required[str] + """Name of the tool""" description: str + """(Optional) Human-readable description of what the tool does""" metadata: Dict[str, Union[bool, float, str, Iterable[object], object, None]] + """(Optional) Additional metadata about the tool""" parameters: Iterable[Parameter] + """(Optional) List of parameters this tool accepts""" diff --git a/src/llama_stack_client/types/tool_group.py b/src/llama_stack_client/types/tool_group.py index 3389395a..52fca005 100644 --- a/src/llama_stack_client/types/tool_group.py +++ b/src/llama_stack_client/types/tool_group.py @@ -10,6 +10,7 @@ class McpEndpoint(BaseModel): uri: str + """The URL string pointing to the resource""" class ToolGroup(BaseModel): @@ -18,9 +19,12 @@ class ToolGroup(BaseModel): provider_id: str type: Literal["tool_group"] + """Type of resource, always 'tool_group'""" args: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Additional arguments for the tool group""" mcp_endpoint: Optional[McpEndpoint] = None + """(Optional) Model Context Protocol endpoint for remote tools""" provider_resource_id: Optional[str] = None diff --git a/src/llama_stack_client/types/tool_invocation_result.py b/src/llama_stack_client/types/tool_invocation_result.py index 01f7db28..4262a85b 100644 --- a/src/llama_stack_client/types/tool_invocation_result.py +++ b/src/llama_stack_client/types/tool_invocation_result.py @@ -10,10 +10,13 @@ class ToolInvocationResult(BaseModel): content: Optional[InterleavedContent] = None - """A image content item""" + """(Optional) The output content from the tool execution""" error_code: Optional[int] = None + """(Optional) Numeric error code if the tool execution failed""" error_message: Optional[str] = None + """(Optional) Error message if the tool execution failed""" metadata: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Additional metadata about the tool execution""" diff --git a/src/llama_stack_client/types/tool_response.py b/src/llama_stack_client/types/tool_response.py index f984f30a..7750494e 100644 --- a/src/llama_stack_client/types/tool_response.py +++ b/src/llama_stack_client/types/tool_response.py @@ -11,10 +11,13 @@ class ToolResponse(BaseModel): call_id: str + """Unique identifier for the tool call this response is for""" content: InterleavedContent - """A image content item""" + """The response content from the tool""" tool_name: Union[Literal["brave_search", "wolfram_alpha", "photogen", "code_interpreter"], str] + """Name of the tool that was invoked""" metadata: Optional[Dict[str, Union[bool, float, str, List[object], object, None]]] = None + """(Optional) Additional metadata about the tool response""" diff --git a/src/llama_stack_client/types/tool_response_param.py b/src/llama_stack_client/types/tool_response_param.py index 8ac14862..386658f9 100644 --- a/src/llama_stack_client/types/tool_response_param.py +++ b/src/llama_stack_client/types/tool_response_param.py @@ -12,10 +12,13 @@ class ToolResponseParam(TypedDict, total=False): call_id: Required[str] + """Unique identifier for the tool call this response is for""" content: Required[InterleavedContent] - """A image content item""" + """The response content from the tool""" tool_name: Required[Union[Literal["brave_search", "wolfram_alpha", "photogen", "code_interpreter"], str]] + """Name of the tool that was invoked""" metadata: Dict[str, Union[bool, float, str, Iterable[object], object, None]] + """(Optional) Additional metadata about the tool response""" diff --git a/src/llama_stack_client/types/tool_runtime/rag_tool_insert_params.py b/src/llama_stack_client/types/tool_runtime/rag_tool_insert_params.py index bc52c481..614a969c 100644 --- a/src/llama_stack_client/types/tool_runtime/rag_tool_insert_params.py +++ b/src/llama_stack_client/types/tool_runtime/rag_tool_insert_params.py @@ -12,7 +12,10 @@ class RagToolInsertParams(TypedDict, total=False): chunk_size_in_tokens: Required[int] + """(Optional) Size in tokens for document chunking during indexing""" documents: Required[Iterable[Document]] + """List of documents to index in the RAG system""" vector_db_id: Required[str] + """ID of the vector database to store the document embeddings""" diff --git a/src/llama_stack_client/types/tool_runtime/rag_tool_query_params.py b/src/llama_stack_client/types/tool_runtime/rag_tool_query_params.py index 4599c693..a28faf2b 100644 --- a/src/llama_stack_client/types/tool_runtime/rag_tool_query_params.py +++ b/src/llama_stack_client/types/tool_runtime/rag_tool_query_params.py @@ -13,9 +13,10 @@ class RagToolQueryParams(TypedDict, total=False): content: Required[InterleavedContent] - """A image content item""" + """The query content to search for in the indexed documents""" vector_db_ids: Required[List[str]] + """List of vector database IDs to search within""" query_config: QueryConfig - """Configuration for the RAG query generation.""" + """(Optional) Configuration parameters for the query operation""" diff --git a/src/llama_stack_client/types/tool_runtime_list_tools_params.py b/src/llama_stack_client/types/tool_runtime_list_tools_params.py index 539e176d..d4933940 100644 --- a/src/llama_stack_client/types/tool_runtime_list_tools_params.py +++ b/src/llama_stack_client/types/tool_runtime_list_tools_params.py @@ -17,3 +17,4 @@ class ToolRuntimeListToolsParams(TypedDict, total=False): class McpEndpoint(TypedDict, total=False): uri: Required[str] + """The URL string pointing to the resource""" diff --git a/src/llama_stack_client/types/toolgroup_register_params.py b/src/llama_stack_client/types/toolgroup_register_params.py index a50c14c4..2aa79960 100644 --- a/src/llama_stack_client/types/toolgroup_register_params.py +++ b/src/llama_stack_client/types/toolgroup_register_params.py @@ -24,3 +24,4 @@ class ToolgroupRegisterParams(TypedDict, total=False): class McpEndpoint(TypedDict, total=False): uri: Required[str] + """The URL string pointing to the resource""" diff --git a/src/llama_stack_client/types/trace.py b/src/llama_stack_client/types/trace.py index 3683551c..0657d616 100644 --- a/src/llama_stack_client/types/trace.py +++ b/src/llama_stack_client/types/trace.py @@ -10,9 +10,13 @@ class Trace(BaseModel): root_span_id: str + """Unique identifier for the root span that started this trace""" start_time: datetime + """Timestamp when the trace began""" trace_id: str + """Unique identifier for the trace""" end_time: Optional[datetime] = None + """(Optional) Timestamp when the trace finished, if completed""" diff --git a/src/llama_stack_client/types/vector_db_list_response.py b/src/llama_stack_client/types/vector_db_list_response.py index 39161431..18034f52 100644 --- a/src/llama_stack_client/types/vector_db_list_response.py +++ b/src/llama_stack_client/types/vector_db_list_response.py @@ -10,16 +10,21 @@ class VectorDBListResponseItem(BaseModel): embedding_dimension: int + """Dimension of the embedding vectors""" embedding_model: str + """Name of the embedding model to use for vector generation""" identifier: str provider_id: str type: Literal["vector_db"] + """Type of resource, always 'vector_db' for vector databases""" provider_resource_id: Optional[str] = None + vector_db_name: Optional[str] = None + VectorDBListResponse: TypeAlias = List[VectorDBListResponseItem] diff --git a/src/llama_stack_client/types/vector_db_register_params.py b/src/llama_stack_client/types/vector_db_register_params.py index 734659a6..f7e3e7c7 100644 --- a/src/llama_stack_client/types/vector_db_register_params.py +++ b/src/llama_stack_client/types/vector_db_register_params.py @@ -22,3 +22,6 @@ class VectorDBRegisterParams(TypedDict, total=False): provider_vector_db_id: str """The identifier of the vector database in the provider.""" + + vector_db_name: str + """The name of the vector database.""" diff --git a/src/llama_stack_client/types/vector_db_register_response.py b/src/llama_stack_client/types/vector_db_register_response.py index 9c7a3166..cf48dd5a 100644 --- a/src/llama_stack_client/types/vector_db_register_response.py +++ b/src/llama_stack_client/types/vector_db_register_response.py @@ -10,13 +10,18 @@ class VectorDBRegisterResponse(BaseModel): embedding_dimension: int + """Dimension of the embedding vectors""" embedding_model: str + """Name of the embedding model to use for vector generation""" identifier: str provider_id: str type: Literal["vector_db"] + """Type of resource, always 'vector_db' for vector databases""" provider_resource_id: Optional[str] = None + + vector_db_name: Optional[str] = None diff --git a/src/llama_stack_client/types/vector_db_retrieve_response.py b/src/llama_stack_client/types/vector_db_retrieve_response.py index fb3597a5..aa349d1c 100644 --- a/src/llama_stack_client/types/vector_db_retrieve_response.py +++ b/src/llama_stack_client/types/vector_db_retrieve_response.py @@ -10,13 +10,18 @@ class VectorDBRetrieveResponse(BaseModel): embedding_dimension: int + """Dimension of the embedding vectors""" embedding_model: str + """Name of the embedding model to use for vector generation""" identifier: str provider_id: str type: Literal["vector_db"] + """Type of resource, always 'vector_db' for vector databases""" provider_resource_id: Optional[str] = None + + vector_db_name: Optional[str] = None diff --git a/src/llama_stack_client/types/vector_store.py b/src/llama_stack_client/types/vector_store.py index 5dc4ad3a..cfcebd81 100644 --- a/src/llama_stack_client/types/vector_store.py +++ b/src/llama_stack_client/types/vector_store.py @@ -10,35 +10,51 @@ class FileCounts(BaseModel): cancelled: int + """Number of files that had their processing cancelled""" completed: int + """Number of files that have been successfully processed""" failed: int + """Number of files that failed to process""" in_progress: int + """Number of files currently being processed""" total: int + """Total number of files in the vector store""" class VectorStore(BaseModel): id: str + """Unique identifier for the vector store""" created_at: int + """Timestamp when the vector store was created""" file_counts: FileCounts + """File processing status counts for the vector store""" metadata: Dict[str, Union[bool, float, str, List[object], object, None]] + """Set of key-value pairs that can be attached to the vector store""" object: str + """Object type identifier, always "vector_store" """ status: str + """Current status of the vector store""" usage_bytes: int + """Storage space used by the vector store in bytes""" expires_after: Optional[Dict[str, Union[bool, float, str, List[builtins.object], builtins.object, None]]] = None + """(Optional) Expiration policy for the vector store""" expires_at: Optional[int] = None + """(Optional) Timestamp when the vector store will expire""" last_active_at: Optional[int] = None + """(Optional) Timestamp of last activity on the vector store""" name: Optional[str] = None + """(Optional) Name of the vector store""" diff --git a/src/llama_stack_client/types/vector_store_create_params.py b/src/llama_stack_client/types/vector_store_create_params.py index 18748f48..dc6ea47e 100644 --- a/src/llama_stack_client/types/vector_store_create_params.py +++ b/src/llama_stack_client/types/vector_store_create_params.py @@ -3,15 +3,12 @@ from __future__ import annotations from typing import Dict, List, Union, Iterable -from typing_extensions import Required, TypedDict +from typing_extensions import TypedDict __all__ = ["VectorStoreCreateParams"] class VectorStoreCreateParams(TypedDict, total=False): - name: Required[str] - """A name for the vector store.""" - chunking_strategy: Dict[str, Union[bool, float, str, Iterable[object], object, None]] """The chunking strategy used to chunk the file(s). @@ -36,8 +33,8 @@ class VectorStoreCreateParams(TypedDict, total=False): metadata: Dict[str, Union[bool, float, str, Iterable[object], object, None]] """Set of 16 key-value pairs that can be attached to an object.""" + name: str + """A name for the vector store.""" + provider_id: str """The ID of the provider to use for this vector store.""" - - provider_vector_db_id: str - """The provider-specific vector database ID.""" diff --git a/src/llama_stack_client/types/vector_store_delete_response.py b/src/llama_stack_client/types/vector_store_delete_response.py index 945ada10..29637547 100644 --- a/src/llama_stack_client/types/vector_store_delete_response.py +++ b/src/llama_stack_client/types/vector_store_delete_response.py @@ -7,7 +7,10 @@ class VectorStoreDeleteResponse(BaseModel): id: str + """Unique identifier of the deleted vector store""" deleted: bool + """Whether the deletion operation was successful""" object: str + """Object type identifier for the deletion response""" diff --git a/src/llama_stack_client/types/vector_store_search_params.py b/src/llama_stack_client/types/vector_store_search_params.py index fdb02ff7..5a429b79 100644 --- a/src/llama_stack_client/types/vector_store_search_params.py +++ b/src/llama_stack_client/types/vector_store_search_params.py @@ -30,5 +30,7 @@ class VectorStoreSearchParams(TypedDict, total=False): class RankingOptions(TypedDict, total=False): ranker: str + """(Optional) Name of the ranking algorithm to use""" score_threshold: float + """(Optional) Minimum relevance score threshold for results""" diff --git a/src/llama_stack_client/types/vector_store_search_response.py b/src/llama_stack_client/types/vector_store_search_response.py index 7b596e03..2f9a1076 100644 --- a/src/llama_stack_client/types/vector_store_search_response.py +++ b/src/llama_stack_client/types/vector_store_search_response.py @@ -10,29 +10,41 @@ class DataContent(BaseModel): text: str + """The actual text content""" type: Literal["text"] + """Content type, currently only "text" is supported""" class Data(BaseModel): content: List[DataContent] + """List of content items matching the search query""" file_id: str + """Unique identifier of the file containing the result""" filename: str + """Name of the file containing the result""" score: float + """Relevance score for this search result""" attributes: Optional[Dict[str, Union[str, float, bool]]] = None + """(Optional) Key-value attributes associated with the file""" class VectorStoreSearchResponse(BaseModel): data: List[Data] + """List of search result objects""" has_more: bool + """Whether there are more results available beyond this page""" object: str + """Object type identifier for the search results page""" search_query: str + """The original search query that was executed""" next_page: Optional[str] = None + """(Optional) Token for retrieving the next page of results""" diff --git a/src/llama_stack_client/types/vector_stores/file_content_response.py b/src/llama_stack_client/types/vector_stores/file_content_response.py index 987160e4..035a34a8 100644 --- a/src/llama_stack_client/types/vector_stores/file_content_response.py +++ b/src/llama_stack_client/types/vector_stores/file_content_response.py @@ -10,15 +10,21 @@ class Content(BaseModel): text: str + """The actual text content""" type: Literal["text"] + """Content type, currently only "text" is supported""" class FileContentResponse(BaseModel): attributes: Dict[str, Union[bool, float, str, List[object], object, None]] + """Key-value attributes associated with the file""" content: List[Content] + """List of content items from the file""" file_id: str + """Unique identifier for the file""" filename: str + """Name of the file""" diff --git a/src/llama_stack_client/types/vector_stores/file_create_params.py b/src/llama_stack_client/types/vector_stores/file_create_params.py index 66fbf624..a75716b3 100644 --- a/src/llama_stack_client/types/vector_stores/file_create_params.py +++ b/src/llama_stack_client/types/vector_stores/file_create_params.py @@ -27,18 +27,23 @@ class FileCreateParams(TypedDict, total=False): class ChunkingStrategyVectorStoreChunkingStrategyAuto(TypedDict, total=False): type: Required[Literal["auto"]] + """Strategy type, always "auto" for automatic chunking""" class ChunkingStrategyVectorStoreChunkingStrategyStaticStatic(TypedDict, total=False): chunk_overlap_tokens: Required[int] + """Number of tokens to overlap between adjacent chunks""" max_chunk_size_tokens: Required[int] + """Maximum number of tokens per chunk, must be between 100 and 4096""" class ChunkingStrategyVectorStoreChunkingStrategyStatic(TypedDict, total=False): static: Required[ChunkingStrategyVectorStoreChunkingStrategyStaticStatic] + """Configuration parameters for the static chunking strategy""" type: Required[Literal["static"]] + """Strategy type, always "static" for static chunking""" ChunkingStrategy: TypeAlias = Union[ diff --git a/src/llama_stack_client/types/vector_stores/file_delete_response.py b/src/llama_stack_client/types/vector_stores/file_delete_response.py index be90cec6..f24e1910 100644 --- a/src/llama_stack_client/types/vector_stores/file_delete_response.py +++ b/src/llama_stack_client/types/vector_stores/file_delete_response.py @@ -7,7 +7,10 @@ class FileDeleteResponse(BaseModel): id: str + """Unique identifier of the deleted file""" deleted: bool + """Whether the deletion operation was successful""" object: str + """Object type identifier for the deletion response""" diff --git a/src/llama_stack_client/types/vector_stores/file_list_params.py b/src/llama_stack_client/types/vector_stores/file_list_params.py index 3843cb3f..7174242d 100644 --- a/src/llama_stack_client/types/vector_stores/file_list_params.py +++ b/src/llama_stack_client/types/vector_stores/file_list_params.py @@ -9,11 +9,30 @@ class FileListParams(TypedDict, total=False): after: str + """(Optional) A cursor for use in pagination. + + `after` is an object ID that defines your place in the list. + """ before: str + """(Optional) A cursor for use in pagination. + + `before` is an object ID that defines your place in the list. + """ filter: Literal["completed", "in_progress", "cancelled", "failed"] + """ + (Optional) Filter by file status to only return files with the specified status. + """ limit: int + """(Optional) A limit on the number of objects to be returned. + + Limit can range between 1 and 100, and the default is 20. + """ order: str + """(Optional) Sort order by the `created_at` timestamp of the objects. + + `asc` for ascending order and `desc` for descending order. + """ diff --git a/src/llama_stack_client/types/vector_stores/file_list_response.py b/src/llama_stack_client/types/vector_stores/file_list_response.py index d9f5f466..45ddc95f 100644 --- a/src/llama_stack_client/types/vector_stores/file_list_response.py +++ b/src/llama_stack_client/types/vector_stores/file_list_response.py @@ -10,11 +10,16 @@ class FileListResponse(BaseModel): data: List[VectorStoreFile] + """List of vector store file objects""" has_more: bool + """Whether there are more files available beyond this page""" object: str + """Object type identifier, always "list" """ first_id: Optional[str] = None + """(Optional) ID of the first file in the list for pagination""" last_id: Optional[str] = None + """(Optional) ID of the last file in the list for pagination""" diff --git a/src/llama_stack_client/types/vector_stores/vector_store_file.py b/src/llama_stack_client/types/vector_stores/vector_store_file.py index 45ce03f8..243a00df 100644 --- a/src/llama_stack_client/types/vector_stores/vector_store_file.py +++ b/src/llama_stack_client/types/vector_stores/vector_store_file.py @@ -18,18 +18,23 @@ class ChunkingStrategyVectorStoreChunkingStrategyAuto(BaseModel): type: Literal["auto"] + """Strategy type, always "auto" for automatic chunking""" class ChunkingStrategyVectorStoreChunkingStrategyStaticStatic(BaseModel): chunk_overlap_tokens: int + """Number of tokens to overlap between adjacent chunks""" max_chunk_size_tokens: int + """Maximum number of tokens per chunk, must be between 100 and 4096""" class ChunkingStrategyVectorStoreChunkingStrategyStatic(BaseModel): static: ChunkingStrategyVectorStoreChunkingStrategyStaticStatic + """Configuration parameters for the static chunking strategy""" type: Literal["static"] + """Strategy type, always "static" for static chunking""" ChunkingStrategy: TypeAlias = Annotated[ @@ -40,25 +45,36 @@ class ChunkingStrategyVectorStoreChunkingStrategyStatic(BaseModel): class LastError(BaseModel): code: Literal["server_error", "rate_limit_exceeded"] + """Error code indicating the type of failure""" message: str + """Human-readable error message describing the failure""" class VectorStoreFile(BaseModel): id: str + """Unique identifier for the file""" attributes: Dict[str, Union[bool, float, str, List[object], object, None]] + """Key-value attributes associated with the file""" chunking_strategy: ChunkingStrategy + """Strategy used for splitting the file into chunks""" created_at: int + """Timestamp when the file was added to the vector store""" object: str + """Object type identifier, always "vector_store.file" """ status: Literal["completed", "in_progress", "cancelled", "failed"] + """Current processing status of the file""" usage_bytes: int + """Storage space used by this file in bytes""" vector_store_id: str + """ID of the vector store containing this file""" last_error: Optional[LastError] = None + """(Optional) Error information if file processing failed""" diff --git a/src/llama_stack_client/types/version_info.py b/src/llama_stack_client/types/version_info.py index 5fc5bbb4..001d05cb 100644 --- a/src/llama_stack_client/types/version_info.py +++ b/src/llama_stack_client/types/version_info.py @@ -7,3 +7,4 @@ class VersionInfo(BaseModel): version: str + """Version number of the service""" diff --git a/tests/api_resources/test_inference.py b/tests/api_resources/test_inference.py index 21967c9a..d5ef46d1 100644 --- a/tests/api_resources/test_inference.py +++ b/tests/api_resources/test_inference.py @@ -16,6 +16,8 @@ ) from llama_stack_client.types.shared import BatchCompletion, ChatCompletionResponse +# pyright: reportDeprecated=false + base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -178,75 +180,80 @@ def test_streaming_response_batch_completion(self, client: LlamaStackClient) -> @parametrize def test_method_chat_completion_overload_1(self, client: LlamaStackClient) -> None: - inference = client.inference.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + inference = client.inference.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + ) + assert_matches_type(ChatCompletionResponse, inference, path=["response"]) @parametrize def test_method_chat_completion_with_all_params_overload_1(self, client: LlamaStackClient) -> None: - inference = client.inference.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - "context": "string", - } - ], - model_id="model_id", - logprobs={"top_k": 0}, - response_format={ - "json_schema": {"foo": True}, - "type": "json_schema", - }, - sampling_params={ - "strategy": {"type": "greedy"}, - "max_tokens": 0, - "repetition_penalty": 0, - "stop": ["string"], - }, - stream=False, - tool_choice="auto", - tool_config={ - "system_message_behavior": "append", - "tool_choice": "auto", - "tool_prompt_format": "json", - }, - tool_prompt_format="json", - tools=[ - { - "tool_name": "brave_search", - "description": "description", - "parameters": { - "foo": { - "param_type": "param_type", - "default": True, - "description": "description", - "required": True, - } - }, - } - ], - ) + with pytest.warns(DeprecationWarning): + inference = client.inference.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + "context": "string", + } + ], + model_id="model_id", + logprobs={"top_k": 0}, + response_format={ + "json_schema": {"foo": True}, + "type": "json_schema", + }, + sampling_params={ + "strategy": {"type": "greedy"}, + "max_tokens": 0, + "repetition_penalty": 0, + "stop": ["string"], + }, + stream=False, + tool_choice="auto", + tool_config={ + "system_message_behavior": "append", + "tool_choice": "auto", + "tool_prompt_format": "json", + }, + tool_prompt_format="json", + tools=[ + { + "tool_name": "brave_search", + "description": "description", + "parameters": { + "foo": { + "param_type": "param_type", + "default": True, + "description": "description", + "required": True, + } + }, + } + ], + ) + assert_matches_type(ChatCompletionResponse, inference, path=["response"]) @parametrize def test_raw_response_chat_completion_overload_1(self, client: LlamaStackClient) -> None: - response = client.inference.with_raw_response.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + response = client.inference.with_raw_response.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -255,96 +262,102 @@ def test_raw_response_chat_completion_overload_1(self, client: LlamaStackClient) @parametrize def test_streaming_response_chat_completion_overload_1(self, client: LlamaStackClient) -> None: - with client.inference.with_streaming_response.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + with client.inference.with_streaming_response.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - inference = response.parse() - assert_matches_type(ChatCompletionResponse, inference, path=["response"]) + inference = response.parse() + assert_matches_type(ChatCompletionResponse, inference, path=["response"]) assert cast(Any, response.is_closed) is True @parametrize def test_method_chat_completion_overload_2(self, client: LlamaStackClient) -> None: - inference_stream = client.inference.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - stream=True, - ) + with pytest.warns(DeprecationWarning): + inference_stream = client.inference.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + stream=True, + ) + inference_stream.response.close() @parametrize def test_method_chat_completion_with_all_params_overload_2(self, client: LlamaStackClient) -> None: - inference_stream = client.inference.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - "context": "string", - } - ], - model_id="model_id", - stream=True, - logprobs={"top_k": 0}, - response_format={ - "json_schema": {"foo": True}, - "type": "json_schema", - }, - sampling_params={ - "strategy": {"type": "greedy"}, - "max_tokens": 0, - "repetition_penalty": 0, - "stop": ["string"], - }, - tool_choice="auto", - tool_config={ - "system_message_behavior": "append", - "tool_choice": "auto", - "tool_prompt_format": "json", - }, - tool_prompt_format="json", - tools=[ - { - "tool_name": "brave_search", - "description": "description", - "parameters": { - "foo": { - "param_type": "param_type", - "default": True, - "description": "description", - "required": True, - } - }, - } - ], - ) + with pytest.warns(DeprecationWarning): + inference_stream = client.inference.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + "context": "string", + } + ], + model_id="model_id", + stream=True, + logprobs={"top_k": 0}, + response_format={ + "json_schema": {"foo": True}, + "type": "json_schema", + }, + sampling_params={ + "strategy": {"type": "greedy"}, + "max_tokens": 0, + "repetition_penalty": 0, + "stop": ["string"], + }, + tool_choice="auto", + tool_config={ + "system_message_behavior": "append", + "tool_choice": "auto", + "tool_prompt_format": "json", + }, + tool_prompt_format="json", + tools=[ + { + "tool_name": "brave_search", + "description": "description", + "parameters": { + "foo": { + "param_type": "param_type", + "default": True, + "description": "description", + "required": True, + } + }, + } + ], + ) + inference_stream.response.close() @parametrize def test_raw_response_chat_completion_overload_2(self, client: LlamaStackClient) -> None: - response = client.inference.with_raw_response.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - stream=True, - ) + with pytest.warns(DeprecationWarning): + response = client.inference.with_raw_response.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + stream=True, + ) assert response.http_request.headers.get("X-Stainless-Lang") == "python" stream = response.parse() @@ -352,58 +365,64 @@ def test_raw_response_chat_completion_overload_2(self, client: LlamaStackClient) @parametrize def test_streaming_response_chat_completion_overload_2(self, client: LlamaStackClient) -> None: - with client.inference.with_streaming_response.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - stream=True, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + with client.inference.with_streaming_response.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + stream=True, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - stream = response.parse() - stream.close() + stream = response.parse() + stream.close() assert cast(Any, response.is_closed) is True @parametrize def test_method_completion_overload_1(self, client: LlamaStackClient) -> None: - inference = client.inference.completion( - content="string", - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + inference = client.inference.completion( + content="string", + model_id="model_id", + ) + assert_matches_type(CompletionResponse, inference, path=["response"]) @parametrize def test_method_completion_with_all_params_overload_1(self, client: LlamaStackClient) -> None: - inference = client.inference.completion( - content="string", - model_id="model_id", - logprobs={"top_k": 0}, - response_format={ - "json_schema": {"foo": True}, - "type": "json_schema", - }, - sampling_params={ - "strategy": {"type": "greedy"}, - "max_tokens": 0, - "repetition_penalty": 0, - "stop": ["string"], - }, - stream=False, - ) + with pytest.warns(DeprecationWarning): + inference = client.inference.completion( + content="string", + model_id="model_id", + logprobs={"top_k": 0}, + response_format={ + "json_schema": {"foo": True}, + "type": "json_schema", + }, + sampling_params={ + "strategy": {"type": "greedy"}, + "max_tokens": 0, + "repetition_penalty": 0, + "stop": ["string"], + }, + stream=False, + ) + assert_matches_type(CompletionResponse, inference, path=["response"]) @parametrize def test_raw_response_completion_overload_1(self, client: LlamaStackClient) -> None: - response = client.inference.with_raw_response.completion( - content="string", - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + response = client.inference.with_raw_response.completion( + content="string", + model_id="model_id", + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -412,54 +431,60 @@ def test_raw_response_completion_overload_1(self, client: LlamaStackClient) -> N @parametrize def test_streaming_response_completion_overload_1(self, client: LlamaStackClient) -> None: - with client.inference.with_streaming_response.completion( - content="string", - model_id="model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + with client.inference.with_streaming_response.completion( + content="string", + model_id="model_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - inference = response.parse() - assert_matches_type(CompletionResponse, inference, path=["response"]) + inference = response.parse() + assert_matches_type(CompletionResponse, inference, path=["response"]) assert cast(Any, response.is_closed) is True @parametrize def test_method_completion_overload_2(self, client: LlamaStackClient) -> None: - inference_stream = client.inference.completion( - content="string", - model_id="model_id", - stream=True, - ) + with pytest.warns(DeprecationWarning): + inference_stream = client.inference.completion( + content="string", + model_id="model_id", + stream=True, + ) + inference_stream.response.close() @parametrize def test_method_completion_with_all_params_overload_2(self, client: LlamaStackClient) -> None: - inference_stream = client.inference.completion( - content="string", - model_id="model_id", - stream=True, - logprobs={"top_k": 0}, - response_format={ - "json_schema": {"foo": True}, - "type": "json_schema", - }, - sampling_params={ - "strategy": {"type": "greedy"}, - "max_tokens": 0, - "repetition_penalty": 0, - "stop": ["string"], - }, - ) + with pytest.warns(DeprecationWarning): + inference_stream = client.inference.completion( + content="string", + model_id="model_id", + stream=True, + logprobs={"top_k": 0}, + response_format={ + "json_schema": {"foo": True}, + "type": "json_schema", + }, + sampling_params={ + "strategy": {"type": "greedy"}, + "max_tokens": 0, + "repetition_penalty": 0, + "stop": ["string"], + }, + ) + inference_stream.response.close() @parametrize def test_raw_response_completion_overload_2(self, client: LlamaStackClient) -> None: - response = client.inference.with_raw_response.completion( - content="string", - model_id="model_id", - stream=True, - ) + with pytest.warns(DeprecationWarning): + response = client.inference.with_raw_response.completion( + content="string", + model_id="model_id", + stream=True, + ) assert response.http_request.headers.get("X-Stainless-Lang") == "python" stream = response.parse() @@ -467,44 +492,50 @@ def test_raw_response_completion_overload_2(self, client: LlamaStackClient) -> N @parametrize def test_streaming_response_completion_overload_2(self, client: LlamaStackClient) -> None: - with client.inference.with_streaming_response.completion( - content="string", - model_id="model_id", - stream=True, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - stream = response.parse() - stream.close() + with pytest.warns(DeprecationWarning): + with client.inference.with_streaming_response.completion( + content="string", + model_id="model_id", + stream=True, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + stream = response.parse() + stream.close() assert cast(Any, response.is_closed) is True @parametrize def test_method_embeddings(self, client: LlamaStackClient) -> None: - inference = client.inference.embeddings( - contents=["string"], - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + inference = client.inference.embeddings( + contents=["string"], + model_id="model_id", + ) + assert_matches_type(EmbeddingsResponse, inference, path=["response"]) @parametrize def test_method_embeddings_with_all_params(self, client: LlamaStackClient) -> None: - inference = client.inference.embeddings( - contents=["string"], - model_id="model_id", - output_dimension=0, - task_type="query", - text_truncation="none", - ) + with pytest.warns(DeprecationWarning): + inference = client.inference.embeddings( + contents=["string"], + model_id="model_id", + output_dimension=0, + task_type="query", + text_truncation="none", + ) + assert_matches_type(EmbeddingsResponse, inference, path=["response"]) @parametrize def test_raw_response_embeddings(self, client: LlamaStackClient) -> None: - response = client.inference.with_raw_response.embeddings( - contents=["string"], - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + response = client.inference.with_raw_response.embeddings( + contents=["string"], + model_id="model_id", + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -513,15 +544,16 @@ def test_raw_response_embeddings(self, client: LlamaStackClient) -> None: @parametrize def test_streaming_response_embeddings(self, client: LlamaStackClient) -> None: - with client.inference.with_streaming_response.embeddings( - contents=["string"], - model_id="model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + with client.inference.with_streaming_response.embeddings( + contents=["string"], + model_id="model_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - inference = response.parse() - assert_matches_type(EmbeddingsResponse, inference, path=["response"]) + inference = response.parse() + assert_matches_type(EmbeddingsResponse, inference, path=["response"]) assert cast(Any, response.is_closed) is True @@ -687,75 +719,80 @@ async def test_streaming_response_batch_completion(self, async_client: AsyncLlam @parametrize async def test_method_chat_completion_overload_1(self, async_client: AsyncLlamaStackClient) -> None: - inference = await async_client.inference.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + inference = await async_client.inference.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + ) + assert_matches_type(ChatCompletionResponse, inference, path=["response"]) @parametrize async def test_method_chat_completion_with_all_params_overload_1(self, async_client: AsyncLlamaStackClient) -> None: - inference = await async_client.inference.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - "context": "string", - } - ], - model_id="model_id", - logprobs={"top_k": 0}, - response_format={ - "json_schema": {"foo": True}, - "type": "json_schema", - }, - sampling_params={ - "strategy": {"type": "greedy"}, - "max_tokens": 0, - "repetition_penalty": 0, - "stop": ["string"], - }, - stream=False, - tool_choice="auto", - tool_config={ - "system_message_behavior": "append", - "tool_choice": "auto", - "tool_prompt_format": "json", - }, - tool_prompt_format="json", - tools=[ - { - "tool_name": "brave_search", - "description": "description", - "parameters": { - "foo": { - "param_type": "param_type", - "default": True, - "description": "description", - "required": True, - } - }, - } - ], - ) + with pytest.warns(DeprecationWarning): + inference = await async_client.inference.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + "context": "string", + } + ], + model_id="model_id", + logprobs={"top_k": 0}, + response_format={ + "json_schema": {"foo": True}, + "type": "json_schema", + }, + sampling_params={ + "strategy": {"type": "greedy"}, + "max_tokens": 0, + "repetition_penalty": 0, + "stop": ["string"], + }, + stream=False, + tool_choice="auto", + tool_config={ + "system_message_behavior": "append", + "tool_choice": "auto", + "tool_prompt_format": "json", + }, + tool_prompt_format="json", + tools=[ + { + "tool_name": "brave_search", + "description": "description", + "parameters": { + "foo": { + "param_type": "param_type", + "default": True, + "description": "description", + "required": True, + } + }, + } + ], + ) + assert_matches_type(ChatCompletionResponse, inference, path=["response"]) @parametrize async def test_raw_response_chat_completion_overload_1(self, async_client: AsyncLlamaStackClient) -> None: - response = await async_client.inference.with_raw_response.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + response = await async_client.inference.with_raw_response.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -764,96 +801,102 @@ async def test_raw_response_chat_completion_overload_1(self, async_client: Async @parametrize async def test_streaming_response_chat_completion_overload_1(self, async_client: AsyncLlamaStackClient) -> None: - async with async_client.inference.with_streaming_response.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + async with async_client.inference.with_streaming_response.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - inference = await response.parse() - assert_matches_type(ChatCompletionResponse, inference, path=["response"]) + inference = await response.parse() + assert_matches_type(ChatCompletionResponse, inference, path=["response"]) assert cast(Any, response.is_closed) is True @parametrize async def test_method_chat_completion_overload_2(self, async_client: AsyncLlamaStackClient) -> None: - inference_stream = await async_client.inference.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - stream=True, - ) + with pytest.warns(DeprecationWarning): + inference_stream = await async_client.inference.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + stream=True, + ) + await inference_stream.response.aclose() @parametrize async def test_method_chat_completion_with_all_params_overload_2(self, async_client: AsyncLlamaStackClient) -> None: - inference_stream = await async_client.inference.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - "context": "string", - } - ], - model_id="model_id", - stream=True, - logprobs={"top_k": 0}, - response_format={ - "json_schema": {"foo": True}, - "type": "json_schema", - }, - sampling_params={ - "strategy": {"type": "greedy"}, - "max_tokens": 0, - "repetition_penalty": 0, - "stop": ["string"], - }, - tool_choice="auto", - tool_config={ - "system_message_behavior": "append", - "tool_choice": "auto", - "tool_prompt_format": "json", - }, - tool_prompt_format="json", - tools=[ - { - "tool_name": "brave_search", - "description": "description", - "parameters": { - "foo": { - "param_type": "param_type", - "default": True, - "description": "description", - "required": True, - } - }, - } - ], - ) + with pytest.warns(DeprecationWarning): + inference_stream = await async_client.inference.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + "context": "string", + } + ], + model_id="model_id", + stream=True, + logprobs={"top_k": 0}, + response_format={ + "json_schema": {"foo": True}, + "type": "json_schema", + }, + sampling_params={ + "strategy": {"type": "greedy"}, + "max_tokens": 0, + "repetition_penalty": 0, + "stop": ["string"], + }, + tool_choice="auto", + tool_config={ + "system_message_behavior": "append", + "tool_choice": "auto", + "tool_prompt_format": "json", + }, + tool_prompt_format="json", + tools=[ + { + "tool_name": "brave_search", + "description": "description", + "parameters": { + "foo": { + "param_type": "param_type", + "default": True, + "description": "description", + "required": True, + } + }, + } + ], + ) + await inference_stream.response.aclose() @parametrize async def test_raw_response_chat_completion_overload_2(self, async_client: AsyncLlamaStackClient) -> None: - response = await async_client.inference.with_raw_response.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - stream=True, - ) + with pytest.warns(DeprecationWarning): + response = await async_client.inference.with_raw_response.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + stream=True, + ) assert response.http_request.headers.get("X-Stainless-Lang") == "python" stream = await response.parse() @@ -861,58 +904,64 @@ async def test_raw_response_chat_completion_overload_2(self, async_client: Async @parametrize async def test_streaming_response_chat_completion_overload_2(self, async_client: AsyncLlamaStackClient) -> None: - async with async_client.inference.with_streaming_response.chat_completion( - messages=[ - { - "content": "string", - "role": "user", - } - ], - model_id="model_id", - stream=True, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + async with async_client.inference.with_streaming_response.chat_completion( + messages=[ + { + "content": "string", + "role": "user", + } + ], + model_id="model_id", + stream=True, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - stream = await response.parse() - await stream.close() + stream = await response.parse() + await stream.close() assert cast(Any, response.is_closed) is True @parametrize async def test_method_completion_overload_1(self, async_client: AsyncLlamaStackClient) -> None: - inference = await async_client.inference.completion( - content="string", - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + inference = await async_client.inference.completion( + content="string", + model_id="model_id", + ) + assert_matches_type(CompletionResponse, inference, path=["response"]) @parametrize async def test_method_completion_with_all_params_overload_1(self, async_client: AsyncLlamaStackClient) -> None: - inference = await async_client.inference.completion( - content="string", - model_id="model_id", - logprobs={"top_k": 0}, - response_format={ - "json_schema": {"foo": True}, - "type": "json_schema", - }, - sampling_params={ - "strategy": {"type": "greedy"}, - "max_tokens": 0, - "repetition_penalty": 0, - "stop": ["string"], - }, - stream=False, - ) + with pytest.warns(DeprecationWarning): + inference = await async_client.inference.completion( + content="string", + model_id="model_id", + logprobs={"top_k": 0}, + response_format={ + "json_schema": {"foo": True}, + "type": "json_schema", + }, + sampling_params={ + "strategy": {"type": "greedy"}, + "max_tokens": 0, + "repetition_penalty": 0, + "stop": ["string"], + }, + stream=False, + ) + assert_matches_type(CompletionResponse, inference, path=["response"]) @parametrize async def test_raw_response_completion_overload_1(self, async_client: AsyncLlamaStackClient) -> None: - response = await async_client.inference.with_raw_response.completion( - content="string", - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + response = await async_client.inference.with_raw_response.completion( + content="string", + model_id="model_id", + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -921,54 +970,60 @@ async def test_raw_response_completion_overload_1(self, async_client: AsyncLlama @parametrize async def test_streaming_response_completion_overload_1(self, async_client: AsyncLlamaStackClient) -> None: - async with async_client.inference.with_streaming_response.completion( - content="string", - model_id="model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + async with async_client.inference.with_streaming_response.completion( + content="string", + model_id="model_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - inference = await response.parse() - assert_matches_type(CompletionResponse, inference, path=["response"]) + inference = await response.parse() + assert_matches_type(CompletionResponse, inference, path=["response"]) assert cast(Any, response.is_closed) is True @parametrize async def test_method_completion_overload_2(self, async_client: AsyncLlamaStackClient) -> None: - inference_stream = await async_client.inference.completion( - content="string", - model_id="model_id", - stream=True, - ) + with pytest.warns(DeprecationWarning): + inference_stream = await async_client.inference.completion( + content="string", + model_id="model_id", + stream=True, + ) + await inference_stream.response.aclose() @parametrize async def test_method_completion_with_all_params_overload_2(self, async_client: AsyncLlamaStackClient) -> None: - inference_stream = await async_client.inference.completion( - content="string", - model_id="model_id", - stream=True, - logprobs={"top_k": 0}, - response_format={ - "json_schema": {"foo": True}, - "type": "json_schema", - }, - sampling_params={ - "strategy": {"type": "greedy"}, - "max_tokens": 0, - "repetition_penalty": 0, - "stop": ["string"], - }, - ) + with pytest.warns(DeprecationWarning): + inference_stream = await async_client.inference.completion( + content="string", + model_id="model_id", + stream=True, + logprobs={"top_k": 0}, + response_format={ + "json_schema": {"foo": True}, + "type": "json_schema", + }, + sampling_params={ + "strategy": {"type": "greedy"}, + "max_tokens": 0, + "repetition_penalty": 0, + "stop": ["string"], + }, + ) + await inference_stream.response.aclose() @parametrize async def test_raw_response_completion_overload_2(self, async_client: AsyncLlamaStackClient) -> None: - response = await async_client.inference.with_raw_response.completion( - content="string", - model_id="model_id", - stream=True, - ) + with pytest.warns(DeprecationWarning): + response = await async_client.inference.with_raw_response.completion( + content="string", + model_id="model_id", + stream=True, + ) assert response.http_request.headers.get("X-Stainless-Lang") == "python" stream = await response.parse() @@ -976,44 +1031,50 @@ async def test_raw_response_completion_overload_2(self, async_client: AsyncLlama @parametrize async def test_streaming_response_completion_overload_2(self, async_client: AsyncLlamaStackClient) -> None: - async with async_client.inference.with_streaming_response.completion( - content="string", - model_id="model_id", - stream=True, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - stream = await response.parse() - await stream.close() + with pytest.warns(DeprecationWarning): + async with async_client.inference.with_streaming_response.completion( + content="string", + model_id="model_id", + stream=True, + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + stream = await response.parse() + await stream.close() assert cast(Any, response.is_closed) is True @parametrize async def test_method_embeddings(self, async_client: AsyncLlamaStackClient) -> None: - inference = await async_client.inference.embeddings( - contents=["string"], - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + inference = await async_client.inference.embeddings( + contents=["string"], + model_id="model_id", + ) + assert_matches_type(EmbeddingsResponse, inference, path=["response"]) @parametrize async def test_method_embeddings_with_all_params(self, async_client: AsyncLlamaStackClient) -> None: - inference = await async_client.inference.embeddings( - contents=["string"], - model_id="model_id", - output_dimension=0, - task_type="query", - text_truncation="none", - ) + with pytest.warns(DeprecationWarning): + inference = await async_client.inference.embeddings( + contents=["string"], + model_id="model_id", + output_dimension=0, + task_type="query", + text_truncation="none", + ) + assert_matches_type(EmbeddingsResponse, inference, path=["response"]) @parametrize async def test_raw_response_embeddings(self, async_client: AsyncLlamaStackClient) -> None: - response = await async_client.inference.with_raw_response.embeddings( - contents=["string"], - model_id="model_id", - ) + with pytest.warns(DeprecationWarning): + response = await async_client.inference.with_raw_response.embeddings( + contents=["string"], + model_id="model_id", + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -1022,14 +1083,15 @@ async def test_raw_response_embeddings(self, async_client: AsyncLlamaStackClient @parametrize async def test_streaming_response_embeddings(self, async_client: AsyncLlamaStackClient) -> None: - async with async_client.inference.with_streaming_response.embeddings( - contents=["string"], - model_id="model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - inference = await response.parse() - assert_matches_type(EmbeddingsResponse, inference, path=["response"]) + with pytest.warns(DeprecationWarning): + async with async_client.inference.with_streaming_response.embeddings( + contents=["string"], + model_id="model_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + inference = await response.parse() + assert_matches_type(EmbeddingsResponse, inference, path=["response"]) assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/test_moderations.py b/tests/api_resources/test_moderations.py new file mode 100644 index 00000000..cbc77db1 --- /dev/null +++ b/tests/api_resources/test_moderations.py @@ -0,0 +1,92 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +import os +from typing import Any, cast + +import pytest + +from tests.utils import assert_matches_type +from llama_stack_client import LlamaStackClient, AsyncLlamaStackClient +from llama_stack_client.types import CreateResponse + +base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") + + +class TestModerations: + parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) + + @parametrize + def test_method_create(self, client: LlamaStackClient) -> None: + moderation = client.moderations.create( + input="string", + model="model", + ) + assert_matches_type(CreateResponse, moderation, path=["response"]) + + @parametrize + def test_raw_response_create(self, client: LlamaStackClient) -> None: + response = client.moderations.with_raw_response.create( + input="string", + model="model", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + moderation = response.parse() + assert_matches_type(CreateResponse, moderation, path=["response"]) + + @parametrize + def test_streaming_response_create(self, client: LlamaStackClient) -> None: + with client.moderations.with_streaming_response.create( + input="string", + model="model", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + moderation = response.parse() + assert_matches_type(CreateResponse, moderation, path=["response"]) + + assert cast(Any, response.is_closed) is True + + +class TestAsyncModerations: + parametrize = pytest.mark.parametrize( + "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] + ) + + @parametrize + async def test_method_create(self, async_client: AsyncLlamaStackClient) -> None: + moderation = await async_client.moderations.create( + input="string", + model="model", + ) + assert_matches_type(CreateResponse, moderation, path=["response"]) + + @parametrize + async def test_raw_response_create(self, async_client: AsyncLlamaStackClient) -> None: + response = await async_client.moderations.with_raw_response.create( + input="string", + model="model", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + moderation = await response.parse() + assert_matches_type(CreateResponse, moderation, path=["response"]) + + @parametrize + async def test_streaming_response_create(self, async_client: AsyncLlamaStackClient) -> None: + async with async_client.moderations.with_streaming_response.create( + input="string", + model="model", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + moderation = await response.parse() + assert_matches_type(CreateResponse, moderation, path=["response"]) + + assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/test_post_training.py b/tests/api_resources/test_post_training.py index 5e7430fb..899a53ca 100644 --- a/tests/api_resources/test_post_training.py +++ b/tests/api_resources/test_post_training.py @@ -23,10 +23,8 @@ class TestPostTraining: def test_method_preference_optimize(self, client: LlamaStackClient) -> None: post_training = client.post_training.preference_optimize( algorithm_config={ - "epsilon": 0, - "gamma": 0, - "reward_clip": 0, - "reward_scale": 0, + "beta": 0, + "loss_type": "sigmoid", }, finetuned_model="finetuned_model", hyperparam_search_config={"foo": True}, @@ -44,10 +42,8 @@ def test_method_preference_optimize(self, client: LlamaStackClient) -> None: def test_method_preference_optimize_with_all_params(self, client: LlamaStackClient) -> None: post_training = client.post_training.preference_optimize( algorithm_config={ - "epsilon": 0, - "gamma": 0, - "reward_clip": 0, - "reward_scale": 0, + "beta": 0, + "loss_type": "sigmoid", }, finetuned_model="finetuned_model", hyperparam_search_config={"foo": True}, @@ -88,10 +84,8 @@ def test_method_preference_optimize_with_all_params(self, client: LlamaStackClie def test_raw_response_preference_optimize(self, client: LlamaStackClient) -> None: response = client.post_training.with_raw_response.preference_optimize( algorithm_config={ - "epsilon": 0, - "gamma": 0, - "reward_clip": 0, - "reward_scale": 0, + "beta": 0, + "loss_type": "sigmoid", }, finetuned_model="finetuned_model", hyperparam_search_config={"foo": True}, @@ -113,10 +107,8 @@ def test_raw_response_preference_optimize(self, client: LlamaStackClient) -> Non def test_streaming_response_preference_optimize(self, client: LlamaStackClient) -> None: with client.post_training.with_streaming_response.preference_optimize( algorithm_config={ - "epsilon": 0, - "gamma": 0, - "reward_clip": 0, - "reward_scale": 0, + "beta": 0, + "loss_type": "sigmoid", }, finetuned_model="finetuned_model", hyperparam_search_config={"foo": True}, @@ -247,10 +239,8 @@ class TestAsyncPostTraining: async def test_method_preference_optimize(self, async_client: AsyncLlamaStackClient) -> None: post_training = await async_client.post_training.preference_optimize( algorithm_config={ - "epsilon": 0, - "gamma": 0, - "reward_clip": 0, - "reward_scale": 0, + "beta": 0, + "loss_type": "sigmoid", }, finetuned_model="finetuned_model", hyperparam_search_config={"foo": True}, @@ -268,10 +258,8 @@ async def test_method_preference_optimize(self, async_client: AsyncLlamaStackCli async def test_method_preference_optimize_with_all_params(self, async_client: AsyncLlamaStackClient) -> None: post_training = await async_client.post_training.preference_optimize( algorithm_config={ - "epsilon": 0, - "gamma": 0, - "reward_clip": 0, - "reward_scale": 0, + "beta": 0, + "loss_type": "sigmoid", }, finetuned_model="finetuned_model", hyperparam_search_config={"foo": True}, @@ -312,10 +300,8 @@ async def test_method_preference_optimize_with_all_params(self, async_client: As async def test_raw_response_preference_optimize(self, async_client: AsyncLlamaStackClient) -> None: response = await async_client.post_training.with_raw_response.preference_optimize( algorithm_config={ - "epsilon": 0, - "gamma": 0, - "reward_clip": 0, - "reward_scale": 0, + "beta": 0, + "loss_type": "sigmoid", }, finetuned_model="finetuned_model", hyperparam_search_config={"foo": True}, @@ -337,10 +323,8 @@ async def test_raw_response_preference_optimize(self, async_client: AsyncLlamaSt async def test_streaming_response_preference_optimize(self, async_client: AsyncLlamaStackClient) -> None: async with async_client.post_training.with_streaming_response.preference_optimize( algorithm_config={ - "epsilon": 0, - "gamma": 0, - "reward_clip": 0, - "reward_scale": 0, + "beta": 0, + "loss_type": "sigmoid", }, finetuned_model="finetuned_model", hyperparam_search_config={"foo": True}, diff --git a/tests/api_resources/test_vector_dbs.py b/tests/api_resources/test_vector_dbs.py index 68d6be89..1c4b855a 100644 --- a/tests/api_resources/test_vector_dbs.py +++ b/tests/api_resources/test_vector_dbs.py @@ -100,6 +100,7 @@ def test_method_register_with_all_params(self, client: LlamaStackClient) -> None embedding_dimension=0, provider_id="provider_id", provider_vector_db_id="provider_vector_db_id", + vector_db_name="vector_db_name", ) assert_matches_type(VectorDBRegisterResponse, vector_db, path=["response"]) @@ -252,6 +253,7 @@ async def test_method_register_with_all_params(self, async_client: AsyncLlamaSta embedding_dimension=0, provider_id="provider_id", provider_vector_db_id="provider_vector_db_id", + vector_db_name="vector_db_name", ) assert_matches_type(VectorDBRegisterResponse, vector_db, path=["response"]) diff --git a/tests/api_resources/test_vector_stores.py b/tests/api_resources/test_vector_stores.py index 84324ca4..0547061a 100644 --- a/tests/api_resources/test_vector_stores.py +++ b/tests/api_resources/test_vector_stores.py @@ -24,31 +24,26 @@ class TestVectorStores: @parametrize def test_method_create(self, client: LlamaStackClient) -> None: - vector_store = client.vector_stores.create( - name="name", - ) + vector_store = client.vector_stores.create() assert_matches_type(VectorStore, vector_store, path=["response"]) @parametrize def test_method_create_with_all_params(self, client: LlamaStackClient) -> None: vector_store = client.vector_stores.create( - name="name", chunking_strategy={"foo": True}, embedding_dimension=0, embedding_model="embedding_model", expires_after={"foo": True}, file_ids=["string"], metadata={"foo": True}, + name="name", provider_id="provider_id", - provider_vector_db_id="provider_vector_db_id", ) assert_matches_type(VectorStore, vector_store, path=["response"]) @parametrize def test_raw_response_create(self, client: LlamaStackClient) -> None: - response = client.vector_stores.with_raw_response.create( - name="name", - ) + response = client.vector_stores.with_raw_response.create() assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -57,9 +52,7 @@ def test_raw_response_create(self, client: LlamaStackClient) -> None: @parametrize def test_streaming_response_create(self, client: LlamaStackClient) -> None: - with client.vector_stores.with_streaming_response.create( - name="name", - ) as response: + with client.vector_stores.with_streaming_response.create() as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -293,31 +286,26 @@ class TestAsyncVectorStores: @parametrize async def test_method_create(self, async_client: AsyncLlamaStackClient) -> None: - vector_store = await async_client.vector_stores.create( - name="name", - ) + vector_store = await async_client.vector_stores.create() assert_matches_type(VectorStore, vector_store, path=["response"]) @parametrize async def test_method_create_with_all_params(self, async_client: AsyncLlamaStackClient) -> None: vector_store = await async_client.vector_stores.create( - name="name", chunking_strategy={"foo": True}, embedding_dimension=0, embedding_model="embedding_model", expires_after={"foo": True}, file_ids=["string"], metadata={"foo": True}, + name="name", provider_id="provider_id", - provider_vector_db_id="provider_vector_db_id", ) assert_matches_type(VectorStore, vector_store, path=["response"]) @parametrize async def test_raw_response_create(self, async_client: AsyncLlamaStackClient) -> None: - response = await async_client.vector_stores.with_raw_response.create( - name="name", - ) + response = await async_client.vector_stores.with_raw_response.create() assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -326,9 +314,7 @@ async def test_raw_response_create(self, async_client: AsyncLlamaStackClient) -> @parametrize async def test_streaming_response_create(self, async_client: AsyncLlamaStackClient) -> None: - async with async_client.vector_stores.with_streaming_response.create( - name="name", - ) as response: + async with async_client.vector_stores.with_streaming_response.create() as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" diff --git a/tests/api_resources/tool_runtime/test_rag_tool.py b/tests/api_resources/tool_runtime/test_rag_tool.py index 17a64d8e..dab816ab 100644 --- a/tests/api_resources/tool_runtime/test_rag_tool.py +++ b/tests/api_resources/tool_runtime/test_rag_tool.py @@ -93,7 +93,7 @@ def test_method_query_with_all_params(self, client: LlamaStackClient) -> None: "separator": "separator", "type": "default", }, - "mode": "mode", + "mode": "vector", "ranker": { "impact_factor": 0, "type": "rrf", @@ -210,7 +210,7 @@ async def test_method_query_with_all_params(self, async_client: AsyncLlamaStackC "separator": "separator", "type": "default", }, - "mode": "mode", + "mode": "vector", "ranker": { "impact_factor": 0, "type": "rrf", diff --git a/tests/test_client.py b/tests/test_client.py index bc42682c..14889fae 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -431,7 +431,7 @@ def test_request_extra_query(self) -> None: def test_multipart_repeating_array(self, client: LlamaStackClient) -> None: request = client._build_request( FinalRequestOptions.construct( - method="get", + method="post", url="/foo", headers={"Content-Type": "multipart/form-data; boundary=6b7ba517decee4a450543ea6ae821c82"}, json_data={"array": ["foo", "bar"]}, @@ -1245,7 +1245,7 @@ def test_request_extra_query(self) -> None: def test_multipart_repeating_array(self, async_client: AsyncLlamaStackClient) -> None: request = async_client._build_request( FinalRequestOptions.construct( - method="get", + method="post", url="/foo", headers={"Content-Type": "multipart/form-data; boundary=6b7ba517decee4a450543ea6ae821c82"}, json_data={"array": ["foo", "bar"]}, diff --git a/tests/test_models.py b/tests/test_models.py index a27dfa46..c5135234 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -1,5 +1,5 @@ import json -from typing import Any, Dict, List, Union, Optional, cast +from typing import TYPE_CHECKING, Any, Dict, List, Union, Optional, cast from datetime import datetime, timezone from typing_extensions import Literal, Annotated, TypeAliasType @@ -889,3 +889,75 @@ class ModelB(BaseModel): ) assert isinstance(m, ModelB) + + +def test_nested_discriminated_union() -> None: + class InnerType1(BaseModel): + type: Literal["type_1"] + + class InnerModel(BaseModel): + inner_value: str + + class InnerType2(BaseModel): + type: Literal["type_2"] + some_inner_model: InnerModel + + class Type1(BaseModel): + base_type: Literal["base_type_1"] + value: Annotated[ + Union[ + InnerType1, + InnerType2, + ], + PropertyInfo(discriminator="type"), + ] + + class Type2(BaseModel): + base_type: Literal["base_type_2"] + + T = Annotated[ + Union[ + Type1, + Type2, + ], + PropertyInfo(discriminator="base_type"), + ] + + model = construct_type( + type_=T, + value={ + "base_type": "base_type_1", + "value": { + "type": "type_2", + }, + }, + ) + assert isinstance(model, Type1) + assert isinstance(model.value, InnerType2) + + +@pytest.mark.skipif(not PYDANTIC_V2, reason="this is only supported in pydantic v2 for now") +def test_extra_properties() -> None: + class Item(BaseModel): + prop: int + + class Model(BaseModel): + __pydantic_extra__: Dict[str, Item] = Field(init=False) # pyright: ignore[reportIncompatibleVariableOverride] + + other: str + + if TYPE_CHECKING: + + def __getattr__(self, attr: str) -> Item: ... + + model = construct_type( + type_=Model, + value={ + "a": {"prop": 1}, + "other": "foo", + }, + ) + assert isinstance(model, Model) + assert model.a.prop == 1 + assert isinstance(model.a, Item) + assert model.other == "foo"