From dddabfc44fa4e55f1c37747bec424a302bed3543 Mon Sep 17 00:00:00 2001 From: Bruno Perez Date: Tue, 2 Jun 2026 20:06:15 +0200 Subject: [PATCH 1/2] feat: ship the catalog as a typed npm package Adds a new `modelparams` npm workspace at packages/modelparams that generates per-model TypeScript types from the YAML catalog. Builders get autocomplete on every supported parameter and compile errors on typos or unsupported settings. The codegen reads the catalog through the existing Zod schema so the package and the website always agree on shape. A new release workflow auto-publishes on catalog change with OIDC provenance. Removed parameters bump major, anything else bumps patch, reusing the same diff classifier param-guard.yml already runs on PRs. Homepage gets an `npm i modelparams` hero CTA. --- .github/workflows/ci.yml | 39 + .github/workflows/release-modelparams.yml | 137 + .gitignore | 2 + package-lock.json | 839 + package.json | 3 + packages/modelparams/LICENSE | 21 + packages/modelparams/README.md | 134 + packages/modelparams/package.json | 76 + packages/modelparams/scripts/codegen.ts | 134 + .../modelparams/scripts/compute-version.ts | 83 + packages/modelparams/scripts/lib/version.ts | 53 + packages/modelparams/src/generated/data.ts | 13155 ++++++++++++++++ .../modelparams/src/generated/defaults.ts | 1089 ++ packages/modelparams/src/generated/index.ts | 7 + .../modelparams/src/generated/model-ids.ts | 199 + .../modelparams/src/generated/params-by-id.ts | 1333 ++ packages/modelparams/src/helpers.ts | 63 + packages/modelparams/src/index.ts | 10 + packages/modelparams/src/types.ts | 25 + packages/modelparams/test-d/types.test-d.ts | 26 + packages/modelparams/tests/runtime.test.ts | 114 + packages/modelparams/tests/version.test.ts | 126 + packages/modelparams/tsconfig.build.json | 6 + packages/modelparams/tsconfig.json | 14 + packages/modelparams/vitest.config.ts | 10 + src/data/check-removals.ts | 45 +- src/data/git-baseline.ts | 50 + src/views/index.ejs | 24 + 28 files changed, 17773 insertions(+), 44 deletions(-) create mode 100644 .github/workflows/release-modelparams.yml create mode 100644 packages/modelparams/LICENSE create mode 100644 packages/modelparams/README.md create mode 100644 packages/modelparams/package.json create mode 100644 packages/modelparams/scripts/codegen.ts create mode 100644 packages/modelparams/scripts/compute-version.ts create mode 100644 packages/modelparams/scripts/lib/version.ts create mode 100644 packages/modelparams/src/generated/data.ts create mode 100644 packages/modelparams/src/generated/defaults.ts create mode 100644 packages/modelparams/src/generated/index.ts create mode 100644 packages/modelparams/src/generated/model-ids.ts create mode 100644 packages/modelparams/src/generated/params-by-id.ts create mode 100644 packages/modelparams/src/helpers.ts create mode 100644 packages/modelparams/src/index.ts create mode 100644 packages/modelparams/src/types.ts create mode 100644 packages/modelparams/test-d/types.test-d.ts create mode 100644 packages/modelparams/tests/runtime.test.ts create mode 100644 packages/modelparams/tests/version.test.ts create mode 100644 packages/modelparams/tsconfig.build.json create mode 100644 packages/modelparams/tsconfig.json create mode 100644 packages/modelparams/vitest.config.ts create mode 100644 src/data/git-baseline.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a9fd555..39007d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,3 +43,42 @@ jobs: name: dist path: dist/ retention-days: 7 + + modelparams-pkg: + name: modelparams package (codegen + build + tests) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Codegen + run: npm run codegen --workspace=modelparams + + - name: Verify generated files are in sync + run: | + if ! git diff --quiet -- packages/modelparams/src/generated; then + echo "::error::Generated files in packages/modelparams/src/generated are out of date." + echo "Run \`npm run codegen --workspace=modelparams\` locally and commit the result." + git diff --stat -- packages/modelparams/src/generated + exit 1 + fi + + - name: Typecheck package + run: npm run typecheck --workspace=modelparams + + - name: Build package + run: npm run build --workspace=modelparams + + - name: Runtime tests + run: npm test --workspace=modelparams + + - name: Type-level tests (tsd) + run: npm run test:types --workspace=modelparams diff --git a/.github/workflows/release-modelparams.yml b/.github/workflows/release-modelparams.yml new file mode 100644 index 0000000..fdeb19c --- /dev/null +++ b/.github/workflows/release-modelparams.yml @@ -0,0 +1,137 @@ +name: Release modelparams + +# Publishes the `modelparams` npm package when the catalog or codegen pipeline +# changes on main. Versioning is driven by the same diff classifier +# (`findRemovedParams`) that `param-guard.yml` uses on PRs: +# • any param removed on a still-existing model → MAJOR +# • any other catalog change → PATCH +# • no semantic catalog change → skipped +# +# Provenance: signed via npm OIDC. Configure a trusted publisher for the +# `modelparams` package on npmjs.com (Settings → Trusted Publishers → GitHub +# Actions → org=mnfst, repo=modelparams.dev, workflow=release-modelparams.yml). +# Once configured, `NPM_TOKEN` is no longer needed. + +on: + push: + branches: [main] + paths: + - "models/**" + - "packages/modelparams/**" + - "src/schema/model.ts" + - "src/data/load.ts" + - "src/data/removals.ts" + - "src/data/git-baseline.ts" + - ".github/workflows/release-modelparams.yml" + workflow_dispatch: + inputs: + force_level: + description: "Force bump level (overrides auto-detect)" + required: false + type: choice + options: ["", "patch", "major"] + default: "" + +concurrency: + group: release-modelparams + cancel-in-progress: false + +jobs: + publish: + name: Build and publish + runs-on: ubuntu-latest + permissions: + contents: write # tag + auto-bump commit + id-token: write # npm OIDC provenance + steps: + - name: Check out repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 # full history for diff-based version bump + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + registry-url: "https://registry.npmjs.org" + + - name: Install dependencies + run: npm ci + + - name: Validate catalog + run: npm run validate + + - name: Typecheck (root) + run: npm run typecheck + + - name: Codegen + run: npm run codegen --workspace=modelparams + + - name: Build package + run: npm run build --workspace=modelparams + + - name: Runtime tests + run: npm test --workspace=modelparams + + - name: Type-level tests (tsd) + run: npm run test:types --workspace=modelparams + + - name: Compute next version + id: bump + run: npx tsx packages/modelparams/scripts/compute-version.ts + env: + BASE_REF: "HEAD~1" + + - name: Apply forced level (workflow_dispatch) + if: github.event_name == 'workflow_dispatch' && inputs.force_level != '' + id: force + run: | + CURRENT=$(node -p "require('./packages/modelparams/package.json').version") + case "${{ inputs.force_level }}" in + major) NEXT=$(node -e "const [M]=process.argv[1].split('.');console.log(\`\${+M+1}.0.0\`)" "$CURRENT");; + patch) NEXT=$(node -e "const [M,m,p]=process.argv[1].split('.');console.log(\`\${M}.\${m}.\${+p+1}\`)" "$CURRENT");; + esac + echo "level=${{ inputs.force_level }}" >> "$GITHUB_OUTPUT" + echo "next=$NEXT" >> "$GITHUB_OUTPUT" + + - name: Resolve effective version + id: resolved + run: | + LEVEL="${{ steps.force.outputs.level || steps.bump.outputs.level }}" + NEXT="${{ steps.force.outputs.next || steps.bump.outputs.next }}" + echo "level=$LEVEL" >> "$GITHUB_OUTPUT" + echo "next=$NEXT" >> "$GITHUB_OUTPUT" + + - name: Skip publish (no semantic change) + if: steps.resolved.outputs.next == '' + run: echo "::notice::No semantic catalog change since HEAD~1 — nothing to publish." + + - name: Bump package.json + commit + tag + if: steps.resolved.outputs.next != '' + env: + NEXT: ${{ steps.resolved.outputs.next }} + run: | + cd packages/modelparams + npm version "$NEXT" --no-git-tag-version + cd ../.. + git config user.name "modelparams-bot" + git config user.email "bot@modelparams.dev" + git add packages/modelparams/package.json packages/modelparams/src/generated + git commit -m "release: modelparams@$NEXT" + git tag "modelparams@$NEXT" + git push origin HEAD:main --follow-tags + + - name: Publish to npm + if: steps.resolved.outputs.next != '' + run: npm publish --workspace=modelparams --provenance --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Create GitHub release + if: steps.resolved.outputs.next != '' + uses: softprops/action-gh-release@v2 + with: + tag_name: "modelparams@${{ steps.resolved.outputs.next }}" + name: "modelparams@${{ steps.resolved.outputs.next }}" + generate_release_notes: true diff --git a/.gitignore b/.gitignore index a74c524..fa02f28 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ node_modules/ /dist/ /build/ +packages/*/dist/ +packages/*/*.tsbuildinfo .cache/ *.log .DS_Store diff --git a/package-lock.json b/package-lock.json index 2abf59c..762f526 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "modelparams.dev", "version": "0.1.0", "license": "MIT", + "workspaces": [ + "packages/*" + ], "dependencies": { "ejs": "^3.1.10", "express": "^4.19.2", @@ -52,6 +55,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -1090,6 +1125,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@tsd/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-saiCxzHRhUrRxQV2JhH580aQUZiKQUXI38FcAcikcfOomAil4G4lxT0RfrrKywoAYP/rqAdYXYmNRLppcd+hQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17" + } + }, "node_modules/@types/body-parser": { "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", @@ -1118,6 +1163,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", @@ -1165,6 +1221,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -1172,6 +1235,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "20.19.41", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", @@ -1182,6 +1252,13 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/qs": { "version": "6.15.1", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", @@ -1690,6 +1767,16 @@ "node": ">=8" } }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -1928,6 +2015,16 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -1938,6 +2035,24 @@ "node": ">= 6" } }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001793", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", @@ -2199,6 +2314,43 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deep-eql": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", @@ -2359,6 +2511,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -2514,6 +2676,97 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-formatter-pretty": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", + "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "^7.2.13", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "eslint-rule-docs": "^1.1.5", + "log-symbols": "^4.0.0", + "plur": "^4.0.0", + "string-width": "^4.2.0", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-formatter-pretty/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-formatter-pretty/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-formatter-pretty/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-formatter-pretty/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-formatter-pretty/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-rule-docs": { + "version": "1.1.235", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", + "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -3174,6 +3427,16 @@ "dev": true, "license": "MIT" }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3208,6 +3471,19 @@ "node": ">= 0.4" } }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", @@ -3303,6 +3579,16 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3330,6 +3616,23 @@ "node": ">= 0.10" } }, + "node_modules/irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3415,6 +3718,16 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", @@ -3428,6 +3741,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3452,6 +3778,32 @@ "node": ">=10" } }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jiti": { "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", @@ -3488,6 +3840,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3512,6 +3871,16 @@ "json-buffer": "3.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3645,6 +4014,23 @@ "dev": true, "license": "MIT" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -3750,6 +4136,19 @@ "get-func-name": "^2.0.1" } }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -3760,6 +4159,19 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -3778,6 +4190,46 @@ "node": ">= 0.6" } }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -3886,6 +4338,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", @@ -3902,6 +4364,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/mlly": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", @@ -3922,6 +4399,10 @@ "dev": true, "license": "MIT" }, + "node_modules/modelparams": { + "resolved": "packages/modelparams", + "link": true + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -3982,6 +4463,22 @@ "dev": true, "license": "MIT" }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4141,6 +4638,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4154,6 +4661,25 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -4304,6 +4830,22 @@ "dev": true, "license": "MIT" }, + "node_modules/plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "irregular-plurals": "^3.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/postcss": { "version": "8.5.15", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", @@ -4580,6 +5122,16 @@ ], "license": "MIT" }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -4621,6 +5173,146 @@ "pify": "^2.3.0" } }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4634,6 +5326,20 @@ "node": ">=8.10.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/resolve": { "version": "1.22.12", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", @@ -5074,6 +5780,42 @@ "node": ">=0.10.0" } }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -5180,6 +5922,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5252,6 +6007,20 @@ "node": ">=8" } }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -5443,6 +6212,16 @@ "node": ">=0.6" } }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ts-api-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", @@ -5463,6 +6242,28 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/tsd": { + "version": "0.31.2", + "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.31.2.tgz", + "integrity": "sha512-VplBAQwvYrHzVihtzXiUVXu5bGcr7uH1juQZ1lmKgkuGNGT+FechUCqmx9/zk7wibcqR2xaNEwCkDyKh+VVZnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tsd/typescript": "~5.4.3", + "eslint-formatter-pretty": "^4.1.0", + "globby": "^11.0.1", + "jest-diff": "^29.0.3", + "meow": "^9.0.0", + "path-exists": "^4.0.0", + "read-pkg-up": "^7.0.0" + }, + "bin": { + "tsd": "dist/cli.js" + }, + "engines": { + "node": ">=14.16" + } + }, "node_modules/tsx": { "version": "4.22.3", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.3.tgz", @@ -6058,6 +6859,17 @@ "node": ">= 0.4.0" } }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -6326,6 +7138,13 @@ "dev": true, "license": "ISC" }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, "node_modules/yaml": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", @@ -6342,6 +7161,16 @@ "url": "https://github.com/sponsors/eemeli" } }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -6372,6 +7201,16 @@ "peerDependencies": { "zod": "^3.25.28 || ^4" } + }, + "packages/modelparams": { + "version": "0.0.0", + "license": "MIT", + "devDependencies": { + "tsd": "^0.31.0" + }, + "engines": { + "node": ">=18" + } } } } diff --git a/package.json b/package.json index ecc107b..282ef6c 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,9 @@ "type": "module", "private": true, "license": "MIT", + "workspaces": [ + "packages/*" + ], "repository": { "type": "git", "url": "git+https://github.com/mnfst/modelparams.dev.git" diff --git a/packages/modelparams/LICENSE b/packages/modelparams/LICENSE new file mode 100644 index 0000000..ca8c3f8 --- /dev/null +++ b/packages/modelparams/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 modelparams.dev contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/modelparams/README.md b/packages/modelparams/README.md new file mode 100644 index 0000000..78a299c --- /dev/null +++ b/packages/modelparams/README.md @@ -0,0 +1,134 @@ +# modelparams + +> **Typed LLM model parameters for TypeScript.** Generated from the open [modelparams.dev](https://modelparams.dev) catalog. + +```bash +npm install modelparams +``` + +Stop guessing which knobs each model accepts. Get autocomplete on every parameter, compile-time errors on typos and unsupported settings, and the catalog's defaults at runtime — for every provider in one tiny zero-dependency package. + +## Why + +You're calling `claude-opus-4-7` with `frequency_penalty` set. TypeScript doesn't tell you the param doesn't exist. The provider silently ignores it. Your evals drift. Multiply by every model in your router. + +`modelparams` makes the catalog of supported parameters a first-class TypeScript citizen, the same way `tokenlens` does for context windows and pricing. + +## Usage + +### Per-model parameter typing — the headline feature + +```ts +import type { ParamsOf } from "modelparams"; +import Anthropic from "@anthropic-ai/sdk"; + +const params: ParamsOf<"anthropic/claude-opus-4-7"> = { + max_tokens: 8192, + temperature: 0.7, + "thinking.type": "enabled", + "thinking.budget_tokens": 4096, + // frequency_penalty: 0.5, // ❌ TYPE ERROR — Anthropic doesn't expose this knob +}; + +await new Anthropic().messages.create({ + model: "claude-opus-4-7", + messages: [...], + ...params, +}); +``` + +Autocomplete on every key. Autocomplete on every enum value. A compile error on the typo before it ships. + +### Defaults at runtime + +```ts +import { getDefaults } from "modelparams"; + +const defaults = getDefaults("anthropic/claude-haiku-4-5-20251001"); +// { max_tokens: 4096, temperature: 1, top_p: 1, top_k: 0, "thinking.type": "disabled", ... } + +const params = { ...defaults, temperature: 0.2 }; +``` + +### Model picker UI + +```ts +import { listModels, getModel } from "modelparams"; + +for (const id of listModels({ provider: "anthropic" })) { + const m = getModel(id); + m.params.filter((p) => p.group === "sampling").forEach((p) => renderSlider(p)); +} +``` + +### Discover what a model supports + +```ts +import { getParam } from "modelparams"; + +const thinking = getParam("anthropic/claude-opus-4-7", "thinking.type"); +if (thinking?.type === "enum") { + console.log(thinking.values); // ["disabled", "enabled"] +} +``` + +## API + +### Types + +| Type | Description | +| -------------------- | ------------------------------------------------------------------------- | +| `ParamsOf` | Optional parameters for model `Id`. The headline type. | +| `StrictParamsOf` | Same shape, every field required. | +| `ModelId` | Union of all `"provider/model"` ids (including `-subscription` variants). | +| `Provider` | Union of provider slugs (`"anthropic"`, `"openai"`, …). | +| `ParamsById` | Mapped type: `{ [Id in ModelId]: ParamsByIdMap[Id] }`. | +| `CatalogEntry` | The full catalog object for one model. | + +### Functions + +| Function | Description | +| -------------------------- | ----------------------------------------------------------- | +| `getModel(id)` | The full catalog entry for a model id. | +| `getDefaults(id)` | The catalog-declared defaults. | +| `getParam(id, path)` | A single parameter's definition (range, enum values, etc.). | +| `listModels({ provider })` | List model ids, optionally filtered by provider. | +| `listAllModels()` | The full `CATALOG` array. | + +### Constants + +| Constant | Description | +| ----------- | -------------------------------------------------- | +| `MODEL_IDS` | Frozen tuple of every model id (drives `ModelId`). | +| `PROVIDERS` | Frozen tuple of provider slugs. | +| `CATALOG` | Frozen array of every catalog entry. | +| `BY_ID` | Frozen `Record` lookup. | +| `DEFAULTS` | Frozen per-model defaults. | + +### Subpath imports (tree-shaking) + +```ts +import { MODEL_IDS } from "modelparams/model-ids"; // types-only consumers +import { DEFAULTS } from "modelparams/defaults"; // just defaults +import { CATALOG } from "modelparams/data"; // full runtime catalog +``` + +## How it's built + +- Source of truth: the YAML catalog at [github.com/mnfst/modelparams.dev/tree/main/models](https://github.com/mnfst/modelparams.dev/tree/main/models). +- A codegen script reads the catalog through the same Zod schema the website uses and emits four `.ts` files (`model-ids`, `params-by-id`, `defaults`, `data`). +- Every catalog change on `main` auto-publishes a new version. Removed params bump major; everything else is patch. Provenance is signed via npm OIDC. + +## Versioning + +| Catalog change | npm bump | +| -------------------------------------------------------------- | --------- | +| Parameter removed from a still-existing model | **major** | +| Anything else (new model, new param, range or default changed) | **patch** | +| No semantic change | skipped | + +Pin `^x.y.z` to get non-breaking updates as new models and parameters land. + +## License + +MIT diff --git a/packages/modelparams/package.json b/packages/modelparams/package.json new file mode 100644 index 0000000..fceaaab --- /dev/null +++ b/packages/modelparams/package.json @@ -0,0 +1,76 @@ +{ + "name": "modelparams", + "version": "0.0.0", + "description": "TypeScript types and runtime data for LLM model parameters. Generated from the modelparams.dev open catalog.", + "keywords": [ + "llm", + "ai", + "openai", + "anthropic", + "claude", + "gpt", + "gemini", + "model-parameters", + "types", + "typescript", + "catalog" + ], + "license": "MIT", + "author": "modelparams.dev contributors", + "homepage": "https://modelparams.dev", + "repository": { + "type": "git", + "url": "git+https://github.com/mnfst/modelparams.dev.git", + "directory": "packages/modelparams" + }, + "bugs": { + "url": "https://github.com/mnfst/modelparams.dev/issues" + }, + "type": "module", + "sideEffects": false, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + }, + "./data": { + "types": "./dist/generated/data.d.ts", + "import": "./dist/generated/data.js" + }, + "./defaults": { + "types": "./dist/generated/defaults.d.ts", + "import": "./dist/generated/defaults.js" + }, + "./model-ids": { + "types": "./dist/generated/model-ids.d.ts", + "import": "./dist/generated/model-ids.js" + }, + "./package.json": "./package.json" + }, + "files": [ + "dist", + "README.md", + "LICENSE" + ], + "engines": { + "node": ">=18" + }, + "scripts": { + "codegen": "tsx scripts/codegen.ts", + "prebuild": "npm run codegen", + "build": "tsc -p tsconfig.build.json", + "typecheck": "tsc --noEmit", + "test": "vitest run", + "pretest:types": "npm run build", + "test:types": "tsd", + "prepublishOnly": "npm run build && npm run test && npm run test:types" + }, + "devDependencies": { + "tsd": "^0.31.0" + }, + "tsd": { + "directory": "test-d" + } +} diff --git a/packages/modelparams/scripts/codegen.ts b/packages/modelparams/scripts/codegen.ts new file mode 100644 index 0000000..3ae2ca9 --- /dev/null +++ b/packages/modelparams/scripts/codegen.ts @@ -0,0 +1,134 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { loadAllModels } from "../../../src/data/load.js"; +import { authSuffix, modelId, type Model, type Parameter } from "../../../src/schema/model.js"; + +const here = path.dirname(fileURLToPath(import.meta.url)); +const OUT_DIR = path.resolve(here, "..", "src", "generated"); + +const HEADER = + "// AUTO-GENERATED by packages/modelparams/scripts/codegen.ts. Do not edit by hand.\n" + + "// Source of truth: the YAML catalog under /models in modelparams.dev.\n\n"; + +function tsType(p: Parameter): string { + switch (p.type) { + case "boolean": + return "boolean"; + case "integer": + case "number": + return "number"; + case "string": + return "string"; + case "enum": + return p.values.map((v) => JSON.stringify(v)).join(" | "); + } +} + +function quoteKey(k: string): string { + return /^[A-Za-z_$][\w$]*$/.test(k) ? k : JSON.stringify(k); +} + +function emitParamsByIdEntry(m: Model): string { + const id = modelId(m); + const fields = m.params.map((p) => ` ${quoteKey(p.path)}: ${tsType(p)};`).join("\n"); + return ` ${JSON.stringify(id)}: {\n${fields}\n };`; +} + +function emitDefaultsEntry(m: Model): string { + const id = modelId(m); + const entries = m.params + .filter((p) => p.default !== undefined) + .map((p) => ` ${quoteKey(p.path)}: ${JSON.stringify(p.default)},`) + .join("\n"); + return entries.length > 0 + ? ` ${JSON.stringify(id)}: {\n${entries}\n },` + : ` ${JSON.stringify(id)}: {},`; +} + +async function main(): Promise { + const { models, issues } = await loadAllModels(); + + if (issues.length > 0) { + console.error(`Catalog has ${issues.length} validation issue(s); refusing to codegen:`); + for (const issue of issues) { + console.error(` ${issue.file}: ${issue.message}`); + } + process.exit(1); + } + + await fs.mkdir(OUT_DIR, { recursive: true }); + + const ids = models.map(modelId); + const providers = [...new Set(models.map((m) => m.provider))].sort(); + + // 1. model-ids.ts — ModelId union + Provider union + await fs.writeFile( + path.join(OUT_DIR, "model-ids.ts"), + HEADER + + `export const MODEL_IDS = ${JSON.stringify(ids, null, 2)} as const;\n\n` + + `export type ModelId = (typeof MODEL_IDS)[number];\n\n` + + `export const PROVIDERS = ${JSON.stringify(providers, null, 2)} as const;\n\n` + + `export type Provider = (typeof PROVIDERS)[number];\n`, + ); + + // 2. params-by-id.ts — full parameter shape per model id (the typing payload) + await fs.writeFile( + path.join(OUT_DIR, "params-by-id.ts"), + HEADER + + `/**\n` + + ` * Full parameter shape for each model id. The headline \`ParamsOf\` type in\n` + + ` * \`../types\` is \`Partial\` so consumers can set only the\n` + + ` * parameters they want to override.\n` + + ` */\n` + + `export type ParamsById = {\n${models.map(emitParamsByIdEntry).join("\n")}\n};\n`, + ); + + // 3. defaults.ts — per-model defaults from the catalog + await fs.writeFile( + path.join(OUT_DIR, "defaults.ts"), + HEADER + + `import type { ModelId } from "./model-ids.js";\n` + + `import type { ParamsById } from "./params-by-id.js";\n\n` + + `export const DEFAULTS = {\n${models.map(emitDefaultsEntry).join("\n")}\n} as const satisfies { [K in ModelId]: Partial };\n`, + ); + + // 4. data.ts — runtime catalog (full Model objects + BY_ID lookup) + await fs.writeFile( + path.join(OUT_DIR, "data.ts"), + HEADER + + `import type { ModelId } from "./model-ids.js";\n\n` + + `export const CATALOG = ${JSON.stringify(models, null, 2)} as const;\n\n` + + `export type CatalogEntry = (typeof CATALOG)[number];\n\n` + + `function authSuffix(authType: CatalogEntry["authType"]): "" | "-subscription" {\n` + + ` return authType === "api_key" ? "" : "-subscription";\n` + + `}\n\n` + + `export const BY_ID: Readonly> = Object.freeze(\n` + + ` Object.fromEntries(\n` + + ` CATALOG.map((m) => [\`\${m.provider}/\${m.model}\${authSuffix(m.authType)}\`, m]),\n` + + ` ),\n` + + `) as Readonly>;\n`, + ); + + // 5. index.ts — barrel for the generated dir + await fs.writeFile( + path.join(OUT_DIR, "index.ts"), + HEADER + + `export * from "./model-ids.js";\n` + + `export * from "./params-by-id.js";\n` + + `export * from "./defaults.js";\n` + + `export * from "./data.js";\n`, + ); + + // Reference authSuffix so its `import` isn't tree-shaken from the type-checker's view. + void authSuffix; + + console.log( + `codegen: wrote 5 files for ${models.length} models across ${providers.length} providers → ${path.relative(process.cwd(), OUT_DIR)}/`, + ); +} + +main().catch((err) => { + console.error("codegen crashed:", err); + process.exit(1); +}); diff --git a/packages/modelparams/scripts/compute-version.ts b/packages/modelparams/scripts/compute-version.ts new file mode 100644 index 0000000..c114357 --- /dev/null +++ b/packages/modelparams/scripts/compute-version.ts @@ -0,0 +1,83 @@ +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { loadAllModels } from "../../../src/data/load.js"; +import { loadModelsAtRef, refExists } from "../../../src/data/git-baseline.js"; +import { findRemovedParams } from "../../../src/data/removals.js"; +import { canonicalCatalog, decideBump, bumpVersion } from "./lib/version.js"; + +const here = path.dirname(fileURLToPath(import.meta.url)); +const PKG_DIR = path.resolve(here, ".."); + +function resolveBaseRef(): string | null { + const candidates = [ + process.env.BASE_REF, + process.env.GITHUB_BASE_REF ? `origin/${process.env.GITHUB_BASE_REF}` : undefined, + "HEAD~1", + "origin/main", + "main", + ]; + for (const ref of candidates) { + if (ref && refExists(ref)) return ref; + } + return null; +} + +function readPackageVersion(): string { + const pkg = JSON.parse(fs.readFileSync(path.join(PKG_DIR, "package.json"), "utf8")) as { + version: string; + }; + return pkg.version; +} + +function emit(name: string, value: string): void { + const target = process.env.GITHUB_OUTPUT; + const line = `${name}=${value}\n`; + if (target) { + fs.appendFileSync(target, line); + } + process.stdout.write(line); +} + +async function main(): Promise { + const { models: current, issues } = await loadAllModels(); + if (issues.length > 0) { + console.error(`Catalog has ${issues.length} validation issue(s); aborting:`); + for (const i of issues) console.error(` ${i.file}: ${i.message}`); + process.exit(1); + } + + const baseRef = resolveBaseRef(); + if (!baseRef) { + const next = bumpVersion(readPackageVersion(), "patch"); + console.error("No base ref available — treating as patch release."); + emit("level", "patch"); + emit("next", next); + return; + } + + const base = await loadModelsAtRef(baseRef); + const removals = findRemovedParams(base, current); + const level = decideBump({ + baseCanon: canonicalCatalog(base), + currentCanon: canonicalCatalog(current), + hasRemovals: removals.length > 0, + }); + + if (level === null) { + console.error(`No semantic catalog changes vs ${baseRef} — skipping publish.`); + emit("level", ""); + emit("next", ""); + return; + } + + const next = bumpVersion(readPackageVersion(), level); + console.error(`Catalog change vs ${baseRef}: bump ${level} → ${next}`); + emit("level", level); + emit("next", next); +} + +main().catch((err) => { + console.error("compute-version crashed:", err); + process.exit(1); +}); diff --git a/packages/modelparams/scripts/lib/version.ts b/packages/modelparams/scripts/lib/version.ts new file mode 100644 index 0000000..cf4b1b9 --- /dev/null +++ b/packages/modelparams/scripts/lib/version.ts @@ -0,0 +1,53 @@ +import { modelId, type Model } from "../../../../src/schema/model.js"; + +export type BumpLevel = "major" | "patch"; + +/** + * Canonicalize a catalog for value-equality comparison. We sort params by path + * and drop nothing — any meaningful catalog edit (added/removed param, changed + * range, new default, edited description) flips the canonical string. + */ +export function canonicalCatalog(models: Model[]): string { + const sorted = [...models] + .map((m) => ({ + id: modelId(m), + provider: m.provider, + model: m.model, + authType: m.authType, + params: [...m.params].sort((a, b) => a.path.localeCompare(b.path)), + })) + .sort((a, b) => a.id.localeCompare(b.id)); + return JSON.stringify(sorted); +} + +/** + * Decide whether a catalog change warrants a semver bump. + * + * - Any removed parameter (on a still-existing model) → major. + * - Any other catalog change → patch. + * - No semantic catalog change → null (skip publish). + * + * Adding/removing a whole model is *not* a major change here — that policy + * matches `findRemovedParams`, which intentionally does not flag whole-model + * removals (consumers' configured-knob compatibility is the harm we guard + * against, and dropping a whole model removes the model itself, not a knob). + */ +export function decideBump(input: { + baseCanon: string; + currentCanon: string; + hasRemovals: boolean; +}): BumpLevel | null { + if (input.hasRemovals) return "major"; + if (input.baseCanon === input.currentCanon) return null; + return "patch"; +} + +export function bumpVersion(version: string, level: BumpLevel): string { + const m = /^(\d+)\.(\d+)\.(\d+)$/.exec(version); + if (!m) throw new Error(`unexpected version "${version}"`); + const major = Number(m[1]); + const minor = Number(m[2]); + const patch = Number(m[3]); + if (level === "major") return `${major + 1}.0.0`; + return `${major}.${minor}.${patch + 1}`; +} diff --git a/packages/modelparams/src/generated/data.ts b/packages/modelparams/src/generated/data.ts new file mode 100644 index 0000000..5ee171b --- /dev/null +++ b/packages/modelparams/src/generated/data.ts @@ -0,0 +1,13155 @@ +// AUTO-GENERATED by packages/modelparams/scripts/codegen.ts. Do not edit by hand. +// Source of truth: the YAML catalog under /models in modelparams.dev. + +import type { ModelId } from "./model-ids.js"; + +export const CATALOG = [ + { + provider: "alibaba", + authType: "api_key", + model: "qwen-flash", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "extra_body.top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + default: 20, + range: { + min: 1, + }, + }, + { + path: "extra_body.chat_template_kwargs.enable_thinking", + label: "Enable thinking", + description: + "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + group: "reasoning", + type: "boolean", + default: true, + }, + ], + }, + { + provider: "alibaba", + authType: "api_key", + model: "qwen-plus", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "extra_body.top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + default: 20, + range: { + min: 1, + }, + }, + { + path: "extra_body.chat_template_kwargs.enable_thinking", + label: "Enable thinking", + description: + "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + group: "reasoning", + type: "boolean", + default: true, + }, + ], + }, + { + provider: "alibaba", + authType: "api_key", + model: "qwen3-coder-flash", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "extra_body.top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + default: 20, + range: { + min: 1, + }, + }, + ], + }, + { + provider: "alibaba", + authType: "api_key", + model: "qwen3-coder-plus", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "extra_body.top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + default: 20, + range: { + min: 1, + }, + }, + ], + }, + { + provider: "alibaba", + authType: "api_key", + model: "qwen3-max", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "extra_body.top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + default: 20, + range: { + min: 1, + }, + }, + { + path: "extra_body.chat_template_kwargs.enable_thinking", + label: "Enable thinking", + description: + "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "alibaba", + authType: "api_key", + model: "qwen3.5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "extra_body.top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + default: 20, + range: { + min: 1, + }, + }, + { + path: "extra_body.chat_template_kwargs.enable_thinking", + label: "Enable thinking", + description: + "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + group: "reasoning", + type: "boolean", + default: true, + }, + ], + }, + { + provider: "alibaba", + authType: "api_key", + model: "qwen3.5-flash", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "extra_body.top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + default: 20, + range: { + min: 1, + }, + }, + { + path: "extra_body.chat_template_kwargs.enable_thinking", + label: "Enable thinking", + description: + "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + group: "reasoning", + type: "boolean", + default: true, + }, + ], + }, + { + provider: "alibaba", + authType: "api_key", + model: "qwq-plus", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "extra_body.top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + default: 20, + range: { + min: 1, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-3-5-haiku-20241022", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-3-5-haiku-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-3-5-sonnet-20241022", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-3-5-sonnet-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-3-7-sonnet-20250219", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-3-7-sonnet-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-3-opus-20240229", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-3-opus-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-haiku-4", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-haiku-4-5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-haiku-4-5-20251001", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-haiku-4-5-20251001", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-haiku-4-5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-haiku-4", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-opus-4-1-20250805", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-opus-4-1-20250805", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-opus-4-20250514", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-opus-4-20250514", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-opus-4-5-20251101", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-opus-4-5-20251101", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-opus-4-6", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled", "adaptive"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled", "adaptive"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled", "adaptive"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high", "max"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-opus-4-6", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled", "adaptive"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled", "adaptive"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled", "adaptive"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high", "max"], + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-opus-4-7", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive"], + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["adaptive"], + }, + }, + type: "enum", + default: "omitted", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high", "xhigh", "max"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-opus-4-7", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive"], + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["adaptive"], + }, + }, + type: "enum", + default: "omitted", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high", "xhigh", "max"], + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-opus-4-8", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive"], + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["adaptive"], + }, + }, + type: "enum", + default: "omitted", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high", "xhigh", "max"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-opus-4-8", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive"], + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["adaptive"], + }, + }, + type: "enum", + default: "omitted", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high", "xhigh", "max"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-opus-4", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-sonnet-4-20250514", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-sonnet-4-20250514", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-sonnet-4-5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-sonnet-4-5-20250929", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-sonnet-4-5-20250929", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-sonnet-4-5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "anthropic", + authType: "api_key", + model: "claude-sonnet-4-6", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled", "adaptive"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled", "adaptive"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled", "adaptive"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high", "max"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-sonnet-4-6", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled", "adaptive"], + }, + { + top_p: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["enabled", "adaptive"], + }, + { + temperature: { + not: null, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled", "adaptive"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + { + path: "thinking.display", + label: "Thinking display", + description: "Controls whether Anthropic returns summarized or omitted thinking content.", + group: "reasoning", + applicability: { + only: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "enum", + default: "summarized", + values: ["summarized", "omitted"], + }, + { + path: "output_config.effort", + label: "Effort", + description: "Controls Anthropic response thoroughness and token spend.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "medium", "high", "max"], + }, + ], + }, + { + provider: "anthropic", + authType: "subscription", + model: "claude-sonnet-4", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + applicability: { + except: [ + { + "thinking.type": ["adaptive", "enabled"], + }, + { + temperature: { + not: 1, + }, + }, + ], + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "top_k", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["adaptive", "enabled"], + }, + }, + type: "integer", + default: 0, + range: { + min: 0, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Controls the Anthropic thinking mode values supported by this model.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "adaptive", "enabled"], + }, + { + path: "thinking.budget_tokens", + label: "Budget tokens", + description: + "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + default: 4096, + range: { + min: 1024, + }, + }, + ], + }, + { + provider: "cohere", + authType: "api_key", + model: "command-a-03-2025", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop_sequences", + label: "Stop sequences", + description: + "Stops generation when one of these sequences is detected; up to five are allowed.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + step: 0.1, + }, + }, + { + path: "p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.75, + range: { + min: 0.01, + max: 0.99, + step: 0.01, + }, + }, + { + path: "k", + label: "Top K", + description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + group: "sampling", + type: "integer", + default: 0, + range: { + min: 0, + max: 500, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared to encourage a wider variety of content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "seed", + label: "Seed", + description: + "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON object output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "logprobs", + label: "Log probabilities", + description: + "Controls whether the response includes log probabilities for the generated tokens.", + group: "observability", + type: "boolean", + default: false, + }, + { + path: "tool_choice", + label: "Tool choice", + description: "Forces the model to either call a tool or skip tool calls for this request.", + group: "tooling", + type: "enum", + values: ["REQUIRED", "NONE"], + }, + { + path: "safety_mode", + label: "Safety mode", + description: "Controls Cohere's built-in safety instructions applied to the generation.", + group: "provider_metadata", + type: "enum", + default: "CONTEXTUAL", + values: ["CONTEXTUAL", "STRICT"], + }, + ], + }, + { + provider: "cohere", + authType: "api_key", + model: "command-a-plus-05-2026", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop_sequences", + label: "Stop sequences", + description: + "Stops generation when one of these sequences is detected; up to five are allowed.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + step: 0.1, + }, + }, + { + path: "p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.75, + range: { + min: 0.01, + max: 0.99, + step: 0.01, + }, + }, + { + path: "k", + label: "Top K", + description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + group: "sampling", + type: "integer", + default: 0, + range: { + min: 0, + max: 500, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared to encourage a wider variety of content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "seed", + label: "Seed", + description: + "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON object output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "logprobs", + label: "Log probabilities", + description: + "Controls whether the response includes log probabilities for the generated tokens.", + group: "observability", + type: "boolean", + default: false, + }, + { + path: "tool_choice", + label: "Tool choice", + description: "Forces the model to either call a tool or skip tool calls for this request.", + group: "tooling", + type: "enum", + values: ["REQUIRED", "NONE"], + }, + { + path: "safety_mode", + label: "Safety mode", + description: "Controls Cohere's built-in safety instructions applied to the generation.", + group: "provider_metadata", + type: "enum", + default: "CONTEXTUAL", + values: ["CONTEXTUAL", "STRICT"], + }, + ], + }, + { + provider: "cohere", + authType: "api_key", + model: "command-a-reasoning-08-2025", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop_sequences", + label: "Stop sequences", + description: + "Stops generation when one of these sequences is detected; up to five are allowed.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + step: 0.1, + }, + }, + { + path: "p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.75, + range: { + min: 0.01, + max: 0.99, + step: 0.01, + }, + }, + { + path: "k", + label: "Top K", + description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + group: "sampling", + type: "integer", + default: 0, + range: { + min: 0, + max: 500, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared to encourage a wider variety of content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "seed", + label: "Seed", + description: + "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + }, + { + path: "thinking.type", + label: "Thinking mode", + description: + "Controls whether the model reasons step by step before producing its final answer.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["enabled", "disabled"], + }, + { + path: "thinking.token_budget", + label: "Thinking token budget", + description: "Maximum number of tokens the model may spend on reasoning before answering.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "integer", + range: { + min: 1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON object output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "logprobs", + label: "Log probabilities", + description: + "Controls whether the response includes log probabilities for the generated tokens.", + group: "observability", + type: "boolean", + default: false, + }, + { + path: "tool_choice", + label: "Tool choice", + description: "Forces the model to either call a tool or skip tool calls for this request.", + group: "tooling", + type: "enum", + values: ["REQUIRED", "NONE"], + }, + { + path: "safety_mode", + label: "Safety mode", + description: "Controls Cohere's built-in safety instructions applied to the generation.", + group: "provider_metadata", + type: "enum", + default: "CONTEXTUAL", + values: ["CONTEXTUAL", "STRICT"], + }, + ], + }, + { + provider: "cohere", + authType: "api_key", + model: "command-a-translate-08-2025", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop_sequences", + label: "Stop sequences", + description: + "Stops generation when one of these sequences is detected; up to five are allowed.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + step: 0.1, + }, + }, + { + path: "p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.75, + range: { + min: 0.01, + max: 0.99, + step: 0.01, + }, + }, + { + path: "k", + label: "Top K", + description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + group: "sampling", + type: "integer", + default: 0, + range: { + min: 0, + max: 500, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared to encourage a wider variety of content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "seed", + label: "Seed", + description: + "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON object output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "logprobs", + label: "Log probabilities", + description: + "Controls whether the response includes log probabilities for the generated tokens.", + group: "observability", + type: "boolean", + default: false, + }, + { + path: "tool_choice", + label: "Tool choice", + description: "Forces the model to either call a tool or skip tool calls for this request.", + group: "tooling", + type: "enum", + values: ["REQUIRED", "NONE"], + }, + { + path: "safety_mode", + label: "Safety mode", + description: "Controls Cohere's built-in safety instructions applied to the generation.", + group: "provider_metadata", + type: "enum", + default: "CONTEXTUAL", + values: ["CONTEXTUAL", "STRICT"], + }, + ], + }, + { + provider: "cohere", + authType: "api_key", + model: "command-a-vision-07-2025", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop_sequences", + label: "Stop sequences", + description: + "Stops generation when one of these sequences is detected; up to five are allowed.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + step: 0.1, + }, + }, + { + path: "p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.75, + range: { + min: 0.01, + max: 0.99, + step: 0.01, + }, + }, + { + path: "k", + label: "Top K", + description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + group: "sampling", + type: "integer", + default: 0, + range: { + min: 0, + max: 500, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared to encourage a wider variety of content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "seed", + label: "Seed", + description: + "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON object output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "logprobs", + label: "Log probabilities", + description: + "Controls whether the response includes log probabilities for the generated tokens.", + group: "observability", + type: "boolean", + default: false, + }, + { + path: "tool_choice", + label: "Tool choice", + description: "Forces the model to either call a tool or skip tool calls for this request.", + group: "tooling", + type: "enum", + values: ["REQUIRED", "NONE"], + }, + { + path: "safety_mode", + label: "Safety mode", + description: "Controls Cohere's built-in safety instructions applied to the generation.", + group: "provider_metadata", + type: "enum", + default: "CONTEXTUAL", + values: ["CONTEXTUAL", "STRICT"], + }, + ], + }, + { + provider: "cohere", + authType: "api_key", + model: "command-r-08-2024", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop_sequences", + label: "Stop sequences", + description: + "Stops generation when one of these sequences is detected; up to five are allowed.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + step: 0.1, + }, + }, + { + path: "p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.75, + range: { + min: 0.01, + max: 0.99, + step: 0.01, + }, + }, + { + path: "k", + label: "Top K", + description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + group: "sampling", + type: "integer", + default: 0, + range: { + min: 0, + max: 500, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared to encourage a wider variety of content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "seed", + label: "Seed", + description: + "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON object output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "logprobs", + label: "Log probabilities", + description: + "Controls whether the response includes log probabilities for the generated tokens.", + group: "observability", + type: "boolean", + default: false, + }, + { + path: "safety_mode", + label: "Safety mode", + description: "Controls Cohere's built-in safety instructions applied to the generation.", + group: "provider_metadata", + type: "enum", + default: "CONTEXTUAL", + values: ["CONTEXTUAL", "STRICT", "OFF"], + }, + ], + }, + { + provider: "cohere", + authType: "api_key", + model: "command-r-plus-08-2024", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop_sequences", + label: "Stop sequences", + description: + "Stops generation when one of these sequences is detected; up to five are allowed.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + step: 0.1, + }, + }, + { + path: "p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.75, + range: { + min: 0.01, + max: 0.99, + step: 0.01, + }, + }, + { + path: "k", + label: "Top K", + description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + group: "sampling", + type: "integer", + default: 0, + range: { + min: 0, + max: 500, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared to encourage a wider variety of content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "seed", + label: "Seed", + description: + "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON object output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "logprobs", + label: "Log probabilities", + description: + "Controls whether the response includes log probabilities for the generated tokens.", + group: "observability", + type: "boolean", + default: false, + }, + { + path: "safety_mode", + label: "Safety mode", + description: "Controls Cohere's built-in safety instructions applied to the generation.", + group: "provider_metadata", + type: "enum", + default: "CONTEXTUAL", + values: ["CONTEXTUAL", "STRICT", "OFF"], + }, + ], + }, + { + provider: "cohere", + authType: "api_key", + model: "command-r7b-12-2024", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop_sequences", + label: "Stop sequences", + description: + "Stops generation when one of these sequences is detected; up to five are allowed.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + step: 0.1, + }, + }, + { + path: "p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.75, + range: { + min: 0.01, + max: 0.99, + step: 0.01, + }, + }, + { + path: "k", + label: "Top K", + description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + group: "sampling", + type: "integer", + default: 0, + range: { + min: 0, + max: 500, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared to encourage a wider variety of content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "seed", + label: "Seed", + description: + "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON object output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "logprobs", + label: "Log probabilities", + description: + "Controls whether the response includes log probabilities for the generated tokens.", + group: "observability", + type: "boolean", + default: false, + }, + { + path: "tool_choice", + label: "Tool choice", + description: "Forces the model to either call a tool or skip tool calls for this request.", + group: "tooling", + type: "enum", + values: ["REQUIRED", "NONE"], + }, + { + path: "safety_mode", + label: "Safety mode", + description: "Controls Cohere's built-in safety instructions applied to the generation.", + group: "provider_metadata", + type: "enum", + default: "CONTEXTUAL", + values: ["CONTEXTUAL", "STRICT"], + }, + ], + }, + { + provider: "deepseek", + authType: "api_key", + model: "deepseek-chat", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: + "Controls whether DeepSeek uses thinking mode before producing the final answer.", + group: "reasoning", + type: "enum", + default: "disabled", + values: ["disabled", "enabled"], + }, + ], + }, + { + provider: "deepseek", + authType: "api_key", + model: "deepseek-reasoner", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: + "Controls whether DeepSeek uses thinking mode before producing the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: "Controls DeepSeek thinking effort when thinking mode is enabled.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "enum", + default: "high", + values: ["high", "max"], + }, + ], + }, + { + provider: "deepseek", + authType: "api_key", + model: "deepseek-v4-flash", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: + "Controls whether DeepSeek uses thinking mode before producing the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: "Controls DeepSeek thinking effort when thinking mode is enabled.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "enum", + default: "high", + values: ["high", "max"], + }, + ], + }, + { + provider: "deepseek", + authType: "api_key", + model: "deepseek-v4-pro", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + group: "sampling", + applicability: { + except: { + "thinking.type": ["enabled"], + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: + "Controls whether DeepSeek uses thinking mode before producing the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: "Controls DeepSeek thinking effort when thinking mode is enabled.", + group: "reasoning", + applicability: { + only: { + "thinking.type": "enabled", + }, + }, + type: "enum", + default: "high", + values: ["high", "max"], + }, + ], + }, + { + provider: "google", + authType: "api_key", + model: "gemini-2.5-flash", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingBudget", + label: "Thinking budget", + description: + "Number of thinking tokens Gemini should use; 0 disables thinking and -1 uses dynamic thinking.", + group: "reasoning", + type: "integer", + default: -1, + range: { + min: -1, + max: 24576, + }, + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "api_key", + model: "gemini-2.5-flash-lite", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingBudget", + label: "Thinking budget", + description: + "Number of thinking tokens Gemini should use; -1 uses dynamic thinking, 0 disables thinking, and fixed budgets start at 512 tokens.", + group: "reasoning", + type: "integer", + default: 0, + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "subscription", + model: "gemini-2.5-flash-lite", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingBudget", + label: "Thinking budget", + description: + "Number of thinking tokens Gemini should use; -1 uses dynamic thinking, 0 disables thinking, and fixed budgets start at 512 tokens.", + group: "reasoning", + type: "integer", + default: 0, + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "subscription", + model: "gemini-2.5-flash", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingBudget", + label: "Thinking budget", + description: + "Number of thinking tokens Gemini should use; 0 disables thinking and -1 uses dynamic thinking.", + group: "reasoning", + type: "integer", + default: -1, + range: { + min: -1, + max: 24576, + }, + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "api_key", + model: "gemini-2.5-pro", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingBudget", + label: "Thinking budget", + description: + "Maximum number of thinking tokens Gemini should use before producing the final answer.", + group: "reasoning", + type: "integer", + range: { + min: 128, + max: 32768, + }, + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "subscription", + model: "gemini-2.5-pro", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingBudget", + label: "Thinking budget", + description: + "Maximum number of thinking tokens Gemini should use before producing the final answer.", + group: "reasoning", + type: "integer", + range: { + min: 128, + max: 32768, + }, + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "subscription", + model: "gemini-3-flash-preview", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingLevel", + label: "Thinking level", + description: "Controls Gemini 3 Flash reasoning effort.", + group: "reasoning", + type: "enum", + default: "high", + values: ["minimal", "low", "medium", "high"], + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "subscription", + model: "gemini-3.1-flash-lite-preview", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingLevel", + label: "Thinking level", + description: "Controls Gemini 3.1 Flash-Lite reasoning effort.", + group: "reasoning", + type: "enum", + default: "high", + values: ["minimal", "low", "medium", "high"], + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "subscription", + model: "gemini-3.1-flash-lite", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingLevel", + label: "Thinking level", + description: "Controls Gemini 3.1 Flash-Lite reasoning effort.", + group: "reasoning", + type: "enum", + default: "high", + values: ["minimal", "low", "medium", "high"], + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "subscription", + model: "gemini-3.1-pro-preview", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingLevel", + label: "Thinking level", + description: "Controls Gemini 3 Pro reasoning effort.", + group: "reasoning", + type: "enum", + default: "high", + values: ["low", "high"], + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "google", + authType: "api_key", + model: "gemini-3.5-flash", + params: [ + { + path: "generationConfig.maxOutputTokens", + label: "Max output tokens", + description: "Maximum number of tokens to include in a response candidate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 65536, + }, + }, + { + path: "generationConfig.temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "generationConfig.topP", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "generationConfig.topK", + label: "Top K", + description: "Limits token sampling to the top K most likely next tokens.", + group: "sampling", + type: "integer", + default: 64, + range: { + min: 0, + }, + }, + { + path: "generationConfig.seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "generationConfig.thinkingConfig.thinkingLevel", + label: "Thinking level", + description: "Controls Gemini 3.5 Flash reasoning effort.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high"], + }, + { + path: "generationConfig.thinkingConfig.includeThoughts", + label: "Include thoughts", + description: + "Controls whether Gemini returns available thought summaries in the response parts.", + group: "reasoning", + type: "boolean", + default: false, + }, + { + path: "generationConfig.responseMimeType", + label: "Response MIME type", + description: "MIME type for generated text candidates.", + group: "output_format", + type: "enum", + default: "text/plain", + values: ["text/plain", "application/json"], + }, + ], + }, + { + provider: "meta", + authType: "api_key", + model: "Llama-3.3-70B-Instruct", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + }, + { + path: "top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + }, + { + path: "repetition_penalty", + label: "Repetition penalty", + description: + "Penalizes tokens that have already appeared to reduce repetition in the output.", + group: "sampling", + type: "number", + }, + { + path: "response_format.type", + label: "Response format", + description: + "Controls whether the model returns normal text or a schema-constrained JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_schema"], + }, + { + path: "tool_choice", + label: "Tool choice", + description: + "Controls whether the model may call tools, must call one, or skips tool calls.", + group: "tooling", + type: "enum", + values: ["auto", "none", "required"], + }, + ], + }, + { + provider: "meta", + authType: "api_key", + model: "Llama-3.3-8B-Instruct", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + }, + { + path: "top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + }, + { + path: "repetition_penalty", + label: "Repetition penalty", + description: + "Penalizes tokens that have already appeared to reduce repetition in the output.", + group: "sampling", + type: "number", + }, + { + path: "response_format.type", + label: "Response format", + description: + "Controls whether the model returns normal text or a schema-constrained JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_schema"], + }, + { + path: "tool_choice", + label: "Tool choice", + description: + "Controls whether the model may call tools, must call one, or skips tool calls.", + group: "tooling", + type: "enum", + values: ["auto", "none", "required"], + }, + ], + }, + { + provider: "meta", + authType: "api_key", + model: "Llama-4-Maverick-17B-128E-Instruct-FP8", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + }, + { + path: "top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + }, + { + path: "repetition_penalty", + label: "Repetition penalty", + description: + "Penalizes tokens that have already appeared to reduce repetition in the output.", + group: "sampling", + type: "number", + }, + { + path: "response_format.type", + label: "Response format", + description: + "Controls whether the model returns normal text or a schema-constrained JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_schema"], + }, + { + path: "tool_choice", + label: "Tool choice", + description: + "Controls whether the model may call tools, must call one, or skips tool calls.", + group: "tooling", + type: "enum", + values: ["auto", "none", "required"], + }, + ], + }, + { + provider: "meta", + authType: "api_key", + model: "Llama-4-Scout-17B-16E-Instruct-FP8", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + }, + { + path: "top_k", + label: "Top K", + description: "Limits generation to the selected number of highest-probability tokens.", + group: "sampling", + type: "integer", + }, + { + path: "repetition_penalty", + label: "Repetition penalty", + description: + "Penalizes tokens that have already appeared to reduce repetition in the output.", + group: "sampling", + type: "number", + }, + { + path: "response_format.type", + label: "Response format", + description: + "Controls whether the model returns normal text or a schema-constrained JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_schema"], + }, + { + path: "tool_choice", + label: "Tool choice", + description: + "Controls whether the model may call tools, must call one, or skips tool calls.", + group: "tooling", + type: "enum", + values: ["auto", "none", "required"], + }, + ], + }, + { + provider: "minimax", + authType: "api_key", + model: "minimax-m2", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_split", + label: "Split reasoning", + description: + "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "minimax", + authType: "subscription", + model: "MiniMax-M2", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "minimax", + authType: "api_key", + model: "minimax-m2.1", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_split", + label: "Split reasoning", + description: + "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "minimax", + authType: "api_key", + model: "minimax-m2.1-highspeed", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_split", + label: "Split reasoning", + description: + "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "minimax", + authType: "subscription", + model: "MiniMax-M2.1-highspeed", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "minimax", + authType: "subscription", + model: "MiniMax-M2.1", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "minimax", + authType: "api_key", + model: "minimax-m2.5", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_split", + label: "Split reasoning", + description: + "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "minimax", + authType: "api_key", + model: "minimax-m2.5-highspeed", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_split", + label: "Split reasoning", + description: + "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "minimax", + authType: "subscription", + model: "MiniMax-M2.5-highspeed", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "minimax", + authType: "subscription", + model: "MiniMax-M2.5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "minimax", + authType: "api_key", + model: "minimax-m2.7", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_split", + label: "Split reasoning", + description: + "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "minimax", + authType: "api_key", + model: "minimax-m2.7-highspeed", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_split", + label: "Split reasoning", + description: + "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "minimax", + authType: "subscription", + model: "MiniMax-M2.7-highspeed", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "minimax", + authType: "subscription", + model: "MiniMax-M2.7", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "minimax", + authType: "api_key", + model: "minimax-m3", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_split", + label: "Split reasoning", + description: + "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + group: "reasoning", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "minimax", + authType: "subscription", + model: "MiniMax-M3", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "codestral-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "devstral-2512", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "devstral-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "magistral-medium-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "prompt_mode", + label: "Prompt mode", + description: + "Enables Mistral's reasoning system prompt; leave unset to disable the default reasoning behavior.", + group: "reasoning", + type: "enum", + values: ["reasoning"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "magistral-small-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "prompt_mode", + label: "Prompt mode", + description: + "Enables Mistral's reasoning system prompt; leave unset to disable the default reasoning behavior.", + group: "reasoning", + type: "enum", + values: ["reasoning"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "ministral-14b-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "ministral-3b-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "ministral-8b-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "mistral-large-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "mistral-medium-3.5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "mistral-medium-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "mistral-small-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "mistral", + authType: "api_key", + model: "open-mistral-nemo", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "stop", + label: "Stop sequence", + description: "Stops generation when this string is detected.", + group: "generation_length", + type: "string", + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1.5, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "random_seed", + label: "Random seed", + description: "Seed used for deterministic sampling when reproducible outputs are desired.", + group: "sampling", + type: "integer", + range: { + min: 0, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes words based on how often they already appear in the generated text.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Controls whether the model returns normal text or JSON mode output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + { + path: "safe_prompt", + label: "Safe prompt", + description: "Controls whether Mistral injects its safety prompt before the conversation.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "moonshot", + authType: "api_key", + model: "kimi-k2.5", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: + "Controls whether Kimi reasons step by step before answering, or responds directly when set to disabled.", + group: "reasoning", + type: "enum", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "moonshot", + authType: "api_key", + model: "kimi-k2.6", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: + "Controls whether Kimi reasons step by step before answering. Thinking is enabled by default; set disabled to respond directly.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "moonshot", + authType: "api_key", + model: "moonshot-v1-128k", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "n", + label: "Number of completions", + description: "How many chat completion choices to generate for the request.", + group: "generation_length", + type: "integer", + default: 1, + range: { + min: 1, + max: 5, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "moonshot", + authType: "api_key", + model: "moonshot-v1-32k", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "n", + label: "Number of completions", + description: "How many chat completion choices to generate for the request.", + group: "generation_length", + type: "integer", + default: 1, + range: { + min: 1, + max: 5, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "moonshot", + authType: "api_key", + model: "moonshot-v1-8k", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.3, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "n", + label: "Number of completions", + description: "How many chat completion choices to generate for the request.", + group: "generation_length", + type: "integer", + default: 1, + range: { + min: 1, + max: 5, + }, + }, + { + path: "presence_penalty", + label: "Presence penalty", + description: + "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "frequency_penalty", + label: "Frequency penalty", + description: + "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", + group: "sampling", + type: "number", + default: 0, + range: { + min: -2, + max: 2, + step: 0.1, + }, + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "chatgpt-4o-latest", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-3.5-turbo", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-4-turbo", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-4-turbo-2024-04-09", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-4.1", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-4.1-mini", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-4.1-nano", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-4o", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-4o-2024-11-20", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-4o-mini", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5-chat-latest", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5-mini", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5-nano", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.1", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "none", + values: ["none", "low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.1-codex-max", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.1-codex", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.2", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["none", "low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.2-codex", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.2", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.3-codex", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.3-codex-spark", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.3-codex", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.4", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["none", "low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.4-mini", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["none", "low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.4-mini", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.4-nano", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["none", "low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.4-pro", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.4-pro", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.4", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.5", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["none", "low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "gpt-5.5-pro", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.5-pro", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "subscription", + model: "gpt-5.5", + params: [ + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high", "xhigh"], + }, + { + path: "reasoning.summary", + label: "Reasoning summary", + description: "Controls the level of reasoning summary returned with the response.", + group: "reasoning", + type: "enum", + default: "auto", + values: ["auto", "concise", "detailed", "none"], + }, + { + path: "text.verbosity", + label: "Verbosity", + description: "Controls how concise or detailed the model's final text response should be.", + group: "output_format", + type: "enum", + default: "medium", + values: ["low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "o1", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "o1-mini", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "o1-preview", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 1, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["minimal", "low", "medium", "high"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "o3", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "o3-mini", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "o3-pro", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "openai", + authType: "api_key", + model: "o4-mini", + params: [ + { + path: "max_completion_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + default: 4096, + range: { + min: 16, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning the model should perform before producing an answer.", + group: "reasoning", + type: "enum", + default: "medium", + values: ["low", "medium", "high", "xhigh"], + }, + ], + }, + { + provider: "perplexity", + authType: "api_key", + model: "sonar", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 128000, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "search_mode", + label: "Search mode", + description: "Selects the corpus the model searches when grounding its answer.", + group: "provider_metadata", + type: "enum", + values: ["web", "academic", "sec"], + }, + { + path: "search_recency_filter", + label: "Search recency filter", + description: "Restricts web search results to a recent time window.", + group: "provider_metadata", + type: "enum", + values: ["hour", "day", "week", "month", "year"], + }, + { + path: "search_domain_filter", + label: "Search domain filter", + description: "Limits search to, or excludes, specific domains.", + group: "provider_metadata", + type: "string", + }, + { + path: "search_after_date_filter", + label: "Search after date", + description: "Restricts search results to content published after this date (MM/DD/YYYY).", + group: "provider_metadata", + type: "string", + }, + { + path: "search_before_date_filter", + label: "Search before date", + description: "Restricts search results to content published before this date (MM/DD/YYYY).", + group: "provider_metadata", + type: "string", + }, + { + path: "web_search_options.search_context_size", + label: "Search context size", + description: + "Controls how much web search context is retrieved before generating the answer.", + group: "provider_metadata", + type: "enum", + default: "low", + values: ["low", "medium", "high"], + }, + { + path: "return_images", + label: "Return images", + description: "Controls whether the response may include related images from the search.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + { + path: "return_related_questions", + label: "Return related questions", + description: "Controls whether the response includes suggested follow-up questions.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + { + path: "disable_search", + label: "Disable search", + description: "Turns off web search so the model answers from its own knowledge only.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "perplexity", + authType: "api_key", + model: "sonar-deep-research", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 128000, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning and searching the model performs before producing the report.", + group: "reasoning", + type: "enum", + values: ["minimal", "low", "medium", "high"], + }, + { + path: "search_mode", + label: "Search mode", + description: "Selects the corpus the model searches when grounding its answer.", + group: "provider_metadata", + type: "enum", + values: ["web", "academic", "sec"], + }, + { + path: "search_recency_filter", + label: "Search recency filter", + description: "Restricts web search results to a recent time window.", + group: "provider_metadata", + type: "enum", + values: ["hour", "day", "week", "month", "year"], + }, + { + path: "search_domain_filter", + label: "Search domain filter", + description: "Limits search to, or excludes, specific domains.", + group: "provider_metadata", + type: "string", + }, + { + path: "search_after_date_filter", + label: "Search after date", + description: "Restricts search results to content published after this date (MM/DD/YYYY).", + group: "provider_metadata", + type: "string", + }, + { + path: "search_before_date_filter", + label: "Search before date", + description: "Restricts search results to content published before this date (MM/DD/YYYY).", + group: "provider_metadata", + type: "string", + }, + { + path: "web_search_options.search_context_size", + label: "Search context size", + description: + "Controls how much web search context is retrieved before generating the answer.", + group: "provider_metadata", + type: "enum", + default: "low", + values: ["low", "medium", "high"], + }, + { + path: "return_images", + label: "Return images", + description: "Controls whether the response may include related images from the search.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + { + path: "return_related_questions", + label: "Return related questions", + description: "Controls whether the response includes suggested follow-up questions.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "perplexity", + authType: "api_key", + model: "sonar-pro", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 128000, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "search_mode", + label: "Search mode", + description: "Selects the corpus the model searches when grounding its answer.", + group: "provider_metadata", + type: "enum", + values: ["web", "academic", "sec"], + }, + { + path: "search_recency_filter", + label: "Search recency filter", + description: "Restricts web search results to a recent time window.", + group: "provider_metadata", + type: "enum", + values: ["hour", "day", "week", "month", "year"], + }, + { + path: "search_domain_filter", + label: "Search domain filter", + description: "Limits search to, or excludes, specific domains.", + group: "provider_metadata", + type: "string", + }, + { + path: "search_after_date_filter", + label: "Search after date", + description: "Restricts search results to content published after this date (MM/DD/YYYY).", + group: "provider_metadata", + type: "string", + }, + { + path: "search_before_date_filter", + label: "Search before date", + description: "Restricts search results to content published before this date (MM/DD/YYYY).", + group: "provider_metadata", + type: "string", + }, + { + path: "web_search_options.search_context_size", + label: "Search context size", + description: + "Controls how much web search context is retrieved before generating the answer.", + group: "provider_metadata", + type: "enum", + default: "low", + values: ["low", "medium", "high"], + }, + { + path: "return_images", + label: "Return images", + description: "Controls whether the response may include related images from the search.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + { + path: "return_related_questions", + label: "Return related questions", + description: "Controls whether the response includes suggested follow-up questions.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + { + path: "disable_search", + label: "Disable search", + description: "Turns off web search so the model answers from its own knowledge only.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "perplexity", + authType: "api_key", + model: "sonar-reasoning-pro", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of output tokens the model may generate.", + group: "generation_length", + type: "integer", + range: { + min: 1, + max: 128000, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "search_mode", + label: "Search mode", + description: "Selects the corpus the model searches when grounding its answer.", + group: "provider_metadata", + type: "enum", + values: ["web", "academic", "sec"], + }, + { + path: "search_recency_filter", + label: "Search recency filter", + description: "Restricts web search results to a recent time window.", + group: "provider_metadata", + type: "enum", + values: ["hour", "day", "week", "month", "year"], + }, + { + path: "search_domain_filter", + label: "Search domain filter", + description: "Limits search to, or excludes, specific domains.", + group: "provider_metadata", + type: "string", + }, + { + path: "search_after_date_filter", + label: "Search after date", + description: "Restricts search results to content published after this date (MM/DD/YYYY).", + group: "provider_metadata", + type: "string", + }, + { + path: "search_before_date_filter", + label: "Search before date", + description: "Restricts search results to content published before this date (MM/DD/YYYY).", + group: "provider_metadata", + type: "string", + }, + { + path: "web_search_options.search_context_size", + label: "Search context size", + description: + "Controls how much web search context is retrieved before generating the answer.", + group: "provider_metadata", + type: "enum", + default: "low", + values: ["low", "medium", "high"], + }, + { + path: "return_images", + label: "Return images", + description: "Controls whether the response may include related images from the search.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + { + path: "return_related_questions", + label: "Return related questions", + description: "Controls whether the response includes suggested follow-up questions.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + { + path: "disable_search", + label: "Disable search", + description: "Turns off web search so the model answers from its own knowledge only.", + group: "provider_metadata", + type: "boolean", + default: false, + }, + ], + }, + { + provider: "xai", + authType: "api_key", + model: "grok-4.20-0309-non-reasoning", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Upper bound for visible output tokens generated in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "stop", + label: "Stop sequence", + description: + "Stops generation when this sequence is produced. xAI accepts up to four stop sequences.", + group: "generation_length", + type: "string", + }, + { + path: "response_format.type", + label: "Response format", + description: + "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object", "json_schema"], + }, + ], + }, + { + provider: "xai", + authType: "api_key", + model: "grok-4.20-0309-reasoning", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Upper bound for visible output tokens generated in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: + "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object", "json_schema"], + }, + ], + }, + { + provider: "xai", + authType: "api_key", + model: "grok-4.20-multi-agent-0309", + params: [ + { + path: "max_output_tokens", + label: "Max output tokens", + description: "Upper bound for output tokens generated in the Responses API response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 0.7, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 0.95, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "reasoning.effort", + label: "Reasoning effort", + description: + "Controls whether the Responses API request uses the 4-agent or 16-agent multi-agent setup.", + group: "reasoning", + type: "enum", + values: ["low", "medium", "high", "xhigh"], + }, + { + path: "text.format.type", + label: "Text format", + description: + "Controls whether the Responses API returns free-form text, JSON mode output, or structured JSON schema output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object", "json_schema"], + }, + ], + }, + { + provider: "xai", + authType: "api_key", + model: "grok-4.3", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Upper bound for visible output tokens generated in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "reasoning_effort", + label: "Reasoning effort", + description: + "Controls how much reasoning Grok performs before responding. Set to none for non-reasoning requests.", + group: "reasoning", + type: "enum", + default: "low", + values: ["none", "low", "medium", "high"], + }, + { + path: "response_format.type", + label: "Response format", + description: + "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object", "json_schema"], + }, + ], + }, + { + provider: "xai", + authType: "api_key", + model: "grok-build-0.1", + params: [ + { + path: "max_completion_tokens", + label: "Max completion tokens", + description: "Upper bound for visible output tokens generated in the chat completion.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 2, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.01, + }, + }, + { + path: "seed", + label: "Seed", + description: "Optional seed used for decoding when reproducible sampling is desired.", + group: "sampling", + type: "integer", + }, + { + path: "response_format.type", + label: "Response format", + description: + "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object", "json_schema"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.6, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.5-air", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.6, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "subscription", + model: "glm-4.5-air", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.6, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.5-airx", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.6, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.5-flash", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.6, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "subscription", + model: "glm-4.5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.6, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.5-x", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.6, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.6", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "subscription", + model: "glm-4.6", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.7", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.7-flash", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-4.7-flashx", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "subscription", + model: "glm-4.7", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "subscription", + model: "glm-5", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-5-turbo", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "subscription", + model: "glm-5-turbo", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "api_key", + model: "glm-5.1", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, + { + provider: "z-ai", + authType: "subscription", + model: "glm-5.1", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Maximum number of tokens to generate in the response.", + group: "generation_length", + type: "integer", + range: { + min: 1, + }, + }, + { + path: "temperature", + label: "Temperature", + description: + "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 1, + range: { + min: 0, + max: 1, + step: 0.1, + }, + }, + { + path: "top_p", + label: "Top P", + description: + "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + group: "sampling", + applicability: { + except: { + do_sample: false, + }, + }, + type: "number", + default: 0.95, + range: { + min: 0.01, + max: 1, + step: 0.01, + }, + }, + { + path: "do_sample", + label: "Do sample", + description: + "When false, the model uses greedy decoding and ignores temperature and top_p.", + group: "sampling", + type: "boolean", + default: true, + }, + { + path: "thinking.type", + label: "Thinking mode", + description: "Toggles the model's extended reasoning before it produces the final answer.", + group: "reasoning", + type: "enum", + default: "enabled", + values: ["enabled", "disabled"], + }, + { + path: "response_format.type", + label: "Response format", + description: "Forces the response into plain text or a JSON object.", + group: "output_format", + type: "enum", + default: "text", + values: ["text", "json_object"], + }, + ], + }, +] as const; + +export type CatalogEntry = (typeof CATALOG)[number]; + +function authSuffix(authType: CatalogEntry["authType"]): "" | "-subscription" { + return authType === "api_key" ? "" : "-subscription"; +} + +export const BY_ID: Readonly> = Object.freeze( + Object.fromEntries(CATALOG.map((m) => [`${m.provider}/${m.model}${authSuffix(m.authType)}`, m])), +) as Readonly>; diff --git a/packages/modelparams/src/generated/defaults.ts b/packages/modelparams/src/generated/defaults.ts new file mode 100644 index 0000000..a03ce9c --- /dev/null +++ b/packages/modelparams/src/generated/defaults.ts @@ -0,0 +1,1089 @@ +// AUTO-GENERATED by packages/modelparams/scripts/codegen.ts. Do not edit by hand. +// Source of truth: the YAML catalog under /models in modelparams.dev. + +import type { ModelId } from "./model-ids.js"; +import type { ParamsById } from "./params-by-id.js"; + +export const DEFAULTS = { + "alibaba/qwen-flash": { + "extra_body.top_k": 20, + "extra_body.chat_template_kwargs.enable_thinking": true, + }, + "alibaba/qwen-plus": { + "extra_body.top_k": 20, + "extra_body.chat_template_kwargs.enable_thinking": true, + }, + "alibaba/qwen3-coder-flash": { + "extra_body.top_k": 20, + }, + "alibaba/qwen3-coder-plus": { + "extra_body.top_k": 20, + }, + "alibaba/qwen3-max": { + "extra_body.top_k": 20, + "extra_body.chat_template_kwargs.enable_thinking": false, + }, + "alibaba/qwen3.5": { + "extra_body.top_k": 20, + "extra_body.chat_template_kwargs.enable_thinking": true, + }, + "alibaba/qwen3.5-flash": { + "extra_body.top_k": 20, + "extra_body.chat_template_kwargs.enable_thinking": true, + }, + "alibaba/qwq-plus": { + "extra_body.top_k": 20, + }, + "anthropic/claude-3-5-haiku-20241022": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + }, + "anthropic/claude-3-5-haiku-latest": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + }, + "anthropic/claude-3-5-sonnet-20241022": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + }, + "anthropic/claude-3-5-sonnet-latest": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + }, + "anthropic/claude-3-7-sonnet-20250219": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-3-7-sonnet-latest": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-3-opus-20240229": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + }, + "anthropic/claude-3-opus-latest": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + }, + "anthropic/claude-haiku-4": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-haiku-4-5": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-haiku-4-5-20251001": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-haiku-4-5-20251001-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-haiku-4-5-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-haiku-4-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-opus-4-1-20250805": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + }, + "anthropic/claude-opus-4-1-20250805-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + }, + "anthropic/claude-opus-4-20250514": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + }, + "anthropic/claude-opus-4-20250514-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + }, + "anthropic/claude-opus-4-5-20251101": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + "output_config.effort": "high", + }, + "anthropic/claude-opus-4-5-20251101-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + "output_config.effort": "high", + }, + "anthropic/claude-opus-4-6": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + "output_config.effort": "high", + }, + "anthropic/claude-opus-4-6-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + "output_config.effort": "high", + }, + "anthropic/claude-opus-4-7": { + max_tokens: 4096, + "thinking.type": "disabled", + "thinking.display": "omitted", + "output_config.effort": "high", + }, + "anthropic/claude-opus-4-7-subscription": { + max_tokens: 4096, + "thinking.type": "disabled", + "thinking.display": "omitted", + "output_config.effort": "high", + }, + "anthropic/claude-opus-4-8": { + max_tokens: 4096, + "thinking.type": "disabled", + "thinking.display": "omitted", + "output_config.effort": "high", + }, + "anthropic/claude-opus-4-8-subscription": { + max_tokens: 4096, + "thinking.type": "disabled", + "thinking.display": "omitted", + "output_config.effort": "high", + }, + "anthropic/claude-opus-4-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-sonnet-4-20250514": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + }, + "anthropic/claude-sonnet-4-20250514-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + }, + "anthropic/claude-sonnet-4-5": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-sonnet-4-5-20250929": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-sonnet-4-5-20250929-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-sonnet-4-5-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "anthropic/claude-sonnet-4-6": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + "output_config.effort": "high", + }, + "anthropic/claude-sonnet-4-6-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + "thinking.display": "summarized", + "output_config.effort": "high", + }, + "anthropic/claude-sonnet-4-subscription": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + top_k: 0, + "thinking.type": "disabled", + "thinking.budget_tokens": 4096, + }, + "cohere/command-a-03-2025": { + temperature: 0.3, + p: 0.75, + k: 0, + frequency_penalty: 0, + presence_penalty: 0, + "response_format.type": "text", + logprobs: false, + safety_mode: "CONTEXTUAL", + }, + "cohere/command-a-plus-05-2026": { + temperature: 0.3, + p: 0.75, + k: 0, + frequency_penalty: 0, + presence_penalty: 0, + "response_format.type": "text", + logprobs: false, + safety_mode: "CONTEXTUAL", + }, + "cohere/command-a-reasoning-08-2025": { + temperature: 0.3, + p: 0.75, + k: 0, + frequency_penalty: 0, + presence_penalty: 0, + "thinking.type": "disabled", + "response_format.type": "text", + logprobs: false, + safety_mode: "CONTEXTUAL", + }, + "cohere/command-a-translate-08-2025": { + temperature: 0.3, + p: 0.75, + k: 0, + frequency_penalty: 0, + presence_penalty: 0, + "response_format.type": "text", + logprobs: false, + safety_mode: "CONTEXTUAL", + }, + "cohere/command-a-vision-07-2025": { + temperature: 0.3, + p: 0.75, + k: 0, + frequency_penalty: 0, + presence_penalty: 0, + "response_format.type": "text", + logprobs: false, + safety_mode: "CONTEXTUAL", + }, + "cohere/command-r-08-2024": { + temperature: 0.3, + p: 0.75, + k: 0, + frequency_penalty: 0, + presence_penalty: 0, + "response_format.type": "text", + logprobs: false, + safety_mode: "CONTEXTUAL", + }, + "cohere/command-r-plus-08-2024": { + temperature: 0.3, + p: 0.75, + k: 0, + frequency_penalty: 0, + presence_penalty: 0, + "response_format.type": "text", + logprobs: false, + safety_mode: "CONTEXTUAL", + }, + "cohere/command-r7b-12-2024": { + temperature: 0.3, + p: 0.75, + k: 0, + frequency_penalty: 0, + presence_penalty: 0, + "response_format.type": "text", + logprobs: false, + safety_mode: "CONTEXTUAL", + }, + "deepseek/deepseek-chat": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + "thinking.type": "disabled", + }, + "deepseek/deepseek-reasoner": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + "thinking.type": "enabled", + reasoning_effort: "high", + }, + "deepseek/deepseek-v4-flash": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + "thinking.type": "enabled", + reasoning_effort: "high", + }, + "deepseek/deepseek-v4-pro": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + "thinking.type": "enabled", + reasoning_effort: "high", + }, + "google/gemini-2.5-flash": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingBudget": -1, + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-2.5-flash-lite": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingBudget": 0, + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-2.5-flash-lite-subscription": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingBudget": 0, + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-2.5-flash-subscription": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingBudget": -1, + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-2.5-pro": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-2.5-pro-subscription": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-3-flash-preview-subscription": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingLevel": "high", + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-3.1-flash-lite-preview-subscription": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingLevel": "high", + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-3.1-flash-lite-subscription": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingLevel": "high", + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-3.1-pro-preview-subscription": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingLevel": "high", + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "google/gemini-3.5-flash": { + "generationConfig.temperature": 1, + "generationConfig.topP": 0.95, + "generationConfig.topK": 64, + "generationConfig.thinkingConfig.thinkingLevel": "medium", + "generationConfig.thinkingConfig.includeThoughts": false, + "generationConfig.responseMimeType": "text/plain", + }, + "meta/Llama-3.3-70B-Instruct": { + "response_format.type": "text", + }, + "meta/Llama-3.3-8B-Instruct": { + "response_format.type": "text", + }, + "meta/Llama-4-Maverick-17B-128E-Instruct-FP8": { + "response_format.type": "text", + }, + "meta/Llama-4-Scout-17B-16E-Instruct-FP8": { + "response_format.type": "text", + }, + "minimax/minimax-m2": { + temperature: 1, + top_p: 0.95, + reasoning_split: false, + }, + "minimax/MiniMax-M2-subscription": { + temperature: 1, + top_p: 0.95, + }, + "minimax/minimax-m2.1": { + temperature: 1, + top_p: 0.95, + reasoning_split: false, + }, + "minimax/minimax-m2.1-highspeed": { + temperature: 1, + top_p: 0.95, + reasoning_split: false, + }, + "minimax/MiniMax-M2.1-highspeed-subscription": { + temperature: 1, + top_p: 0.95, + }, + "minimax/MiniMax-M2.1-subscription": { + temperature: 1, + top_p: 0.95, + }, + "minimax/minimax-m2.5": { + temperature: 1, + top_p: 0.95, + reasoning_split: false, + }, + "minimax/minimax-m2.5-highspeed": { + temperature: 1, + top_p: 0.95, + reasoning_split: false, + }, + "minimax/MiniMax-M2.5-highspeed-subscription": { + temperature: 1, + top_p: 0.95, + }, + "minimax/MiniMax-M2.5-subscription": { + temperature: 1, + top_p: 0.95, + }, + "minimax/minimax-m2.7": { + temperature: 1, + top_p: 0.95, + reasoning_split: false, + }, + "minimax/minimax-m2.7-highspeed": { + temperature: 1, + top_p: 0.95, + reasoning_split: false, + }, + "minimax/MiniMax-M2.7-highspeed-subscription": { + temperature: 1, + top_p: 0.95, + }, + "minimax/MiniMax-M2.7-subscription": { + temperature: 1, + top_p: 0.95, + }, + "minimax/minimax-m3": { + temperature: 1, + top_p: 0.95, + reasoning_split: false, + }, + "minimax/MiniMax-M3-subscription": { + temperature: 1, + top_p: 0.95, + }, + "mistral/codestral-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/devstral-2512": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/devstral-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/magistral-medium-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/magistral-small-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/ministral-14b-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/ministral-3b-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/ministral-8b-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/mistral-large-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/mistral-medium-3.5": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/mistral-medium-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/mistral-small-latest": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "mistral/open-mistral-nemo": { + top_p: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + safe_prompt: false, + }, + "moonshot/kimi-k2.5": { + "response_format.type": "text", + }, + "moonshot/kimi-k2.6": { + "thinking.type": "enabled", + "response_format.type": "text", + }, + "moonshot/moonshot-v1-128k": { + temperature: 0.3, + top_p: 1, + n: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + }, + "moonshot/moonshot-v1-32k": { + temperature: 0.3, + top_p: 1, + n: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + }, + "moonshot/moonshot-v1-8k": { + temperature: 0.3, + top_p: 1, + n: 1, + presence_penalty: 0, + frequency_penalty: 0, + "response_format.type": "text", + }, + "openai/chatgpt-4o-latest": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-3.5-turbo": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-4-turbo": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-4-turbo-2024-04-09": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-4.1": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-4.1-mini": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-4.1-nano": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-4o": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-4o-2024-11-20": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-4o-mini": { + max_tokens: 4096, + temperature: 1, + top_p: 1, + }, + "openai/gpt-5": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5-chat-latest": { + max_completion_tokens: 4096, + }, + "openai/gpt-5-mini": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5-nano": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.1": { + max_completion_tokens: 4096, + reasoning_effort: "none", + }, + "openai/gpt-5.1-codex-max-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.1-codex-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.2": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.2-codex-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.2-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.3-codex": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.3-codex-spark-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.3-codex-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.4": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.4-mini": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.4-mini-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.4-nano": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.4-pro": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.4-pro-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.4-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.5": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.5-pro": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/gpt-5.5-pro-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/gpt-5.5-subscription": { + "reasoning.effort": "medium", + "reasoning.summary": "auto", + "text.verbosity": "medium", + }, + "openai/o1": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/o1-mini": { + max_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/o1-preview": { + max_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/o3": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/o3-mini": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/o3-pro": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "openai/o4-mini": { + max_completion_tokens: 4096, + reasoning_effort: "medium", + }, + "perplexity/sonar": { + "web_search_options.search_context_size": "low", + return_images: false, + return_related_questions: false, + disable_search: false, + }, + "perplexity/sonar-deep-research": { + "web_search_options.search_context_size": "low", + return_images: false, + return_related_questions: false, + }, + "perplexity/sonar-pro": { + "web_search_options.search_context_size": "low", + return_images: false, + return_related_questions: false, + disable_search: false, + }, + "perplexity/sonar-reasoning-pro": { + "web_search_options.search_context_size": "low", + return_images: false, + return_related_questions: false, + disable_search: false, + }, + "xai/grok-4.20-0309-non-reasoning": { + temperature: 1, + top_p: 1, + "response_format.type": "text", + }, + "xai/grok-4.20-0309-reasoning": { + temperature: 1, + top_p: 1, + "response_format.type": "text", + }, + "xai/grok-4.20-multi-agent-0309": { + temperature: 0.7, + top_p: 0.95, + "text.format.type": "text", + }, + "xai/grok-4.3": { + temperature: 1, + top_p: 1, + reasoning_effort: "low", + "response_format.type": "text", + }, + "xai/grok-build-0.1": { + temperature: 1, + top_p: 1, + "response_format.type": "text", + }, + "z-ai/glm-4.5": { + temperature: 0.6, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.5-air": { + temperature: 0.6, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.5-air-subscription": { + temperature: 0.6, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.5-airx": { + temperature: 0.6, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.5-flash": { + temperature: 0.6, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.5-subscription": { + temperature: 0.6, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.5-x": { + temperature: 0.6, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.6": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.6-subscription": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.7": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.7-flash": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.7-flashx": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-4.7-subscription": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-5": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-5-subscription": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-5-turbo": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-5-turbo-subscription": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-5.1": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, + "z-ai/glm-5.1-subscription": { + temperature: 1, + top_p: 0.95, + do_sample: true, + "thinking.type": "enabled", + "response_format.type": "text", + }, +} as const satisfies { [K in ModelId]: Partial }; diff --git a/packages/modelparams/src/generated/index.ts b/packages/modelparams/src/generated/index.ts new file mode 100644 index 0000000..41bc2be --- /dev/null +++ b/packages/modelparams/src/generated/index.ts @@ -0,0 +1,7 @@ +// AUTO-GENERATED by packages/modelparams/scripts/codegen.ts. Do not edit by hand. +// Source of truth: the YAML catalog under /models in modelparams.dev. + +export * from "./model-ids.js"; +export * from "./params-by-id.js"; +export * from "./defaults.js"; +export * from "./data.js"; diff --git a/packages/modelparams/src/generated/model-ids.ts b/packages/modelparams/src/generated/model-ids.ts new file mode 100644 index 0000000..6d1c1d1 --- /dev/null +++ b/packages/modelparams/src/generated/model-ids.ts @@ -0,0 +1,199 @@ +// AUTO-GENERATED by packages/modelparams/scripts/codegen.ts. Do not edit by hand. +// Source of truth: the YAML catalog under /models in modelparams.dev. + +export const MODEL_IDS = [ + "alibaba/qwen-flash", + "alibaba/qwen-plus", + "alibaba/qwen3-coder-flash", + "alibaba/qwen3-coder-plus", + "alibaba/qwen3-max", + "alibaba/qwen3.5", + "alibaba/qwen3.5-flash", + "alibaba/qwq-plus", + "anthropic/claude-3-5-haiku-20241022", + "anthropic/claude-3-5-haiku-latest", + "anthropic/claude-3-5-sonnet-20241022", + "anthropic/claude-3-5-sonnet-latest", + "anthropic/claude-3-7-sonnet-20250219", + "anthropic/claude-3-7-sonnet-latest", + "anthropic/claude-3-opus-20240229", + "anthropic/claude-3-opus-latest", + "anthropic/claude-haiku-4", + "anthropic/claude-haiku-4-5", + "anthropic/claude-haiku-4-5-20251001", + "anthropic/claude-haiku-4-5-20251001-subscription", + "anthropic/claude-haiku-4-5-subscription", + "anthropic/claude-haiku-4-subscription", + "anthropic/claude-opus-4-1-20250805", + "anthropic/claude-opus-4-1-20250805-subscription", + "anthropic/claude-opus-4-20250514", + "anthropic/claude-opus-4-20250514-subscription", + "anthropic/claude-opus-4-5-20251101", + "anthropic/claude-opus-4-5-20251101-subscription", + "anthropic/claude-opus-4-6", + "anthropic/claude-opus-4-6-subscription", + "anthropic/claude-opus-4-7", + "anthropic/claude-opus-4-7-subscription", + "anthropic/claude-opus-4-8", + "anthropic/claude-opus-4-8-subscription", + "anthropic/claude-opus-4-subscription", + "anthropic/claude-sonnet-4-20250514", + "anthropic/claude-sonnet-4-20250514-subscription", + "anthropic/claude-sonnet-4-5", + "anthropic/claude-sonnet-4-5-20250929", + "anthropic/claude-sonnet-4-5-20250929-subscription", + "anthropic/claude-sonnet-4-5-subscription", + "anthropic/claude-sonnet-4-6", + "anthropic/claude-sonnet-4-6-subscription", + "anthropic/claude-sonnet-4-subscription", + "cohere/command-a-03-2025", + "cohere/command-a-plus-05-2026", + "cohere/command-a-reasoning-08-2025", + "cohere/command-a-translate-08-2025", + "cohere/command-a-vision-07-2025", + "cohere/command-r-08-2024", + "cohere/command-r-plus-08-2024", + "cohere/command-r7b-12-2024", + "deepseek/deepseek-chat", + "deepseek/deepseek-reasoner", + "deepseek/deepseek-v4-flash", + "deepseek/deepseek-v4-pro", + "google/gemini-2.5-flash", + "google/gemini-2.5-flash-lite", + "google/gemini-2.5-flash-lite-subscription", + "google/gemini-2.5-flash-subscription", + "google/gemini-2.5-pro", + "google/gemini-2.5-pro-subscription", + "google/gemini-3-flash-preview-subscription", + "google/gemini-3.1-flash-lite-preview-subscription", + "google/gemini-3.1-flash-lite-subscription", + "google/gemini-3.1-pro-preview-subscription", + "google/gemini-3.5-flash", + "meta/Llama-3.3-70B-Instruct", + "meta/Llama-3.3-8B-Instruct", + "meta/Llama-4-Maverick-17B-128E-Instruct-FP8", + "meta/Llama-4-Scout-17B-16E-Instruct-FP8", + "minimax/minimax-m2", + "minimax/MiniMax-M2-subscription", + "minimax/minimax-m2.1", + "minimax/minimax-m2.1-highspeed", + "minimax/MiniMax-M2.1-highspeed-subscription", + "minimax/MiniMax-M2.1-subscription", + "minimax/minimax-m2.5", + "minimax/minimax-m2.5-highspeed", + "minimax/MiniMax-M2.5-highspeed-subscription", + "minimax/MiniMax-M2.5-subscription", + "minimax/minimax-m2.7", + "minimax/minimax-m2.7-highspeed", + "minimax/MiniMax-M2.7-highspeed-subscription", + "minimax/MiniMax-M2.7-subscription", + "minimax/minimax-m3", + "minimax/MiniMax-M3-subscription", + "mistral/codestral-latest", + "mistral/devstral-2512", + "mistral/devstral-latest", + "mistral/magistral-medium-latest", + "mistral/magistral-small-latest", + "mistral/ministral-14b-latest", + "mistral/ministral-3b-latest", + "mistral/ministral-8b-latest", + "mistral/mistral-large-latest", + "mistral/mistral-medium-3.5", + "mistral/mistral-medium-latest", + "mistral/mistral-small-latest", + "mistral/open-mistral-nemo", + "moonshot/kimi-k2.5", + "moonshot/kimi-k2.6", + "moonshot/moonshot-v1-128k", + "moonshot/moonshot-v1-32k", + "moonshot/moonshot-v1-8k", + "openai/chatgpt-4o-latest", + "openai/gpt-3.5-turbo", + "openai/gpt-4-turbo", + "openai/gpt-4-turbo-2024-04-09", + "openai/gpt-4.1", + "openai/gpt-4.1-mini", + "openai/gpt-4.1-nano", + "openai/gpt-4o", + "openai/gpt-4o-2024-11-20", + "openai/gpt-4o-mini", + "openai/gpt-5", + "openai/gpt-5-chat-latest", + "openai/gpt-5-mini", + "openai/gpt-5-nano", + "openai/gpt-5.1", + "openai/gpt-5.1-codex-max-subscription", + "openai/gpt-5.1-codex-subscription", + "openai/gpt-5.2", + "openai/gpt-5.2-codex-subscription", + "openai/gpt-5.2-subscription", + "openai/gpt-5.3-codex", + "openai/gpt-5.3-codex-spark-subscription", + "openai/gpt-5.3-codex-subscription", + "openai/gpt-5.4", + "openai/gpt-5.4-mini", + "openai/gpt-5.4-mini-subscription", + "openai/gpt-5.4-nano", + "openai/gpt-5.4-pro", + "openai/gpt-5.4-pro-subscription", + "openai/gpt-5.4-subscription", + "openai/gpt-5.5", + "openai/gpt-5.5-pro", + "openai/gpt-5.5-pro-subscription", + "openai/gpt-5.5-subscription", + "openai/o1", + "openai/o1-mini", + "openai/o1-preview", + "openai/o3", + "openai/o3-mini", + "openai/o3-pro", + "openai/o4-mini", + "perplexity/sonar", + "perplexity/sonar-deep-research", + "perplexity/sonar-pro", + "perplexity/sonar-reasoning-pro", + "xai/grok-4.20-0309-non-reasoning", + "xai/grok-4.20-0309-reasoning", + "xai/grok-4.20-multi-agent-0309", + "xai/grok-4.3", + "xai/grok-build-0.1", + "z-ai/glm-4.5", + "z-ai/glm-4.5-air", + "z-ai/glm-4.5-air-subscription", + "z-ai/glm-4.5-airx", + "z-ai/glm-4.5-flash", + "z-ai/glm-4.5-subscription", + "z-ai/glm-4.5-x", + "z-ai/glm-4.6", + "z-ai/glm-4.6-subscription", + "z-ai/glm-4.7", + "z-ai/glm-4.7-flash", + "z-ai/glm-4.7-flashx", + "z-ai/glm-4.7-subscription", + "z-ai/glm-5", + "z-ai/glm-5-subscription", + "z-ai/glm-5-turbo", + "z-ai/glm-5-turbo-subscription", + "z-ai/glm-5.1", + "z-ai/glm-5.1-subscription", +] as const; + +export type ModelId = (typeof MODEL_IDS)[number]; + +export const PROVIDERS = [ + "alibaba", + "anthropic", + "cohere", + "deepseek", + "google", + "meta", + "minimax", + "mistral", + "moonshot", + "openai", + "perplexity", + "xai", + "z-ai", +] as const; + +export type Provider = (typeof PROVIDERS)[number]; diff --git a/packages/modelparams/src/generated/params-by-id.ts b/packages/modelparams/src/generated/params-by-id.ts new file mode 100644 index 0000000..88b821b --- /dev/null +++ b/packages/modelparams/src/generated/params-by-id.ts @@ -0,0 +1,1333 @@ +// AUTO-GENERATED by packages/modelparams/scripts/codegen.ts. Do not edit by hand. +// Source of truth: the YAML catalog under /models in modelparams.dev. + +/** + * Full parameter shape for each model id. The headline `ParamsOf` type in + * `../types` is `Partial` so consumers can set only the + * parameters they want to override. + */ +export type ParamsById = { + "alibaba/qwen-flash": { + max_tokens: number; + temperature: number; + top_p: number; + "extra_body.top_k": number; + "extra_body.chat_template_kwargs.enable_thinking": boolean; + }; + "alibaba/qwen-plus": { + max_tokens: number; + temperature: number; + top_p: number; + "extra_body.top_k": number; + "extra_body.chat_template_kwargs.enable_thinking": boolean; + }; + "alibaba/qwen3-coder-flash": { + max_tokens: number; + temperature: number; + top_p: number; + "extra_body.top_k": number; + }; + "alibaba/qwen3-coder-plus": { + max_tokens: number; + temperature: number; + top_p: number; + "extra_body.top_k": number; + }; + "alibaba/qwen3-max": { + max_tokens: number; + temperature: number; + top_p: number; + "extra_body.top_k": number; + "extra_body.chat_template_kwargs.enable_thinking": boolean; + }; + "alibaba/qwen3.5": { + max_tokens: number; + temperature: number; + top_p: number; + "extra_body.top_k": number; + "extra_body.chat_template_kwargs.enable_thinking": boolean; + }; + "alibaba/qwen3.5-flash": { + max_tokens: number; + temperature: number; + top_p: number; + "extra_body.top_k": number; + "extra_body.chat_template_kwargs.enable_thinking": boolean; + }; + "alibaba/qwq-plus": { + max_tokens: number; + temperature: number; + top_p: number; + "extra_body.top_k": number; + }; + "anthropic/claude-3-5-haiku-20241022": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + }; + "anthropic/claude-3-5-haiku-latest": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + }; + "anthropic/claude-3-5-sonnet-20241022": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + }; + "anthropic/claude-3-5-sonnet-latest": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + }; + "anthropic/claude-3-7-sonnet-20250219": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-3-7-sonnet-latest": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-3-opus-20240229": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + }; + "anthropic/claude-3-opus-latest": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + }; + "anthropic/claude-haiku-4": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-haiku-4-5": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-haiku-4-5-20251001": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-haiku-4-5-20251001-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-haiku-4-5-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-haiku-4-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-opus-4-1-20250805": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + }; + "anthropic/claude-opus-4-1-20250805-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + }; + "anthropic/claude-opus-4-20250514": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + }; + "anthropic/claude-opus-4-20250514-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + }; + "anthropic/claude-opus-4-5-20251101": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high"; + }; + "anthropic/claude-opus-4-5-20251101-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high"; + }; + "anthropic/claude-opus-4-6": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "adaptive" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high" | "max"; + }; + "anthropic/claude-opus-4-6-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "adaptive" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high" | "max"; + }; + "anthropic/claude-opus-4-7": { + max_tokens: number; + "thinking.type": "disabled" | "adaptive"; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high" | "xhigh" | "max"; + }; + "anthropic/claude-opus-4-7-subscription": { + max_tokens: number; + "thinking.type": "disabled" | "adaptive"; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high" | "xhigh" | "max"; + }; + "anthropic/claude-opus-4-8": { + max_tokens: number; + "thinking.type": "disabled" | "adaptive"; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high" | "xhigh" | "max"; + }; + "anthropic/claude-opus-4-8-subscription": { + max_tokens: number; + "thinking.type": "disabled" | "adaptive"; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high" | "xhigh" | "max"; + }; + "anthropic/claude-opus-4-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "adaptive" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-sonnet-4-20250514": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + }; + "anthropic/claude-sonnet-4-20250514-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + }; + "anthropic/claude-sonnet-4-5": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "adaptive" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-sonnet-4-5-20250929": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-sonnet-4-5-20250929-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-sonnet-4-5-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "adaptive" | "enabled"; + "thinking.budget_tokens": number; + }; + "anthropic/claude-sonnet-4-6": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "adaptive" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high" | "max"; + }; + "anthropic/claude-sonnet-4-6-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "adaptive" | "enabled"; + "thinking.budget_tokens": number; + "thinking.display": "summarized" | "omitted"; + "output_config.effort": "low" | "medium" | "high" | "max"; + }; + "anthropic/claude-sonnet-4-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + top_k: number; + "thinking.type": "disabled" | "adaptive" | "enabled"; + "thinking.budget_tokens": number; + }; + "cohere/command-a-03-2025": { + max_tokens: number; + stop_sequences: string; + temperature: number; + p: number; + k: number; + frequency_penalty: number; + presence_penalty: number; + seed: number; + "response_format.type": "text" | "json_object"; + logprobs: boolean; + tool_choice: "REQUIRED" | "NONE"; + safety_mode: "CONTEXTUAL" | "STRICT"; + }; + "cohere/command-a-plus-05-2026": { + max_tokens: number; + stop_sequences: string; + temperature: number; + p: number; + k: number; + frequency_penalty: number; + presence_penalty: number; + seed: number; + "response_format.type": "text" | "json_object"; + logprobs: boolean; + tool_choice: "REQUIRED" | "NONE"; + safety_mode: "CONTEXTUAL" | "STRICT"; + }; + "cohere/command-a-reasoning-08-2025": { + max_tokens: number; + stop_sequences: string; + temperature: number; + p: number; + k: number; + frequency_penalty: number; + presence_penalty: number; + seed: number; + "thinking.type": "enabled" | "disabled"; + "thinking.token_budget": number; + "response_format.type": "text" | "json_object"; + logprobs: boolean; + tool_choice: "REQUIRED" | "NONE"; + safety_mode: "CONTEXTUAL" | "STRICT"; + }; + "cohere/command-a-translate-08-2025": { + max_tokens: number; + stop_sequences: string; + temperature: number; + p: number; + k: number; + frequency_penalty: number; + presence_penalty: number; + seed: number; + "response_format.type": "text" | "json_object"; + logprobs: boolean; + tool_choice: "REQUIRED" | "NONE"; + safety_mode: "CONTEXTUAL" | "STRICT"; + }; + "cohere/command-a-vision-07-2025": { + max_tokens: number; + stop_sequences: string; + temperature: number; + p: number; + k: number; + frequency_penalty: number; + presence_penalty: number; + seed: number; + "response_format.type": "text" | "json_object"; + logprobs: boolean; + tool_choice: "REQUIRED" | "NONE"; + safety_mode: "CONTEXTUAL" | "STRICT"; + }; + "cohere/command-r-08-2024": { + max_tokens: number; + stop_sequences: string; + temperature: number; + p: number; + k: number; + frequency_penalty: number; + presence_penalty: number; + seed: number; + "response_format.type": "text" | "json_object"; + logprobs: boolean; + safety_mode: "CONTEXTUAL" | "STRICT" | "OFF"; + }; + "cohere/command-r-plus-08-2024": { + max_tokens: number; + stop_sequences: string; + temperature: number; + p: number; + k: number; + frequency_penalty: number; + presence_penalty: number; + seed: number; + "response_format.type": "text" | "json_object"; + logprobs: boolean; + safety_mode: "CONTEXTUAL" | "STRICT" | "OFF"; + }; + "cohere/command-r7b-12-2024": { + max_tokens: number; + stop_sequences: string; + temperature: number; + p: number; + k: number; + frequency_penalty: number; + presence_penalty: number; + seed: number; + "response_format.type": "text" | "json_object"; + logprobs: boolean; + tool_choice: "REQUIRED" | "NONE"; + safety_mode: "CONTEXTUAL" | "STRICT"; + }; + "deepseek/deepseek-chat": { + max_tokens: number; + temperature: number; + top_p: number; + "thinking.type": "disabled" | "enabled"; + }; + "deepseek/deepseek-reasoner": { + max_tokens: number; + temperature: number; + top_p: number; + "thinking.type": "enabled" | "disabled"; + reasoning_effort: "high" | "max"; + }; + "deepseek/deepseek-v4-flash": { + max_tokens: number; + temperature: number; + top_p: number; + "thinking.type": "enabled" | "disabled"; + reasoning_effort: "high" | "max"; + }; + "deepseek/deepseek-v4-pro": { + max_tokens: number; + temperature: number; + top_p: number; + "thinking.type": "enabled" | "disabled"; + reasoning_effort: "high" | "max"; + }; + "google/gemini-2.5-flash": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingBudget": number; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-2.5-flash-lite": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingBudget": number; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-2.5-flash-lite-subscription": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingBudget": number; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-2.5-flash-subscription": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingBudget": number; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-2.5-pro": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingBudget": number; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-2.5-pro-subscription": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingBudget": number; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-3-flash-preview-subscription": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingLevel": "minimal" | "low" | "medium" | "high"; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-3.1-flash-lite-preview-subscription": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingLevel": "minimal" | "low" | "medium" | "high"; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-3.1-flash-lite-subscription": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingLevel": "minimal" | "low" | "medium" | "high"; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-3.1-pro-preview-subscription": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingLevel": "low" | "high"; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "google/gemini-3.5-flash": { + "generationConfig.maxOutputTokens": number; + "generationConfig.temperature": number; + "generationConfig.topP": number; + "generationConfig.topK": number; + "generationConfig.seed": number; + "generationConfig.thinkingConfig.thinkingLevel": "minimal" | "low" | "medium" | "high"; + "generationConfig.thinkingConfig.includeThoughts": boolean; + "generationConfig.responseMimeType": "text/plain" | "application/json"; + }; + "meta/Llama-3.3-70B-Instruct": { + max_completion_tokens: number; + temperature: number; + top_p: number; + top_k: number; + repetition_penalty: number; + "response_format.type": "text" | "json_schema"; + tool_choice: "auto" | "none" | "required"; + }; + "meta/Llama-3.3-8B-Instruct": { + max_completion_tokens: number; + temperature: number; + top_p: number; + top_k: number; + repetition_penalty: number; + "response_format.type": "text" | "json_schema"; + tool_choice: "auto" | "none" | "required"; + }; + "meta/Llama-4-Maverick-17B-128E-Instruct-FP8": { + max_completion_tokens: number; + temperature: number; + top_p: number; + top_k: number; + repetition_penalty: number; + "response_format.type": "text" | "json_schema"; + tool_choice: "auto" | "none" | "required"; + }; + "meta/Llama-4-Scout-17B-16E-Instruct-FP8": { + max_completion_tokens: number; + temperature: number; + top_p: number; + top_k: number; + repetition_penalty: number; + "response_format.type": "text" | "json_schema"; + tool_choice: "auto" | "none" | "required"; + }; + "minimax/minimax-m2": { + max_completion_tokens: number; + temperature: number; + top_p: number; + reasoning_split: boolean; + }; + "minimax/MiniMax-M2-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "minimax/minimax-m2.1": { + max_completion_tokens: number; + temperature: number; + top_p: number; + reasoning_split: boolean; + }; + "minimax/minimax-m2.1-highspeed": { + max_completion_tokens: number; + temperature: number; + top_p: number; + reasoning_split: boolean; + }; + "minimax/MiniMax-M2.1-highspeed-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "minimax/MiniMax-M2.1-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "minimax/minimax-m2.5": { + max_completion_tokens: number; + temperature: number; + top_p: number; + reasoning_split: boolean; + }; + "minimax/minimax-m2.5-highspeed": { + max_completion_tokens: number; + temperature: number; + top_p: number; + reasoning_split: boolean; + }; + "minimax/MiniMax-M2.5-highspeed-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "minimax/MiniMax-M2.5-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "minimax/minimax-m2.7": { + max_completion_tokens: number; + temperature: number; + top_p: number; + reasoning_split: boolean; + }; + "minimax/minimax-m2.7-highspeed": { + max_completion_tokens: number; + temperature: number; + top_p: number; + reasoning_split: boolean; + }; + "minimax/MiniMax-M2.7-highspeed-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "minimax/MiniMax-M2.7-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "minimax/minimax-m3": { + max_completion_tokens: number; + temperature: number; + top_p: number; + reasoning_split: boolean; + }; + "minimax/MiniMax-M3-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "mistral/codestral-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/devstral-2512": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/devstral-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/magistral-medium-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + prompt_mode: "reasoning"; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/magistral-small-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + prompt_mode: "reasoning"; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/ministral-14b-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/ministral-3b-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/ministral-8b-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/mistral-large-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/mistral-medium-3.5": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/mistral-medium-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/mistral-small-latest": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "mistral/open-mistral-nemo": { + max_tokens: number; + stop: string; + temperature: number; + top_p: number; + random_seed: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + safe_prompt: boolean; + }; + "moonshot/kimi-k2.5": { + max_completion_tokens: number; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "moonshot/kimi-k2.6": { + max_completion_tokens: number; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "moonshot/moonshot-v1-128k": { + max_completion_tokens: number; + temperature: number; + top_p: number; + n: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + }; + "moonshot/moonshot-v1-32k": { + max_completion_tokens: number; + temperature: number; + top_p: number; + n: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + }; + "moonshot/moonshot-v1-8k": { + max_completion_tokens: number; + temperature: number; + top_p: number; + n: number; + presence_penalty: number; + frequency_penalty: number; + "response_format.type": "text" | "json_object"; + }; + "openai/chatgpt-4o-latest": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-3.5-turbo": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-4-turbo": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-4-turbo-2024-04-09": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-4.1": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-4.1-mini": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-4.1-nano": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-4o": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-4o-2024-11-20": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-4o-mini": { + max_tokens: number; + temperature: number; + top_p: number; + }; + "openai/gpt-5": { + max_completion_tokens: number; + reasoning_effort: "minimal" | "low" | "medium" | "high"; + }; + "openai/gpt-5-chat-latest": { + max_completion_tokens: number; + }; + "openai/gpt-5-mini": { + max_completion_tokens: number; + reasoning_effort: "minimal" | "low" | "medium" | "high"; + }; + "openai/gpt-5-nano": { + max_completion_tokens: number; + reasoning_effort: "minimal" | "low" | "medium" | "high"; + }; + "openai/gpt-5.1": { + max_completion_tokens: number; + reasoning_effort: "none" | "low" | "medium" | "high"; + }; + "openai/gpt-5.1-codex-max-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.1-codex-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.2": { + max_completion_tokens: number; + reasoning_effort: "none" | "low" | "medium" | "high" | "xhigh"; + }; + "openai/gpt-5.2-codex-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.2-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.3-codex": { + max_completion_tokens: number; + reasoning_effort: "low" | "medium" | "high" | "xhigh"; + }; + "openai/gpt-5.3-codex-spark-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.3-codex-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.4": { + max_completion_tokens: number; + reasoning_effort: "none" | "low" | "medium" | "high" | "xhigh"; + }; + "openai/gpt-5.4-mini": { + max_completion_tokens: number; + reasoning_effort: "none" | "low" | "medium" | "high" | "xhigh"; + }; + "openai/gpt-5.4-mini-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.4-nano": { + max_completion_tokens: number; + reasoning_effort: "none" | "low" | "medium" | "high" | "xhigh"; + }; + "openai/gpt-5.4-pro": { + max_completion_tokens: number; + reasoning_effort: "medium" | "high" | "xhigh"; + }; + "openai/gpt-5.4-pro-subscription": { + "reasoning.effort": "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.4-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.5": { + max_completion_tokens: number; + reasoning_effort: "none" | "low" | "medium" | "high" | "xhigh"; + }; + "openai/gpt-5.5-pro": { + max_completion_tokens: number; + reasoning_effort: "medium" | "high" | "xhigh"; + }; + "openai/gpt-5.5-pro-subscription": { + "reasoning.effort": "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/gpt-5.5-subscription": { + "reasoning.effort": "minimal" | "low" | "medium" | "high" | "xhigh"; + "reasoning.summary": "auto" | "concise" | "detailed" | "none"; + "text.verbosity": "low" | "medium" | "high"; + }; + "openai/o1": { + max_completion_tokens: number; + reasoning_effort: "low" | "medium" | "high" | "xhigh"; + }; + "openai/o1-mini": { + max_tokens: number; + reasoning_effort: "minimal" | "low" | "medium" | "high"; + }; + "openai/o1-preview": { + max_tokens: number; + reasoning_effort: "minimal" | "low" | "medium" | "high"; + }; + "openai/o3": { + max_completion_tokens: number; + reasoning_effort: "low" | "medium" | "high" | "xhigh"; + }; + "openai/o3-mini": { + max_completion_tokens: number; + reasoning_effort: "low" | "medium" | "high" | "xhigh"; + }; + "openai/o3-pro": { + max_completion_tokens: number; + reasoning_effort: "low" | "medium" | "high" | "xhigh"; + }; + "openai/o4-mini": { + max_completion_tokens: number; + reasoning_effort: "low" | "medium" | "high" | "xhigh"; + }; + "perplexity/sonar": { + max_tokens: number; + temperature: number; + top_p: number; + search_mode: "web" | "academic" | "sec"; + search_recency_filter: "hour" | "day" | "week" | "month" | "year"; + search_domain_filter: string; + search_after_date_filter: string; + search_before_date_filter: string; + "web_search_options.search_context_size": "low" | "medium" | "high"; + return_images: boolean; + return_related_questions: boolean; + disable_search: boolean; + }; + "perplexity/sonar-deep-research": { + max_tokens: number; + temperature: number; + top_p: number; + reasoning_effort: "minimal" | "low" | "medium" | "high"; + search_mode: "web" | "academic" | "sec"; + search_recency_filter: "hour" | "day" | "week" | "month" | "year"; + search_domain_filter: string; + search_after_date_filter: string; + search_before_date_filter: string; + "web_search_options.search_context_size": "low" | "medium" | "high"; + return_images: boolean; + return_related_questions: boolean; + }; + "perplexity/sonar-pro": { + max_tokens: number; + temperature: number; + top_p: number; + search_mode: "web" | "academic" | "sec"; + search_recency_filter: "hour" | "day" | "week" | "month" | "year"; + search_domain_filter: string; + search_after_date_filter: string; + search_before_date_filter: string; + "web_search_options.search_context_size": "low" | "medium" | "high"; + return_images: boolean; + return_related_questions: boolean; + disable_search: boolean; + }; + "perplexity/sonar-reasoning-pro": { + max_tokens: number; + temperature: number; + top_p: number; + search_mode: "web" | "academic" | "sec"; + search_recency_filter: "hour" | "day" | "week" | "month" | "year"; + search_domain_filter: string; + search_after_date_filter: string; + search_before_date_filter: string; + "web_search_options.search_context_size": "low" | "medium" | "high"; + return_images: boolean; + return_related_questions: boolean; + disable_search: boolean; + }; + "xai/grok-4.20-0309-non-reasoning": { + max_completion_tokens: number; + temperature: number; + top_p: number; + seed: number; + stop: string; + "response_format.type": "text" | "json_object" | "json_schema"; + }; + "xai/grok-4.20-0309-reasoning": { + max_completion_tokens: number; + temperature: number; + top_p: number; + seed: number; + "response_format.type": "text" | "json_object" | "json_schema"; + }; + "xai/grok-4.20-multi-agent-0309": { + max_output_tokens: number; + temperature: number; + top_p: number; + "reasoning.effort": "low" | "medium" | "high" | "xhigh"; + "text.format.type": "text" | "json_object" | "json_schema"; + }; + "xai/grok-4.3": { + max_completion_tokens: number; + temperature: number; + top_p: number; + seed: number; + reasoning_effort: "none" | "low" | "medium" | "high"; + "response_format.type": "text" | "json_object" | "json_schema"; + }; + "xai/grok-build-0.1": { + max_completion_tokens: number; + temperature: number; + top_p: number; + seed: number; + "response_format.type": "text" | "json_object" | "json_schema"; + }; + "z-ai/glm-4.5": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.5-air": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.5-air-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.5-airx": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.5-flash": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.5-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.5-x": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.6": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.6-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.7": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.7-flash": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.7-flashx": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-4.7-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-5": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-5-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-5-turbo": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-5-turbo-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-5.1": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; + "z-ai/glm-5.1-subscription": { + max_tokens: number; + temperature: number; + top_p: number; + do_sample: boolean; + "thinking.type": "enabled" | "disabled"; + "response_format.type": "text" | "json_object"; + }; +}; diff --git a/packages/modelparams/src/helpers.ts b/packages/modelparams/src/helpers.ts new file mode 100644 index 0000000..a1d0334 --- /dev/null +++ b/packages/modelparams/src/helpers.ts @@ -0,0 +1,63 @@ +import { BY_ID, CATALOG, type CatalogEntry } from "./generated/data.js"; +import { DEFAULTS } from "./generated/defaults.js"; +import { MODEL_IDS, type ModelId, type Provider } from "./generated/model-ids.js"; + +/** + * Return the catalog entry for a model id. The returned object includes the + * provider, authType, and the full list of parameters with their ranges, + * defaults, enum values, applicability rules, etc. + * + * @example + * const m = getModel("anthropic/claude-haiku-4-5-20251001"); + * m.params.forEach((p) => console.log(p.path, p.type)); + */ +export function getModel(id: ModelId): CatalogEntry { + return BY_ID[id]; +} + +/** + * Return the catalog-declared defaults for a model id. Only parameters that + * declare a `default` in the catalog appear in the returned object. + * + * @example + * const defaults = getDefaults("anthropic/claude-haiku-4-5-20251001"); + * // { max_tokens: 4096, temperature: 1, top_p: 1, top_k: 0, "thinking.type": "disabled", ... } + */ +export function getDefaults(id: Id): (typeof DEFAULTS)[Id] { + return DEFAULTS[id]; +} + +/** + * List model ids, optionally filtered by provider. Order matches the canonical + * sort used in the catalog (alphabetical by `provider/model`). + * + * @example + * for (const id of listModels({ provider: "anthropic" })) { ... } + */ +export function listModels(opts: { provider?: Provider } = {}): readonly ModelId[] { + if (!opts.provider) return MODEL_IDS; + const prefix = `${opts.provider}/`; + return MODEL_IDS.filter((id) => id.startsWith(prefix)); +} + +/** + * Look up a specific parameter's catalog definition (range, enum values, + * description, applicability rules). Returns `undefined` if the model doesn't + * declare that parameter. + * + * @example + * const thinking = getParam("anthropic/claude-haiku-4-5-20251001", "thinking.type"); + * if (thinking?.type === "enum") console.log(thinking.values); + */ +export function getParam(id: ModelId, path: string): CatalogEntry["params"][number] | undefined { + return BY_ID[id].params.find((p) => p.path === path); +} + +/** + * Iterate every catalog entry. Equivalent to importing `CATALOG` directly but + * available as a function for callers that prefer not to pull in the runtime + * data symbol explicitly. + */ +export function listAllModels(): readonly CatalogEntry[] { + return CATALOG; +} diff --git a/packages/modelparams/src/index.ts b/packages/modelparams/src/index.ts new file mode 100644 index 0000000..7cfae9b --- /dev/null +++ b/packages/modelparams/src/index.ts @@ -0,0 +1,10 @@ +export type { ParamsOf, StrictParamsOf } from "./types.js"; +export type { ModelId, Provider } from "./generated/model-ids.js"; +export type { ParamsById } from "./generated/params-by-id.js"; +export type { CatalogEntry } from "./generated/data.js"; + +export { MODEL_IDS, PROVIDERS } from "./generated/model-ids.js"; +export { DEFAULTS } from "./generated/defaults.js"; +export { CATALOG, BY_ID } from "./generated/data.js"; + +export { getModel, getDefaults, listModels, getParam, listAllModels } from "./helpers.js"; diff --git a/packages/modelparams/src/types.ts b/packages/modelparams/src/types.ts new file mode 100644 index 0000000..19569ee --- /dev/null +++ b/packages/modelparams/src/types.ts @@ -0,0 +1,25 @@ +import type { ModelId } from "./generated/model-ids.js"; +import type { ParamsById } from "./generated/params-by-id.js"; + +/** + * Parameters a builder can pass when calling a given model. Every key is + * optional — set the ones you want to override and let the SDK or provider + * apply its own default for the rest. + * + * Compile-time errors on unknown keys and invalid enum values. + * + * @example + * import type { ParamsOf } from "modelparams"; + * const params: ParamsOf<"anthropic/claude-haiku-4-5-20251001"> = { + * max_tokens: 4096, + * "thinking.type": "enabled", + * }; + */ +export type ParamsOf = Partial; + +/** + * Fully-specified parameter shape for a given model id. Every catalog-declared + * parameter is required. Useful when round-tripping defaults + overrides + * through the type system. + */ +export type StrictParamsOf = ParamsById[Id]; diff --git a/packages/modelparams/test-d/types.test-d.ts b/packages/modelparams/test-d/types.test-d.ts new file mode 100644 index 0000000..de81786 --- /dev/null +++ b/packages/modelparams/test-d/types.test-d.ts @@ -0,0 +1,26 @@ +import { expectAssignable, expectError, expectType } from "tsd"; +import type { ParamsOf } from "../dist/index.js"; + +type Haiku = ParamsOf<"anthropic/claude-haiku-4-5-20251001">; + +// Allowed: any subset of declared parameters +expectAssignable({}); +expectAssignable({ max_tokens: 4096 }); +expectAssignable({ + max_tokens: 4096, + temperature: 0.7, + "thinking.type": "enabled", +}); + +// Enum values are narrowed to the catalog's literal union +expectError({ "thinking.type": "off" }); + +// Unknown keys are rejected +expectError({ definitely_not_a_param: 1 }); + +// Wrong type for a known key is rejected +expectError({ max_tokens: "lots" }); + +// All keys are optional (we use Partial) +const empty: Haiku = {}; +expectType(empty); diff --git a/packages/modelparams/tests/runtime.test.ts b/packages/modelparams/tests/runtime.test.ts new file mode 100644 index 0000000..2bf4f09 --- /dev/null +++ b/packages/modelparams/tests/runtime.test.ts @@ -0,0 +1,114 @@ +import { describe, expect, it } from "vitest"; +import { + BY_ID, + CATALOG, + DEFAULTS, + MODEL_IDS, + PROVIDERS, + getDefaults, + getModel, + getParam, + listAllModels, + listModels, +} from "../src/index.js"; + +const HAIKU = "anthropic/claude-haiku-4-5-20251001" as const; + +describe("MODEL_IDS / PROVIDERS", () => { + it("contains at least one model and one provider", () => { + expect(MODEL_IDS.length).toBeGreaterThan(0); + expect(PROVIDERS.length).toBeGreaterThan(0); + }); + + it("includes the Anthropic Haiku 4.5 model id", () => { + expect(MODEL_IDS).toContain(HAIKU); + }); + + it("contains only kebab-case provider slugs", () => { + for (const p of PROVIDERS) { + expect(p).toMatch(/^[a-z0-9][a-z0-9-]*$/); + } + }); + + it("contains no duplicate model ids", () => { + expect(new Set(MODEL_IDS).size).toBe(MODEL_IDS.length); + }); +}); + +describe("CATALOG / BY_ID", () => { + it("CATALOG has the same length as MODEL_IDS", () => { + expect(CATALOG.length).toBe(MODEL_IDS.length); + }); + + it("BY_ID has an entry for every model id", () => { + for (const id of MODEL_IDS) { + expect(BY_ID[id]).toBeDefined(); + } + }); + + it("BY_ID is read-only at runtime", () => { + expect(Object.isFrozen(BY_ID)).toBe(true); + }); +}); + +describe("getModel", () => { + it("returns the expected model entry", () => { + const m = getModel(HAIKU); + expect(m.provider).toBe("anthropic"); + expect(m.authType).toBe("api_key"); + expect(m.model).toBe("claude-haiku-4-5-20251001"); + expect(m.params.length).toBeGreaterThan(0); + }); +}); + +describe("getDefaults", () => { + it("includes max_tokens=4096 for Haiku 4.5", () => { + const d = getDefaults(HAIKU); + expect(d.max_tokens).toBe(4096); + }); + + it("uses the catalog default for enum params", () => { + const d = getDefaults(HAIKU); + expect(d["thinking.type"]).toBe("disabled"); + }); + + it("matches DEFAULTS[id] directly", () => { + expect(getDefaults(HAIKU)).toBe(DEFAULTS[HAIKU]); + }); +}); + +describe("listModels", () => { + it("returns the full list when no provider is given", () => { + expect(listModels()).toBe(MODEL_IDS); + }); + + it("filters by provider", () => { + const anthropic = listModels({ provider: "anthropic" }); + expect(anthropic.length).toBeGreaterThan(0); + for (const id of anthropic) { + expect(id.startsWith("anthropic/")).toBe(true); + } + }); +}); + +describe("getParam", () => { + it("returns the parameter definition for a known path", () => { + const p = getParam(HAIKU, "thinking.type"); + expect(p).toBeDefined(); + expect(p?.type).toBe("enum"); + if (p?.type === "enum") { + expect(p.values).toEqual(expect.arrayContaining(["disabled", "enabled"])); + } + }); + + it("returns undefined for an unknown path", () => { + const p = getParam(HAIKU, "definitely.not.a.param"); + expect(p).toBeUndefined(); + }); +}); + +describe("listAllModels", () => { + it("returns the CATALOG", () => { + expect(listAllModels()).toBe(CATALOG); + }); +}); diff --git a/packages/modelparams/tests/version.test.ts b/packages/modelparams/tests/version.test.ts new file mode 100644 index 0000000..81319b8 --- /dev/null +++ b/packages/modelparams/tests/version.test.ts @@ -0,0 +1,126 @@ +import { describe, expect, it } from "vitest"; +import type { Model } from "../../../src/schema/model.js"; +import { bumpVersion, canonicalCatalog, decideBump } from "../scripts/lib/version.js"; + +const baseModel: Model = { + provider: "anthropic", + authType: "api_key", + model: "claude-test", + params: [ + { + path: "max_tokens", + label: "Max tokens", + description: "Max tokens", + group: "generation_length", + type: "integer", + default: 4096, + }, + { + path: "temperature", + label: "Temperature", + description: "Sampling temperature", + group: "sampling", + type: "number", + default: 1, + }, + ], +}; + +const baseCanon = canonicalCatalog([baseModel]); + +describe("decideBump", () => { + it("returns major when a parameter is removed", () => { + const current: Model = { + ...baseModel, + params: baseModel.params.filter((p) => p.path !== "temperature"), + }; + expect( + decideBump({ + baseCanon, + currentCanon: canonicalCatalog([current]), + hasRemovals: true, + }), + ).toBe("major"); + }); + + it("returns patch when a parameter is added", () => { + const current: Model = { + ...baseModel, + params: [ + ...baseModel.params, + { + path: "top_p", + label: "Top P", + description: "Nucleus sampling cutoff", + group: "sampling", + type: "number", + default: 1, + }, + ], + }; + expect( + decideBump({ + baseCanon, + currentCanon: canonicalCatalog([current]), + hasRemovals: false, + }), + ).toBe("patch"); + }); + + it("returns patch when a default changes", () => { + const current: Model = { + ...baseModel, + params: baseModel.params.map((p) => (p.path === "max_tokens" ? { ...p, default: 8192 } : p)), + }; + expect( + decideBump({ + baseCanon, + currentCanon: canonicalCatalog([current]), + hasRemovals: false, + }), + ).toBe("patch"); + }); + + it("returns patch when a new model is added", () => { + const sibling: Model = { ...baseModel, model: "claude-other" }; + expect( + decideBump({ + baseCanon, + currentCanon: canonicalCatalog([baseModel, sibling]), + hasRemovals: false, + }), + ).toBe("patch"); + }); + + it("returns null when nothing semantic changed", () => { + expect( + decideBump({ + baseCanon, + currentCanon: canonicalCatalog([baseModel]), + hasRemovals: false, + }), + ).toBeNull(); + }); + + it("is stable across param order", () => { + const reordered: Model = { ...baseModel, params: [...baseModel.params].reverse() }; + expect(canonicalCatalog([reordered])).toBe(baseCanon); + }); +}); + +describe("bumpVersion", () => { + it("bumps major resets minor and patch", () => { + expect(bumpVersion("0.3.4", "major")).toBe("1.0.0"); + expect(bumpVersion("1.2.7", "major")).toBe("2.0.0"); + }); + + it("bumps patch increments only the patch segment", () => { + expect(bumpVersion("0.0.0", "patch")).toBe("0.0.1"); + expect(bumpVersion("1.2.7", "patch")).toBe("1.2.8"); + }); + + it("throws on a non-semver string", () => { + expect(() => bumpVersion("v1.2.3", "patch")).toThrow(); + expect(() => bumpVersion("1.2", "patch")).toThrow(); + }); +}); diff --git a/packages/modelparams/tsconfig.build.json b/packages/modelparams/tsconfig.build.json new file mode 100644 index 0000000..cc5774c --- /dev/null +++ b/packages/modelparams/tsconfig.build.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false + } +} diff --git a/packages/modelparams/tsconfig.json b/packages/modelparams/tsconfig.json new file mode 100644 index 0000000..83543ad --- /dev/null +++ b/packages/modelparams/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "composite": false, + "paths": {} + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules", "dist", "tests", "scripts"] +} diff --git a/packages/modelparams/vitest.config.ts b/packages/modelparams/vitest.config.ts new file mode 100644 index 0000000..ad1485e --- /dev/null +++ b/packages/modelparams/vitest.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + environment: "node", + include: ["tests/**/*.test.ts"], + globals: false, + reporters: "default", + }, +}); diff --git a/src/data/check-removals.ts b/src/data/check-removals.ts index 3cbbeb1..801c8a8 100644 --- a/src/data/check-removals.ts +++ b/src/data/check-removals.ts @@ -1,31 +1,9 @@ -import { execFileSync } from "node:child_process"; -import fs from "node:fs/promises"; -import os from "node:os"; -import path from "node:path"; -import type { Model } from "../schema/model.js"; import { loadAllModels } from "./load.js"; -import { REPO_ROOT } from "./paths.js"; +import { loadModelsAtRef, refExists } from "./git-baseline.js"; import { findRemovedParams, type ParamRemoval } from "./removals.js"; const OVERRIDE_LABEL = "allow-param-removal"; -function git(args: string[]): string { - return execFileSync("git", args, { - cwd: REPO_ROOT, - encoding: "utf8", - maxBuffer: 64 * 1024 * 1024, - }); -} - -function refExists(ref: string): boolean { - try { - git(["rev-parse", "--verify", "--quiet", `${ref}^{commit}`]); - return true; - } catch { - return false; - } -} - function argBase(): string | undefined { const eq = process.argv.find((a) => a.startsWith("--base=")); if (eq) return eq.slice("--base=".length); @@ -46,27 +24,6 @@ function resolveBaseRef(): string | null { return null; } -/** Materialize the `models/` tree at `ref` into a temp dir and load it. */ -async function loadModelsAtRef(ref: string): Promise { - const listing = git(["ls-tree", "-r", "--name-only", ref, "--", "models"]).trim(); - const files = listing ? listing.split("\n").filter((f) => /\.ya?ml$/i.test(f)) : []; - if (files.length === 0) return []; - - const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "mp-baseline-")); - try { - for (const file of files) { - const content = git(["show", `${ref}:${file}`]); - const dest = path.join(tmp, ...file.split("/")); - await fs.mkdir(path.dirname(dest), { recursive: true }); - await fs.writeFile(dest, content, "utf8"); - } - const { models } = await loadAllModels(path.join(tmp, "models")); - return models; - } finally { - await fs.rm(tmp, { recursive: true, force: true }); - } -} - function reportRemovals(removals: ParamRemoval[], baseRef: string): void { console.error(`\n✖ Parameter removal detected vs ${baseRef} — blocked.\n`); console.error( diff --git a/src/data/git-baseline.ts b/src/data/git-baseline.ts new file mode 100644 index 0000000..bbd5a8e --- /dev/null +++ b/src/data/git-baseline.ts @@ -0,0 +1,50 @@ +import { execFileSync } from "node:child_process"; +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import type { Model } from "../schema/model.js"; +import { loadAllModels } from "./load.js"; +import { REPO_ROOT } from "./paths.js"; + +/** Run a git command from the repo root and return its stdout. */ +export function git(args: string[]): string { + return execFileSync("git", args, { + cwd: REPO_ROOT, + encoding: "utf8", + maxBuffer: 64 * 1024 * 1024, + }); +} + +/** Return true if `ref` resolves to a commit. */ +export function refExists(ref: string): boolean { + try { + git(["rev-parse", "--verify", "--quiet", `${ref}^{commit}`]); + return true; + } catch { + return false; + } +} + +/** + * Materialize the `models/` tree at `ref` into a temp dir and load it. Returns + * an empty array when `ref` has no catalog (e.g. before the catalog existed). + */ +export async function loadModelsAtRef(ref: string): Promise { + const listing = git(["ls-tree", "-r", "--name-only", ref, "--", "models"]).trim(); + const files = listing ? listing.split("\n").filter((f) => /\.ya?ml$/i.test(f)) : []; + if (files.length === 0) return []; + + const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "mp-baseline-")); + try { + for (const file of files) { + const content = git(["show", `${ref}:${file}`]); + const dest = path.join(tmp, ...file.split("/")); + await fs.mkdir(path.dirname(dest), { recursive: true }); + await fs.writeFile(dest, content, "utf8"); + } + const { models } = await loadAllModels(path.join(tmp, "models")); + return models; + } finally { + await fs.rm(tmp, { recursive: true, force: true }); + } +} diff --git a/src/views/index.ejs b/src/views/index.ejs index df633a0..ffaa580 100644 --- a/src/views/index.ejs +++ b/src/views/index.ejs @@ -12,6 +12,30 @@ variants of the same model are listed separately, because they behave differently.

+ +
Date: Tue, 2 Jun 2026 20:08:06 +0200 Subject: [PATCH 2/2] fix: stop prettier from rewriting generated catalog files The codegen emits files in `JSON.stringify(..., null, 2)` shape, while prettier was reformatting them via lint-staged. That made the committed form diverge from a fresh codegen run, which broke the CI drift guard. Excluding `packages/modelparams/src/generated/` from prettier keeps the two in lockstep. --- .prettierignore | 2 + packages/modelparams/src/generated/data.ts | 26772 ++++++++-------- .../modelparams/src/generated/model-ids.ts | 4 +- 3 files changed, 13751 insertions(+), 13027 deletions(-) diff --git a/.prettierignore b/.prettierignore index 4d29162..730675a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,3 +4,5 @@ build/ coverage/ *.min.js *.min.css +packages/modelparams/src/generated/ +packages/*/dist/ diff --git a/packages/modelparams/src/generated/data.ts b/packages/modelparams/src/generated/data.ts index 5ee171b..18c6753 100644 --- a/packages/modelparams/src/generated/data.ts +++ b/packages/modelparams/src/generated/data.ts @@ -5,13143 +5,13863 @@ import type { ModelId } from "./model-ids.js"; export const CATALOG = [ { - provider: "alibaba", - authType: "api_key", - model: "qwen-flash", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "extra_body.top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - default: 20, - range: { - min: 1, - }, - }, - { - path: "extra_body.chat_template_kwargs.enable_thinking", - label: "Enable thinking", - description: - "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", - group: "reasoning", - type: "boolean", - default: true, - }, - ], - }, - { - provider: "alibaba", - authType: "api_key", - model: "qwen-plus", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "extra_body.top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - default: 20, - range: { - min: 1, - }, - }, - { - path: "extra_body.chat_template_kwargs.enable_thinking", - label: "Enable thinking", - description: - "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", - group: "reasoning", - type: "boolean", - default: true, - }, - ], - }, - { - provider: "alibaba", - authType: "api_key", - model: "qwen3-coder-flash", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "extra_body.top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - default: 20, - range: { - min: 1, - }, - }, - ], - }, - { - provider: "alibaba", - authType: "api_key", - model: "qwen3-coder-plus", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "extra_body.top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - default: 20, - range: { - min: 1, - }, - }, - ], - }, - { - provider: "alibaba", - authType: "api_key", - model: "qwen3-max", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "extra_body.top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - default: 20, - range: { - min: 1, - }, - }, - { - path: "extra_body.chat_template_kwargs.enable_thinking", - label: "Enable thinking", - description: - "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "alibaba", - authType: "api_key", - model: "qwen3.5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "extra_body.top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - default: 20, - range: { - min: 1, - }, - }, - { - path: "extra_body.chat_template_kwargs.enable_thinking", - label: "Enable thinking", - description: - "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", - group: "reasoning", - type: "boolean", - default: true, - }, - ], - }, - { - provider: "alibaba", - authType: "api_key", - model: "qwen3.5-flash", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "extra_body.top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - default: 20, - range: { - min: 1, - }, - }, - { - path: "extra_body.chat_template_kwargs.enable_thinking", - label: "Enable thinking", - description: - "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", - group: "reasoning", - type: "boolean", - default: true, - }, - ], - }, - { - provider: "alibaba", - authType: "api_key", - model: "qwq-plus", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "extra_body.top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - default: 20, - range: { - min: 1, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-3-5-haiku-20241022", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "provider": "alibaba", + "authType": "api_key", + "model": "qwen-flash", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "extra_body.top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer", + "default": 20, + "range": { + "min": 1 + } + }, + { + "path": "extra_body.chat_template_kwargs.enable_thinking", + "label": "Enable thinking", + "description": "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + "group": "reasoning", + "type": "boolean", + "default": true + } + ] + }, + { + "provider": "alibaba", + "authType": "api_key", + "model": "qwen-plus", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "extra_body.top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer", + "default": 20, + "range": { + "min": 1 + } + }, + { + "path": "extra_body.chat_template_kwargs.enable_thinking", + "label": "Enable thinking", + "description": "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + "group": "reasoning", + "type": "boolean", + "default": true + } + ] + }, + { + "provider": "alibaba", + "authType": "api_key", + "model": "qwen3-coder-flash", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "extra_body.top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer", + "default": 20, + "range": { + "min": 1 + } + } + ] + }, + { + "provider": "alibaba", + "authType": "api_key", + "model": "qwen3-coder-plus", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "extra_body.top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer", + "default": 20, + "range": { + "min": 1 + } + } + ] + }, + { + "provider": "alibaba", + "authType": "api_key", + "model": "qwen3-max", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "extra_body.top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer", + "default": 20, + "range": { + "min": 1 + } + }, + { + "path": "extra_body.chat_template_kwargs.enable_thinking", + "label": "Enable thinking", + "description": "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "alibaba", + "authType": "api_key", + "model": "qwen3.5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "extra_body.top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer", + "default": 20, + "range": { + "min": 1 + } + }, + { + "path": "extra_body.chat_template_kwargs.enable_thinking", + "label": "Enable thinking", + "description": "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + "group": "reasoning", + "type": "boolean", + "default": true + } + ] + }, + { + "provider": "alibaba", + "authType": "api_key", + "model": "qwen3.5-flash", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "extra_body.top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer", + "default": 20, + "range": { + "min": 1 + } + }, + { + "path": "extra_body.chat_template_kwargs.enable_thinking", + "label": "Enable thinking", + "description": "Controls Qwen3 thinking mode when using OpenAI-compatible clients that pass provider-specific extra body fields.", + "group": "reasoning", + "type": "boolean", + "default": true + } + ] + }, + { + "provider": "alibaba", + "authType": "api_key", + "model": "qwq-plus", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "extra_body.top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer", + "default": 20, + "range": { + "min": 1 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-3-5-haiku-20241022", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-3-5-haiku-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-3-5-haiku-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-3-5-sonnet-20241022", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-3-5-sonnet-20241022", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-3-5-sonnet-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-3-5-sonnet-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-3-7-sonnet-20250219", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-3-7-sonnet-20250219", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-3-7-sonnet-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "adaptive", + "enabled" + ] }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-3-7-sonnet-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ { - "thinking.type": ["adaptive", "enabled"], + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-3-opus-20240229", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-3-opus-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "adaptive", + "enabled" + ] }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-3-opus-20240229", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ { - "thinking.type": ["adaptive", "enabled"], + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-haiku-4", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-haiku-4-5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "adaptive", + "enabled" + ] }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-3-opus-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ { - "thinking.type": ["adaptive", "enabled"], + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-haiku-4-5-20251001", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "enabled" + ] }, { - temperature: { - not: 1, - }, + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "enabled" + ] }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-haiku-4", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ { - "thinking.type": ["adaptive", "enabled"], + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-haiku-4-5-20251001", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "enabled" + ] }, { - temperature: { - not: 1, - }, + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "enabled" + ] }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-haiku-4-5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ { - "thinking.type": ["adaptive", "enabled"], + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-haiku-4-5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-haiku-4", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "adaptive", + "enabled" + ] }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-haiku-4-5-20251001", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ { - "thinking.type": ["enabled"], + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-opus-4-1-20250805", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "enabled" + ] }, { - top_p: { - not: null, - }, + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "enabled" + ] }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ { - "thinking.type": ["enabled"], + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-opus-4-1-20250805", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "enabled" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-haiku-4-5-20251001", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ - { - "thinking.type": ["enabled"], - }, - { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ - { - "thinking.type": ["enabled"], - }, - { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-haiku-4-5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ - { - "thinking.type": ["adaptive", "enabled"], - }, - { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-haiku-4", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ - { - "thinking.type": ["adaptive", "enabled"], - }, - { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-opus-4-1-20250805", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ - { - "thinking.type": ["enabled"], - }, - { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ - { - "thinking.type": ["enabled"], + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ + { + "thinking.type": [ + "enabled" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-opus-4-1-20250805", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ - { - "thinking.type": ["enabled"], - }, - { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ - { - "thinking.type": ["enabled"], - }, - { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-opus-4-20250514", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-opus-4-20250514", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "thinking.type": [ + "enabled" + ] + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-opus-4-20250514", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "thinking.type": [ + "enabled" + ] + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-opus-4-20250514", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "thinking.type": [ + "enabled" + ] + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-opus-4-5-20251101", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "thinking.type": [ + "enabled" + ] + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-opus-4-5-20251101", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], + "thinking.type": [ + "enabled" + ] }, { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], + "thinking.type": [ + "enabled" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-opus-4-5-20251101", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-opus-4-5-20251101", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], + "thinking.type": [ + "enabled" + ] }, { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], + "thinking.type": [ + "enabled" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-opus-4-6", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-opus-4-6", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled", "adaptive"], + "thinking.type": [ + "enabled", + "adaptive" + ] }, { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled", "adaptive"], + "thinking.type": [ + "enabled", + "adaptive" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled", "adaptive"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high", "max"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-opus-4-6", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled", + "adaptive" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high", + "max" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-opus-4-6", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled", "adaptive"], + "thinking.type": [ + "enabled", + "adaptive" + ] }, { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled", "adaptive"], + "thinking.type": [ + "enabled", + "adaptive" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled", "adaptive"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high", "max"], - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-opus-4-7", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive"], - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["adaptive"], - }, - }, - type: "enum", - default: "omitted", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high", "xhigh", "max"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-opus-4-7", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive"], - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["adaptive"], - }, - }, - type: "enum", - default: "omitted", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high", "xhigh", "max"], - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-opus-4-8", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive"], - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["adaptive"], - }, - }, - type: "enum", - default: "omitted", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high", "xhigh", "max"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-opus-4-8", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive"], - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["adaptive"], - }, - }, - type: "enum", - default: "omitted", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high", "xhigh", "max"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-opus-4", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled", + "adaptive" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high", + "max" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-opus-4-7", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive" + ] + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "adaptive" + ] + } + }, + "type": "enum", + "default": "omitted", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-opus-4-7", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive" + ] + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "adaptive" + ] + } + }, + "type": "enum", + "default": "omitted", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-opus-4-8", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive" + ] + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "adaptive" + ] + } + }, + "type": "enum", + "default": "omitted", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-opus-4-8", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive" + ] + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "adaptive" + ] + } + }, + "type": "enum", + "default": "omitted", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-opus-4", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-sonnet-4-20250514", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-sonnet-4-20250514", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "thinking.type": [ + "enabled" + ] + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-sonnet-4-20250514", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "thinking.type": [ + "enabled" + ] + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-sonnet-4-20250514", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "thinking.type": [ + "enabled" + ] + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-sonnet-4-5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "thinking.type": [ + "enabled" + ] + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-sonnet-4-5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-sonnet-4-5-20250929", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-sonnet-4-5-20250929", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], + "thinking.type": [ + "enabled" + ] }, { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], + "thinking.type": [ + "enabled" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-sonnet-4-5-20250929", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-sonnet-4-5-20250929", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], + "thinking.type": [ + "enabled" + ] }, { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled"], + "thinking.type": [ + "enabled" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-sonnet-4-5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-sonnet-4-5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "anthropic", - authType: "api_key", - model: "claude-sonnet-4-6", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "anthropic", + "authType": "api_key", + "model": "claude-sonnet-4-6", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled", "adaptive"], + "thinking.type": [ + "enabled", + "adaptive" + ] }, { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled", "adaptive"], + "thinking.type": [ + "enabled", + "adaptive" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled", "adaptive"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high", "max"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-sonnet-4-6", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled", + "adaptive" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high", + "max" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-sonnet-4-6", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled", "adaptive"], + "thinking.type": [ + "enabled", + "adaptive" + ] }, { - top_p: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "top_p": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["enabled", "adaptive"], + "thinking.type": [ + "enabled", + "adaptive" + ] }, { - temperature: { - not: null, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled", "adaptive"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - { - path: "thinking.display", - label: "Thinking display", - description: "Controls whether Anthropic returns summarized or omitted thinking content.", - group: "reasoning", - applicability: { - only: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "enum", - default: "summarized", - values: ["summarized", "omitted"], - }, - { - path: "output_config.effort", - label: "Effort", - description: "Controls Anthropic response thoroughness and token spend.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "medium", "high", "max"], - }, - ], - }, - { - provider: "anthropic", - authType: "subscription", - model: "claude-sonnet-4", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - applicability: { - except: [ + "temperature": { + "not": null + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled", + "adaptive" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + }, + { + "path": "thinking.display", + "label": "Thinking display", + "description": "Controls whether Anthropic returns summarized or omitted thinking content.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "enum", + "default": "summarized", + "values": [ + "summarized", + "omitted" + ] + }, + { + "path": "output_config.effort", + "label": "Effort", + "description": "Controls Anthropic response thoroughness and token spend.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "medium", + "high", + "max" + ] + } + ] + }, + { + "provider": "anthropic", + "authType": "subscription", + "model": "claude-sonnet-4", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "applicability": { + "except": [ { - "thinking.type": ["adaptive", "enabled"], + "thinking.type": [ + "adaptive", + "enabled" + ] }, { - temperature: { - not: 1, - }, - }, - ], - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "top_k", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["adaptive", "enabled"], - }, - }, - type: "integer", - default: 0, - range: { - min: 0, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Controls the Anthropic thinking mode values supported by this model.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "adaptive", "enabled"], - }, - { - path: "thinking.budget_tokens", - label: "Budget tokens", - description: - "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - default: 4096, - range: { - min: 1024, - }, - }, - ], - }, - { - provider: "cohere", - authType: "api_key", - model: "command-a-03-2025", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop_sequences", - label: "Stop sequences", - description: - "Stops generation when one of these sequences is detected; up to five are allowed.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - step: 0.1, - }, - }, - { - path: "p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.75, - range: { - min: 0.01, - max: 0.99, - step: 0.01, - }, - }, - { - path: "k", - label: "Top K", - description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", - group: "sampling", - type: "integer", - default: 0, - range: { - min: 0, - max: 500, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared to encourage a wider variety of content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "seed", - label: "Seed", - description: - "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON object output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "logprobs", - label: "Log probabilities", - description: - "Controls whether the response includes log probabilities for the generated tokens.", - group: "observability", - type: "boolean", - default: false, - }, - { - path: "tool_choice", - label: "Tool choice", - description: "Forces the model to either call a tool or skip tool calls for this request.", - group: "tooling", - type: "enum", - values: ["REQUIRED", "NONE"], - }, - { - path: "safety_mode", - label: "Safety mode", - description: "Controls Cohere's built-in safety instructions applied to the generation.", - group: "provider_metadata", - type: "enum", - default: "CONTEXTUAL", - values: ["CONTEXTUAL", "STRICT"], - }, - ], - }, - { - provider: "cohere", - authType: "api_key", - model: "command-a-plus-05-2026", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop_sequences", - label: "Stop sequences", - description: - "Stops generation when one of these sequences is detected; up to five are allowed.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - step: 0.1, - }, - }, - { - path: "p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.75, - range: { - min: 0.01, - max: 0.99, - step: 0.01, - }, - }, - { - path: "k", - label: "Top K", - description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", - group: "sampling", - type: "integer", - default: 0, - range: { - min: 0, - max: 500, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared to encourage a wider variety of content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "seed", - label: "Seed", - description: - "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON object output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "logprobs", - label: "Log probabilities", - description: - "Controls whether the response includes log probabilities for the generated tokens.", - group: "observability", - type: "boolean", - default: false, - }, - { - path: "tool_choice", - label: "Tool choice", - description: "Forces the model to either call a tool or skip tool calls for this request.", - group: "tooling", - type: "enum", - values: ["REQUIRED", "NONE"], - }, - { - path: "safety_mode", - label: "Safety mode", - description: "Controls Cohere's built-in safety instructions applied to the generation.", - group: "provider_metadata", - type: "enum", - default: "CONTEXTUAL", - values: ["CONTEXTUAL", "STRICT"], - }, - ], - }, - { - provider: "cohere", - authType: "api_key", - model: "command-a-reasoning-08-2025", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop_sequences", - label: "Stop sequences", - description: - "Stops generation when one of these sequences is detected; up to five are allowed.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - step: 0.1, - }, - }, - { - path: "p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.75, - range: { - min: 0.01, - max: 0.99, - step: 0.01, - }, - }, - { - path: "k", - label: "Top K", - description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", - group: "sampling", - type: "integer", - default: 0, - range: { - min: 0, - max: 500, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared to encourage a wider variety of content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "seed", - label: "Seed", - description: - "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - }, - { - path: "thinking.type", - label: "Thinking mode", - description: - "Controls whether the model reasons step by step before producing its final answer.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["enabled", "disabled"], - }, - { - path: "thinking.token_budget", - label: "Thinking token budget", - description: "Maximum number of tokens the model may spend on reasoning before answering.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "integer", - range: { - min: 1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON object output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "logprobs", - label: "Log probabilities", - description: - "Controls whether the response includes log probabilities for the generated tokens.", - group: "observability", - type: "boolean", - default: false, - }, - { - path: "tool_choice", - label: "Tool choice", - description: "Forces the model to either call a tool or skip tool calls for this request.", - group: "tooling", - type: "enum", - values: ["REQUIRED", "NONE"], - }, - { - path: "safety_mode", - label: "Safety mode", - description: "Controls Cohere's built-in safety instructions applied to the generation.", - group: "provider_metadata", - type: "enum", - default: "CONTEXTUAL", - values: ["CONTEXTUAL", "STRICT"], - }, - ], - }, - { - provider: "cohere", - authType: "api_key", - model: "command-a-translate-08-2025", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop_sequences", - label: "Stop sequences", - description: - "Stops generation when one of these sequences is detected; up to five are allowed.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - step: 0.1, - }, - }, - { - path: "p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.75, - range: { - min: 0.01, - max: 0.99, - step: 0.01, - }, - }, - { - path: "k", - label: "Top K", - description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", - group: "sampling", - type: "integer", - default: 0, - range: { - min: 0, - max: 500, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared to encourage a wider variety of content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "seed", - label: "Seed", - description: - "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON object output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "logprobs", - label: "Log probabilities", - description: - "Controls whether the response includes log probabilities for the generated tokens.", - group: "observability", - type: "boolean", - default: false, - }, - { - path: "tool_choice", - label: "Tool choice", - description: "Forces the model to either call a tool or skip tool calls for this request.", - group: "tooling", - type: "enum", - values: ["REQUIRED", "NONE"], - }, - { - path: "safety_mode", - label: "Safety mode", - description: "Controls Cohere's built-in safety instructions applied to the generation.", - group: "provider_metadata", - type: "enum", - default: "CONTEXTUAL", - values: ["CONTEXTUAL", "STRICT"], - }, - ], - }, - { - provider: "cohere", - authType: "api_key", - model: "command-a-vision-07-2025", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop_sequences", - label: "Stop sequences", - description: - "Stops generation when one of these sequences is detected; up to five are allowed.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - step: 0.1, - }, - }, - { - path: "p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.75, - range: { - min: 0.01, - max: 0.99, - step: 0.01, - }, - }, - { - path: "k", - label: "Top K", - description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", - group: "sampling", - type: "integer", - default: 0, - range: { - min: 0, - max: 500, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared to encourage a wider variety of content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "seed", - label: "Seed", - description: - "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON object output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "logprobs", - label: "Log probabilities", - description: - "Controls whether the response includes log probabilities for the generated tokens.", - group: "observability", - type: "boolean", - default: false, - }, - { - path: "tool_choice", - label: "Tool choice", - description: "Forces the model to either call a tool or skip tool calls for this request.", - group: "tooling", - type: "enum", - values: ["REQUIRED", "NONE"], - }, - { - path: "safety_mode", - label: "Safety mode", - description: "Controls Cohere's built-in safety instructions applied to the generation.", - group: "provider_metadata", - type: "enum", - default: "CONTEXTUAL", - values: ["CONTEXTUAL", "STRICT"], - }, - ], - }, - { - provider: "cohere", - authType: "api_key", - model: "command-r-08-2024", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop_sequences", - label: "Stop sequences", - description: - "Stops generation when one of these sequences is detected; up to five are allowed.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - step: 0.1, - }, - }, - { - path: "p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.75, - range: { - min: 0.01, - max: 0.99, - step: 0.01, - }, - }, - { - path: "k", - label: "Top K", - description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", - group: "sampling", - type: "integer", - default: 0, - range: { - min: 0, - max: 500, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared to encourage a wider variety of content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "seed", - label: "Seed", - description: - "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON object output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "logprobs", - label: "Log probabilities", - description: - "Controls whether the response includes log probabilities for the generated tokens.", - group: "observability", - type: "boolean", - default: false, - }, - { - path: "safety_mode", - label: "Safety mode", - description: "Controls Cohere's built-in safety instructions applied to the generation.", - group: "provider_metadata", - type: "enum", - default: "CONTEXTUAL", - values: ["CONTEXTUAL", "STRICT", "OFF"], - }, - ], - }, - { - provider: "cohere", - authType: "api_key", - model: "command-r-plus-08-2024", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop_sequences", - label: "Stop sequences", - description: - "Stops generation when one of these sequences is detected; up to five are allowed.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - step: 0.1, - }, - }, - { - path: "p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.75, - range: { - min: 0.01, - max: 0.99, - step: 0.01, - }, - }, - { - path: "k", - label: "Top K", - description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", - group: "sampling", - type: "integer", - default: 0, - range: { - min: 0, - max: 500, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared to encourage a wider variety of content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "seed", - label: "Seed", - description: - "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON object output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "logprobs", - label: "Log probabilities", - description: - "Controls whether the response includes log probabilities for the generated tokens.", - group: "observability", - type: "boolean", - default: false, - }, - { - path: "safety_mode", - label: "Safety mode", - description: "Controls Cohere's built-in safety instructions applied to the generation.", - group: "provider_metadata", - type: "enum", - default: "CONTEXTUAL", - values: ["CONTEXTUAL", "STRICT", "OFF"], - }, - ], - }, - { - provider: "cohere", - authType: "api_key", - model: "command-r7b-12-2024", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop_sequences", - label: "Stop sequences", - description: - "Stops generation when one of these sequences is detected; up to five are allowed.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - step: 0.1, - }, - }, - { - path: "p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.75, - range: { - min: 0.01, - max: 0.99, - step: 0.01, - }, - }, - { - path: "k", - label: "Top K", - description: "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", - group: "sampling", - type: "integer", - default: 0, - range: { - min: 0, - max: 500, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared to encourage a wider variety of content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "seed", - label: "Seed", - description: - "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON object output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "logprobs", - label: "Log probabilities", - description: - "Controls whether the response includes log probabilities for the generated tokens.", - group: "observability", - type: "boolean", - default: false, - }, - { - path: "tool_choice", - label: "Tool choice", - description: "Forces the model to either call a tool or skip tool calls for this request.", - group: "tooling", - type: "enum", - values: ["REQUIRED", "NONE"], - }, - { - path: "safety_mode", - label: "Safety mode", - description: "Controls Cohere's built-in safety instructions applied to the generation.", - group: "provider_metadata", - type: "enum", - default: "CONTEXTUAL", - values: ["CONTEXTUAL", "STRICT"], - }, - ], - }, - { - provider: "deepseek", - authType: "api_key", - model: "deepseek-chat", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: - "Controls whether DeepSeek uses thinking mode before producing the final answer.", - group: "reasoning", - type: "enum", - default: "disabled", - values: ["disabled", "enabled"], - }, - ], - }, - { - provider: "deepseek", - authType: "api_key", - model: "deepseek-reasoner", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: - "Controls whether DeepSeek uses thinking mode before producing the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: "Controls DeepSeek thinking effort when thinking mode is enabled.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "enum", - default: "high", - values: ["high", "max"], - }, - ], - }, - { - provider: "deepseek", - authType: "api_key", - model: "deepseek-v4-flash", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: - "Controls whether DeepSeek uses thinking mode before producing the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: "Controls DeepSeek thinking effort when thinking mode is enabled.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "enum", - default: "high", - values: ["high", "max"], - }, - ], - }, - { - provider: "deepseek", - authType: "api_key", - model: "deepseek-v4-pro", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", - group: "sampling", - applicability: { - except: { - "thinking.type": ["enabled"], - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: - "Controls whether DeepSeek uses thinking mode before producing the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: "Controls DeepSeek thinking effort when thinking mode is enabled.", - group: "reasoning", - applicability: { - only: { - "thinking.type": "enabled", - }, - }, - type: "enum", - default: "high", - values: ["high", "max"], - }, - ], - }, - { - provider: "google", - authType: "api_key", - model: "gemini-2.5-flash", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingBudget", - label: "Thinking budget", - description: - "Number of thinking tokens Gemini should use; 0 disables thinking and -1 uses dynamic thinking.", - group: "reasoning", - type: "integer", - default: -1, - range: { - min: -1, - max: 24576, - }, - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "api_key", - model: "gemini-2.5-flash-lite", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingBudget", - label: "Thinking budget", - description: - "Number of thinking tokens Gemini should use; -1 uses dynamic thinking, 0 disables thinking, and fixed budgets start at 512 tokens.", - group: "reasoning", - type: "integer", - default: 0, - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "subscription", - model: "gemini-2.5-flash-lite", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingBudget", - label: "Thinking budget", - description: - "Number of thinking tokens Gemini should use; -1 uses dynamic thinking, 0 disables thinking, and fixed budgets start at 512 tokens.", - group: "reasoning", - type: "integer", - default: 0, - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "subscription", - model: "gemini-2.5-flash", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingBudget", - label: "Thinking budget", - description: - "Number of thinking tokens Gemini should use; 0 disables thinking and -1 uses dynamic thinking.", - group: "reasoning", - type: "integer", - default: -1, - range: { - min: -1, - max: 24576, - }, - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "api_key", - model: "gemini-2.5-pro", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingBudget", - label: "Thinking budget", - description: - "Maximum number of thinking tokens Gemini should use before producing the final answer.", - group: "reasoning", - type: "integer", - range: { - min: 128, - max: 32768, - }, - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "subscription", - model: "gemini-2.5-pro", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingBudget", - label: "Thinking budget", - description: - "Maximum number of thinking tokens Gemini should use before producing the final answer.", - group: "reasoning", - type: "integer", - range: { - min: 128, - max: 32768, - }, - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "subscription", - model: "gemini-3-flash-preview", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingLevel", - label: "Thinking level", - description: "Controls Gemini 3 Flash reasoning effort.", - group: "reasoning", - type: "enum", - default: "high", - values: ["minimal", "low", "medium", "high"], - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "subscription", - model: "gemini-3.1-flash-lite-preview", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingLevel", - label: "Thinking level", - description: "Controls Gemini 3.1 Flash-Lite reasoning effort.", - group: "reasoning", - type: "enum", - default: "high", - values: ["minimal", "low", "medium", "high"], - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "subscription", - model: "gemini-3.1-flash-lite", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingLevel", - label: "Thinking level", - description: "Controls Gemini 3.1 Flash-Lite reasoning effort.", - group: "reasoning", - type: "enum", - default: "high", - values: ["minimal", "low", "medium", "high"], - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "subscription", - model: "gemini-3.1-pro-preview", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingLevel", - label: "Thinking level", - description: "Controls Gemini 3 Pro reasoning effort.", - group: "reasoning", - type: "enum", - default: "high", - values: ["low", "high"], - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "google", - authType: "api_key", - model: "gemini-3.5-flash", - params: [ - { - path: "generationConfig.maxOutputTokens", - label: "Max output tokens", - description: "Maximum number of tokens to include in a response candidate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 65536, - }, - }, - { - path: "generationConfig.temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "generationConfig.topP", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "generationConfig.topK", - label: "Top K", - description: "Limits token sampling to the top K most likely next tokens.", - group: "sampling", - type: "integer", - default: 64, - range: { - min: 0, - }, - }, - { - path: "generationConfig.seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "generationConfig.thinkingConfig.thinkingLevel", - label: "Thinking level", - description: "Controls Gemini 3.5 Flash reasoning effort.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high"], - }, - { - path: "generationConfig.thinkingConfig.includeThoughts", - label: "Include thoughts", - description: - "Controls whether Gemini returns available thought summaries in the response parts.", - group: "reasoning", - type: "boolean", - default: false, - }, - { - path: "generationConfig.responseMimeType", - label: "Response MIME type", - description: "MIME type for generated text candidates.", - group: "output_format", - type: "enum", - default: "text/plain", - values: ["text/plain", "application/json"], - }, - ], - }, - { - provider: "meta", - authType: "api_key", - model: "Llama-3.3-70B-Instruct", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - }, - { - path: "top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - }, - { - path: "repetition_penalty", - label: "Repetition penalty", - description: - "Penalizes tokens that have already appeared to reduce repetition in the output.", - group: "sampling", - type: "number", - }, - { - path: "response_format.type", - label: "Response format", - description: - "Controls whether the model returns normal text or a schema-constrained JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_schema"], - }, - { - path: "tool_choice", - label: "Tool choice", - description: - "Controls whether the model may call tools, must call one, or skips tool calls.", - group: "tooling", - type: "enum", - values: ["auto", "none", "required"], - }, - ], - }, - { - provider: "meta", - authType: "api_key", - model: "Llama-3.3-8B-Instruct", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - }, - { - path: "top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - }, - { - path: "repetition_penalty", - label: "Repetition penalty", - description: - "Penalizes tokens that have already appeared to reduce repetition in the output.", - group: "sampling", - type: "number", - }, - { - path: "response_format.type", - label: "Response format", - description: - "Controls whether the model returns normal text or a schema-constrained JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_schema"], - }, - { - path: "tool_choice", - label: "Tool choice", - description: - "Controls whether the model may call tools, must call one, or skips tool calls.", - group: "tooling", - type: "enum", - values: ["auto", "none", "required"], - }, - ], - }, - { - provider: "meta", - authType: "api_key", - model: "Llama-4-Maverick-17B-128E-Instruct-FP8", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - }, - { - path: "top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - }, - { - path: "repetition_penalty", - label: "Repetition penalty", - description: - "Penalizes tokens that have already appeared to reduce repetition in the output.", - group: "sampling", - type: "number", - }, - { - path: "response_format.type", - label: "Response format", - description: - "Controls whether the model returns normal text or a schema-constrained JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_schema"], - }, - { - path: "tool_choice", - label: "Tool choice", - description: - "Controls whether the model may call tools, must call one, or skips tool calls.", - group: "tooling", - type: "enum", - values: ["auto", "none", "required"], - }, - ], - }, - { - provider: "meta", - authType: "api_key", - model: "Llama-4-Scout-17B-16E-Instruct-FP8", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - }, - { - path: "top_k", - label: "Top K", - description: "Limits generation to the selected number of highest-probability tokens.", - group: "sampling", - type: "integer", - }, - { - path: "repetition_penalty", - label: "Repetition penalty", - description: - "Penalizes tokens that have already appeared to reduce repetition in the output.", - group: "sampling", - type: "number", - }, - { - path: "response_format.type", - label: "Response format", - description: - "Controls whether the model returns normal text or a schema-constrained JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_schema"], - }, - { - path: "tool_choice", - label: "Tool choice", - description: - "Controls whether the model may call tools, must call one, or skips tool calls.", - group: "tooling", - type: "enum", - values: ["auto", "none", "required"], - }, - ], - }, - { - provider: "minimax", - authType: "api_key", - model: "minimax-m2", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_split", - label: "Split reasoning", - description: - "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "minimax", - authType: "subscription", - model: "MiniMax-M2", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "minimax", - authType: "api_key", - model: "minimax-m2.1", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_split", - label: "Split reasoning", - description: - "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "minimax", - authType: "api_key", - model: "minimax-m2.1-highspeed", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_split", - label: "Split reasoning", - description: - "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "minimax", - authType: "subscription", - model: "MiniMax-M2.1-highspeed", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "minimax", - authType: "subscription", - model: "MiniMax-M2.1", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "minimax", - authType: "api_key", - model: "minimax-m2.5", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_split", - label: "Split reasoning", - description: - "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "minimax", - authType: "api_key", - model: "minimax-m2.5-highspeed", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_split", - label: "Split reasoning", - description: - "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "minimax", - authType: "subscription", - model: "MiniMax-M2.5-highspeed", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "minimax", - authType: "subscription", - model: "MiniMax-M2.5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "minimax", - authType: "api_key", - model: "minimax-m2.7", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_split", - label: "Split reasoning", - description: - "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "minimax", - authType: "api_key", - model: "minimax-m2.7-highspeed", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_split", - label: "Split reasoning", - description: - "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "minimax", - authType: "subscription", - model: "MiniMax-M2.7-highspeed", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "minimax", - authType: "subscription", - model: "MiniMax-M2.7", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "minimax", - authType: "api_key", - model: "minimax-m3", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_split", - label: "Split reasoning", - description: - "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", - group: "reasoning", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "minimax", - authType: "subscription", - model: "MiniMax-M3", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "codestral-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "devstral-2512", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "devstral-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "magistral-medium-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "prompt_mode", - label: "Prompt mode", - description: - "Enables Mistral's reasoning system prompt; leave unset to disable the default reasoning behavior.", - group: "reasoning", - type: "enum", - values: ["reasoning"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "magistral-small-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "prompt_mode", - label: "Prompt mode", - description: - "Enables Mistral's reasoning system prompt; leave unset to disable the default reasoning behavior.", - group: "reasoning", - type: "enum", - values: ["reasoning"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "ministral-14b-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "ministral-3b-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "ministral-8b-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "mistral-large-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "mistral-medium-3.5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "mistral-medium-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "mistral-small-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "mistral", - authType: "api_key", - model: "open-mistral-nemo", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "stop", - label: "Stop sequence", - description: "Stops generation when this string is detected.", - group: "generation_length", - type: "string", - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1.5, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "random_seed", - label: "Random seed", - description: "Seed used for deterministic sampling when reproducible outputs are desired.", - group: "sampling", - type: "integer", - range: { - min: 0, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes repeated words or phrases to encourage a wider variety of generated content.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes words based on how often they already appear in the generated text.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Controls whether the model returns normal text or JSON mode output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - { - path: "safe_prompt", - label: "Safe prompt", - description: "Controls whether Mistral injects its safety prompt before the conversation.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "moonshot", - authType: "api_key", - model: "kimi-k2.5", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: - "Controls whether Kimi reasons step by step before answering, or responds directly when set to disabled.", - group: "reasoning", - type: "enum", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "moonshot", - authType: "api_key", - model: "kimi-k2.6", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: - "Controls whether Kimi reasons step by step before answering. Thinking is enabled by default; set disabled to respond directly.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "moonshot", - authType: "api_key", - model: "moonshot-v1-128k", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "n", - label: "Number of completions", - description: "How many chat completion choices to generate for the request.", - group: "generation_length", - type: "integer", - default: 1, - range: { - min: 1, - max: 5, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "moonshot", - authType: "api_key", - model: "moonshot-v1-32k", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "n", - label: "Number of completions", - description: "How many chat completion choices to generate for the request.", - group: "generation_length", - type: "integer", - default: 1, - range: { - min: 1, - max: 5, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "moonshot", - authType: "api_key", - model: "moonshot-v1-8k", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.3, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "n", - label: "Number of completions", - description: "How many chat completion choices to generate for the request.", - group: "generation_length", - type: "integer", - default: 1, - range: { - min: 1, - max: 5, - }, - }, - { - path: "presence_penalty", - label: "Presence penalty", - description: - "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "frequency_penalty", - label: "Frequency penalty", - description: - "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", - group: "sampling", - type: "number", - default: 0, - range: { - min: -2, - max: 2, - step: 0.1, - }, - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "chatgpt-4o-latest", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-3.5-turbo", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-4-turbo", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-4-turbo-2024-04-09", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-4.1", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-4.1-mini", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-4.1-nano", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-4o", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-4o-2024-11-20", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-4o-mini", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5-chat-latest", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5-mini", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5-nano", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.1", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "none", - values: ["none", "low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.1-codex-max", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.1-codex", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.2", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["none", "low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.2-codex", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.2", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.3-codex", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.3-codex-spark", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.3-codex", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.4", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["none", "low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.4-mini", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["none", "low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.4-mini", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.4-nano", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["none", "low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.4-pro", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.4-pro", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.4", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.5", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["none", "low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "gpt-5.5-pro", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.5-pro", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "subscription", - model: "gpt-5.5", - params: [ - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high", "xhigh"], - }, - { - path: "reasoning.summary", - label: "Reasoning summary", - description: "Controls the level of reasoning summary returned with the response.", - group: "reasoning", - type: "enum", - default: "auto", - values: ["auto", "concise", "detailed", "none"], - }, - { - path: "text.verbosity", - label: "Verbosity", - description: "Controls how concise or detailed the model's final text response should be.", - group: "output_format", - type: "enum", - default: "medium", - values: ["low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "o1", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "o1-mini", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "o1-preview", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 1, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["minimal", "low", "medium", "high"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "o3", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "o3-mini", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "o3-pro", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "openai", - authType: "api_key", - model: "o4-mini", - params: [ - { - path: "max_completion_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - default: 4096, - range: { - min: 16, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning the model should perform before producing an answer.", - group: "reasoning", - type: "enum", - default: "medium", - values: ["low", "medium", "high", "xhigh"], - }, - ], - }, - { - provider: "perplexity", - authType: "api_key", - model: "sonar", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 128000, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "search_mode", - label: "Search mode", - description: "Selects the corpus the model searches when grounding its answer.", - group: "provider_metadata", - type: "enum", - values: ["web", "academic", "sec"], - }, - { - path: "search_recency_filter", - label: "Search recency filter", - description: "Restricts web search results to a recent time window.", - group: "provider_metadata", - type: "enum", - values: ["hour", "day", "week", "month", "year"], - }, - { - path: "search_domain_filter", - label: "Search domain filter", - description: "Limits search to, or excludes, specific domains.", - group: "provider_metadata", - type: "string", - }, - { - path: "search_after_date_filter", - label: "Search after date", - description: "Restricts search results to content published after this date (MM/DD/YYYY).", - group: "provider_metadata", - type: "string", - }, - { - path: "search_before_date_filter", - label: "Search before date", - description: "Restricts search results to content published before this date (MM/DD/YYYY).", - group: "provider_metadata", - type: "string", - }, - { - path: "web_search_options.search_context_size", - label: "Search context size", - description: - "Controls how much web search context is retrieved before generating the answer.", - group: "provider_metadata", - type: "enum", - default: "low", - values: ["low", "medium", "high"], - }, - { - path: "return_images", - label: "Return images", - description: "Controls whether the response may include related images from the search.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - { - path: "return_related_questions", - label: "Return related questions", - description: "Controls whether the response includes suggested follow-up questions.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - { - path: "disable_search", - label: "Disable search", - description: "Turns off web search so the model answers from its own knowledge only.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "perplexity", - authType: "api_key", - model: "sonar-deep-research", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 128000, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning and searching the model performs before producing the report.", - group: "reasoning", - type: "enum", - values: ["minimal", "low", "medium", "high"], - }, - { - path: "search_mode", - label: "Search mode", - description: "Selects the corpus the model searches when grounding its answer.", - group: "provider_metadata", - type: "enum", - values: ["web", "academic", "sec"], - }, - { - path: "search_recency_filter", - label: "Search recency filter", - description: "Restricts web search results to a recent time window.", - group: "provider_metadata", - type: "enum", - values: ["hour", "day", "week", "month", "year"], - }, - { - path: "search_domain_filter", - label: "Search domain filter", - description: "Limits search to, or excludes, specific domains.", - group: "provider_metadata", - type: "string", - }, - { - path: "search_after_date_filter", - label: "Search after date", - description: "Restricts search results to content published after this date (MM/DD/YYYY).", - group: "provider_metadata", - type: "string", - }, - { - path: "search_before_date_filter", - label: "Search before date", - description: "Restricts search results to content published before this date (MM/DD/YYYY).", - group: "provider_metadata", - type: "string", - }, - { - path: "web_search_options.search_context_size", - label: "Search context size", - description: - "Controls how much web search context is retrieved before generating the answer.", - group: "provider_metadata", - type: "enum", - default: "low", - values: ["low", "medium", "high"], - }, - { - path: "return_images", - label: "Return images", - description: "Controls whether the response may include related images from the search.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - { - path: "return_related_questions", - label: "Return related questions", - description: "Controls whether the response includes suggested follow-up questions.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "perplexity", - authType: "api_key", - model: "sonar-pro", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 128000, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "search_mode", - label: "Search mode", - description: "Selects the corpus the model searches when grounding its answer.", - group: "provider_metadata", - type: "enum", - values: ["web", "academic", "sec"], - }, - { - path: "search_recency_filter", - label: "Search recency filter", - description: "Restricts web search results to a recent time window.", - group: "provider_metadata", - type: "enum", - values: ["hour", "day", "week", "month", "year"], - }, - { - path: "search_domain_filter", - label: "Search domain filter", - description: "Limits search to, or excludes, specific domains.", - group: "provider_metadata", - type: "string", - }, - { - path: "search_after_date_filter", - label: "Search after date", - description: "Restricts search results to content published after this date (MM/DD/YYYY).", - group: "provider_metadata", - type: "string", - }, - { - path: "search_before_date_filter", - label: "Search before date", - description: "Restricts search results to content published before this date (MM/DD/YYYY).", - group: "provider_metadata", - type: "string", - }, - { - path: "web_search_options.search_context_size", - label: "Search context size", - description: - "Controls how much web search context is retrieved before generating the answer.", - group: "provider_metadata", - type: "enum", - default: "low", - values: ["low", "medium", "high"], - }, - { - path: "return_images", - label: "Return images", - description: "Controls whether the response may include related images from the search.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - { - path: "return_related_questions", - label: "Return related questions", - description: "Controls whether the response includes suggested follow-up questions.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - { - path: "disable_search", - label: "Disable search", - description: "Turns off web search so the model answers from its own knowledge only.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "perplexity", - authType: "api_key", - model: "sonar-reasoning-pro", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of output tokens the model may generate.", - group: "generation_length", - type: "integer", - range: { - min: 1, - max: 128000, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "search_mode", - label: "Search mode", - description: "Selects the corpus the model searches when grounding its answer.", - group: "provider_metadata", - type: "enum", - values: ["web", "academic", "sec"], - }, - { - path: "search_recency_filter", - label: "Search recency filter", - description: "Restricts web search results to a recent time window.", - group: "provider_metadata", - type: "enum", - values: ["hour", "day", "week", "month", "year"], - }, - { - path: "search_domain_filter", - label: "Search domain filter", - description: "Limits search to, or excludes, specific domains.", - group: "provider_metadata", - type: "string", - }, - { - path: "search_after_date_filter", - label: "Search after date", - description: "Restricts search results to content published after this date (MM/DD/YYYY).", - group: "provider_metadata", - type: "string", - }, - { - path: "search_before_date_filter", - label: "Search before date", - description: "Restricts search results to content published before this date (MM/DD/YYYY).", - group: "provider_metadata", - type: "string", - }, - { - path: "web_search_options.search_context_size", - label: "Search context size", - description: - "Controls how much web search context is retrieved before generating the answer.", - group: "provider_metadata", - type: "enum", - default: "low", - values: ["low", "medium", "high"], - }, - { - path: "return_images", - label: "Return images", - description: "Controls whether the response may include related images from the search.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - { - path: "return_related_questions", - label: "Return related questions", - description: "Controls whether the response includes suggested follow-up questions.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - { - path: "disable_search", - label: "Disable search", - description: "Turns off web search so the model answers from its own knowledge only.", - group: "provider_metadata", - type: "boolean", - default: false, - }, - ], - }, - { - provider: "xai", - authType: "api_key", - model: "grok-4.20-0309-non-reasoning", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Upper bound for visible output tokens generated in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "stop", - label: "Stop sequence", - description: - "Stops generation when this sequence is produced. xAI accepts up to four stop sequences.", - group: "generation_length", - type: "string", - }, - { - path: "response_format.type", - label: "Response format", - description: - "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object", "json_schema"], - }, - ], - }, - { - provider: "xai", - authType: "api_key", - model: "grok-4.20-0309-reasoning", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Upper bound for visible output tokens generated in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: - "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object", "json_schema"], - }, - ], - }, - { - provider: "xai", - authType: "api_key", - model: "grok-4.20-multi-agent-0309", - params: [ - { - path: "max_output_tokens", - label: "Max output tokens", - description: "Upper bound for output tokens generated in the Responses API response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 0.7, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 0.95, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "reasoning.effort", - label: "Reasoning effort", - description: - "Controls whether the Responses API request uses the 4-agent or 16-agent multi-agent setup.", - group: "reasoning", - type: "enum", - values: ["low", "medium", "high", "xhigh"], - }, - { - path: "text.format.type", - label: "Text format", - description: - "Controls whether the Responses API returns free-form text, JSON mode output, or structured JSON schema output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object", "json_schema"], - }, - ], - }, - { - provider: "xai", - authType: "api_key", - model: "grok-4.3", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Upper bound for visible output tokens generated in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "reasoning_effort", - label: "Reasoning effort", - description: - "Controls how much reasoning Grok performs before responding. Set to none for non-reasoning requests.", - group: "reasoning", - type: "enum", - default: "low", - values: ["none", "low", "medium", "high"], - }, - { - path: "response_format.type", - label: "Response format", - description: - "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object", "json_schema"], - }, - ], - }, - { - provider: "xai", - authType: "api_key", - model: "grok-build-0.1", - params: [ - { - path: "max_completion_tokens", - label: "Max completion tokens", - description: "Upper bound for visible output tokens generated in the chat completion.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 2, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.01, - }, - }, - { - path: "seed", - label: "Seed", - description: "Optional seed used for decoding when reproducible sampling is desired.", - group: "sampling", - type: "integer", - }, - { - path: "response_format.type", - label: "Response format", - description: - "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object", "json_schema"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.6, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.5-air", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.6, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "subscription", - model: "glm-4.5-air", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.6, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.5-airx", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.6, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.5-flash", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.6, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "subscription", - model: "glm-4.5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.6, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.5-x", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.6, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.6", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "subscription", - model: "glm-4.6", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.7", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.7-flash", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-4.7-flashx", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "subscription", - model: "glm-4.7", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "subscription", - model: "glm-5", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-5-turbo", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "subscription", - model: "glm-5-turbo", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "api_key", - model: "glm-5.1", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, - { - provider: "z-ai", - authType: "subscription", - model: "glm-5.1", - params: [ - { - path: "max_tokens", - label: "Max tokens", - description: "Maximum number of tokens to generate in the response.", - group: "generation_length", - type: "integer", - range: { - min: 1, - }, - }, - { - path: "temperature", - label: "Temperature", - description: - "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 1, - range: { - min: 0, - max: 1, - step: 0.1, - }, - }, - { - path: "top_p", - label: "Top P", - description: - "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", - group: "sampling", - applicability: { - except: { - do_sample: false, - }, - }, - type: "number", - default: 0.95, - range: { - min: 0.01, - max: 1, - step: 0.01, - }, - }, - { - path: "do_sample", - label: "Do sample", - description: - "When false, the model uses greedy decoding and ignores temperature and top_p.", - group: "sampling", - type: "boolean", - default: true, - }, - { - path: "thinking.type", - label: "Thinking mode", - description: "Toggles the model's extended reasoning before it produces the final answer.", - group: "reasoning", - type: "enum", - default: "enabled", - values: ["enabled", "disabled"], - }, - { - path: "response_format.type", - label: "Response format", - description: "Forces the response into plain text or a JSON object.", - group: "output_format", - type: "enum", - default: "text", - values: ["text", "json_object"], - }, - ], - }, + "temperature": { + "not": 1 + } + } + ] + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "adaptive", + "enabled" + ] + } + }, + "type": "integer", + "default": 0, + "range": { + "min": 0 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls the Anthropic thinking mode values supported by this model.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "adaptive", + "enabled" + ] + }, + { + "path": "thinking.budget_tokens", + "label": "Budget tokens", + "description": "Maximum token budget Anthropic may use for extended thinking before producing the final answer.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "default": 4096, + "range": { + "min": 1024 + } + } + ] + }, + { + "provider": "cohere", + "authType": "api_key", + "model": "command-a-03-2025", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop_sequences", + "label": "Stop sequences", + "description": "Stops generation when one of these sequences is detected; up to five are allowed.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "step": 0.1 + } + }, + { + "path": "p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.75, + "range": { + "min": 0.01, + "max": 0.99, + "step": 0.01 + } + }, + { + "path": "k", + "label": "Top K", + "description": "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + "group": "sampling", + "type": "integer", + "default": 0, + "range": { + "min": 0, + "max": 500 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared to encourage a wider variety of content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON object output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "logprobs", + "label": "Log probabilities", + "description": "Controls whether the response includes log probabilities for the generated tokens.", + "group": "observability", + "type": "boolean", + "default": false + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Forces the model to either call a tool or skip tool calls for this request.", + "group": "tooling", + "type": "enum", + "values": [ + "REQUIRED", + "NONE" + ] + }, + { + "path": "safety_mode", + "label": "Safety mode", + "description": "Controls Cohere's built-in safety instructions applied to the generation.", + "group": "provider_metadata", + "type": "enum", + "default": "CONTEXTUAL", + "values": [ + "CONTEXTUAL", + "STRICT" + ] + } + ] + }, + { + "provider": "cohere", + "authType": "api_key", + "model": "command-a-plus-05-2026", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop_sequences", + "label": "Stop sequences", + "description": "Stops generation when one of these sequences is detected; up to five are allowed.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "step": 0.1 + } + }, + { + "path": "p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.75, + "range": { + "min": 0.01, + "max": 0.99, + "step": 0.01 + } + }, + { + "path": "k", + "label": "Top K", + "description": "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + "group": "sampling", + "type": "integer", + "default": 0, + "range": { + "min": 0, + "max": 500 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared to encourage a wider variety of content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON object output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "logprobs", + "label": "Log probabilities", + "description": "Controls whether the response includes log probabilities for the generated tokens.", + "group": "observability", + "type": "boolean", + "default": false + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Forces the model to either call a tool or skip tool calls for this request.", + "group": "tooling", + "type": "enum", + "values": [ + "REQUIRED", + "NONE" + ] + }, + { + "path": "safety_mode", + "label": "Safety mode", + "description": "Controls Cohere's built-in safety instructions applied to the generation.", + "group": "provider_metadata", + "type": "enum", + "default": "CONTEXTUAL", + "values": [ + "CONTEXTUAL", + "STRICT" + ] + } + ] + }, + { + "provider": "cohere", + "authType": "api_key", + "model": "command-a-reasoning-08-2025", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop_sequences", + "label": "Stop sequences", + "description": "Stops generation when one of these sequences is detected; up to five are allowed.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "step": 0.1 + } + }, + { + "path": "p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.75, + "range": { + "min": 0.01, + "max": 0.99, + "step": 0.01 + } + }, + { + "path": "k", + "label": "Top K", + "description": "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + "group": "sampling", + "type": "integer", + "default": 0, + "range": { + "min": 0, + "max": 500 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared to encourage a wider variety of content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls whether the model reasons step by step before producing its final answer.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "thinking.token_budget", + "label": "Thinking token budget", + "description": "Maximum number of tokens the model may spend on reasoning before answering.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON object output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "logprobs", + "label": "Log probabilities", + "description": "Controls whether the response includes log probabilities for the generated tokens.", + "group": "observability", + "type": "boolean", + "default": false + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Forces the model to either call a tool or skip tool calls for this request.", + "group": "tooling", + "type": "enum", + "values": [ + "REQUIRED", + "NONE" + ] + }, + { + "path": "safety_mode", + "label": "Safety mode", + "description": "Controls Cohere's built-in safety instructions applied to the generation.", + "group": "provider_metadata", + "type": "enum", + "default": "CONTEXTUAL", + "values": [ + "CONTEXTUAL", + "STRICT" + ] + } + ] + }, + { + "provider": "cohere", + "authType": "api_key", + "model": "command-a-translate-08-2025", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop_sequences", + "label": "Stop sequences", + "description": "Stops generation when one of these sequences is detected; up to five are allowed.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "step": 0.1 + } + }, + { + "path": "p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.75, + "range": { + "min": 0.01, + "max": 0.99, + "step": 0.01 + } + }, + { + "path": "k", + "label": "Top K", + "description": "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + "group": "sampling", + "type": "integer", + "default": 0, + "range": { + "min": 0, + "max": 500 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared to encourage a wider variety of content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON object output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "logprobs", + "label": "Log probabilities", + "description": "Controls whether the response includes log probabilities for the generated tokens.", + "group": "observability", + "type": "boolean", + "default": false + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Forces the model to either call a tool or skip tool calls for this request.", + "group": "tooling", + "type": "enum", + "values": [ + "REQUIRED", + "NONE" + ] + }, + { + "path": "safety_mode", + "label": "Safety mode", + "description": "Controls Cohere's built-in safety instructions applied to the generation.", + "group": "provider_metadata", + "type": "enum", + "default": "CONTEXTUAL", + "values": [ + "CONTEXTUAL", + "STRICT" + ] + } + ] + }, + { + "provider": "cohere", + "authType": "api_key", + "model": "command-a-vision-07-2025", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop_sequences", + "label": "Stop sequences", + "description": "Stops generation when one of these sequences is detected; up to five are allowed.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "step": 0.1 + } + }, + { + "path": "p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.75, + "range": { + "min": 0.01, + "max": 0.99, + "step": 0.01 + } + }, + { + "path": "k", + "label": "Top K", + "description": "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + "group": "sampling", + "type": "integer", + "default": 0, + "range": { + "min": 0, + "max": 500 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared to encourage a wider variety of content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON object output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "logprobs", + "label": "Log probabilities", + "description": "Controls whether the response includes log probabilities for the generated tokens.", + "group": "observability", + "type": "boolean", + "default": false + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Forces the model to either call a tool or skip tool calls for this request.", + "group": "tooling", + "type": "enum", + "values": [ + "REQUIRED", + "NONE" + ] + }, + { + "path": "safety_mode", + "label": "Safety mode", + "description": "Controls Cohere's built-in safety instructions applied to the generation.", + "group": "provider_metadata", + "type": "enum", + "default": "CONTEXTUAL", + "values": [ + "CONTEXTUAL", + "STRICT" + ] + } + ] + }, + { + "provider": "cohere", + "authType": "api_key", + "model": "command-r-08-2024", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop_sequences", + "label": "Stop sequences", + "description": "Stops generation when one of these sequences is detected; up to five are allowed.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "step": 0.1 + } + }, + { + "path": "p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.75, + "range": { + "min": 0.01, + "max": 0.99, + "step": 0.01 + } + }, + { + "path": "k", + "label": "Top K", + "description": "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + "group": "sampling", + "type": "integer", + "default": 0, + "range": { + "min": 0, + "max": 500 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared to encourage a wider variety of content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON object output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "logprobs", + "label": "Log probabilities", + "description": "Controls whether the response includes log probabilities for the generated tokens.", + "group": "observability", + "type": "boolean", + "default": false + }, + { + "path": "safety_mode", + "label": "Safety mode", + "description": "Controls Cohere's built-in safety instructions applied to the generation.", + "group": "provider_metadata", + "type": "enum", + "default": "CONTEXTUAL", + "values": [ + "CONTEXTUAL", + "STRICT", + "OFF" + ] + } + ] + }, + { + "provider": "cohere", + "authType": "api_key", + "model": "command-r-plus-08-2024", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop_sequences", + "label": "Stop sequences", + "description": "Stops generation when one of these sequences is detected; up to five are allowed.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "step": 0.1 + } + }, + { + "path": "p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.75, + "range": { + "min": 0.01, + "max": 0.99, + "step": 0.01 + } + }, + { + "path": "k", + "label": "Top K", + "description": "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + "group": "sampling", + "type": "integer", + "default": 0, + "range": { + "min": 0, + "max": 500 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared to encourage a wider variety of content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON object output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "logprobs", + "label": "Log probabilities", + "description": "Controls whether the response includes log probabilities for the generated tokens.", + "group": "observability", + "type": "boolean", + "default": false + }, + { + "path": "safety_mode", + "label": "Safety mode", + "description": "Controls Cohere's built-in safety instructions applied to the generation.", + "group": "provider_metadata", + "type": "enum", + "default": "CONTEXTUAL", + "values": [ + "CONTEXTUAL", + "STRICT", + "OFF" + ] + } + ] + }, + { + "provider": "cohere", + "authType": "api_key", + "model": "command-r7b-12-2024", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop_sequences", + "label": "Stop sequences", + "description": "Stops generation when one of these sequences is detected; up to five are allowed.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "step": 0.1 + } + }, + { + "path": "p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.75, + "range": { + "min": 0.01, + "max": 0.99, + "step": 0.01 + } + }, + { + "path": "k", + "label": "Top K", + "description": "Limits sampling to the K most likely tokens; 0 disables top-k sampling.", + "group": "sampling", + "type": "integer", + "default": 0, + "range": { + "min": 0, + "max": 500 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens proportional to how often they have already appeared to reduce repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared to encourage a wider variety of content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Seed used for best-effort deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON object output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "logprobs", + "label": "Log probabilities", + "description": "Controls whether the response includes log probabilities for the generated tokens.", + "group": "observability", + "type": "boolean", + "default": false + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Forces the model to either call a tool or skip tool calls for this request.", + "group": "tooling", + "type": "enum", + "values": [ + "REQUIRED", + "NONE" + ] + }, + { + "path": "safety_mode", + "label": "Safety mode", + "description": "Controls Cohere's built-in safety instructions applied to the generation.", + "group": "provider_metadata", + "type": "enum", + "default": "CONTEXTUAL", + "values": [ + "CONTEXTUAL", + "STRICT" + ] + } + ] + }, + { + "provider": "deepseek", + "authType": "api_key", + "model": "deepseek-chat", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls whether DeepSeek uses thinking mode before producing the final answer.", + "group": "reasoning", + "type": "enum", + "default": "disabled", + "values": [ + "disabled", + "enabled" + ] + } + ] + }, + { + "provider": "deepseek", + "authType": "api_key", + "model": "deepseek-reasoner", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls whether DeepSeek uses thinking mode before producing the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls DeepSeek thinking effort when thinking mode is enabled.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "enum", + "default": "high", + "values": [ + "high", + "max" + ] + } + ] + }, + { + "provider": "deepseek", + "authType": "api_key", + "model": "deepseek-v4-flash", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls whether DeepSeek uses thinking mode before producing the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls DeepSeek thinking effort when thinking mode is enabled.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "enum", + "default": "high", + "values": [ + "high", + "max" + ] + } + ] + }, + { + "provider": "deepseek", + "authType": "api_key", + "model": "deepseek-v4-pro", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling. In DeepSeek thinking mode this parameter is accepted for compatibility but has no effect.", + "group": "sampling", + "applicability": { + "except": { + "thinking.type": [ + "enabled" + ] + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls whether DeepSeek uses thinking mode before producing the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls DeepSeek thinking effort when thinking mode is enabled.", + "group": "reasoning", + "applicability": { + "only": { + "thinking.type": "enabled" + } + }, + "type": "enum", + "default": "high", + "values": [ + "high", + "max" + ] + } + ] + }, + { + "provider": "google", + "authType": "api_key", + "model": "gemini-2.5-flash", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingBudget", + "label": "Thinking budget", + "description": "Number of thinking tokens Gemini should use; 0 disables thinking and -1 uses dynamic thinking.", + "group": "reasoning", + "type": "integer", + "default": -1, + "range": { + "min": -1, + "max": 24576 + } + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "api_key", + "model": "gemini-2.5-flash-lite", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingBudget", + "label": "Thinking budget", + "description": "Number of thinking tokens Gemini should use; -1 uses dynamic thinking, 0 disables thinking, and fixed budgets start at 512 tokens.", + "group": "reasoning", + "type": "integer", + "default": 0 + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "subscription", + "model": "gemini-2.5-flash-lite", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingBudget", + "label": "Thinking budget", + "description": "Number of thinking tokens Gemini should use; -1 uses dynamic thinking, 0 disables thinking, and fixed budgets start at 512 tokens.", + "group": "reasoning", + "type": "integer", + "default": 0 + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "subscription", + "model": "gemini-2.5-flash", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingBudget", + "label": "Thinking budget", + "description": "Number of thinking tokens Gemini should use; 0 disables thinking and -1 uses dynamic thinking.", + "group": "reasoning", + "type": "integer", + "default": -1, + "range": { + "min": -1, + "max": 24576 + } + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "api_key", + "model": "gemini-2.5-pro", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingBudget", + "label": "Thinking budget", + "description": "Maximum number of thinking tokens Gemini should use before producing the final answer.", + "group": "reasoning", + "type": "integer", + "range": { + "min": 128, + "max": 32768 + } + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "subscription", + "model": "gemini-2.5-pro", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingBudget", + "label": "Thinking budget", + "description": "Maximum number of thinking tokens Gemini should use before producing the final answer.", + "group": "reasoning", + "type": "integer", + "range": { + "min": 128, + "max": 32768 + } + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "subscription", + "model": "gemini-3-flash-preview", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingLevel", + "label": "Thinking level", + "description": "Controls Gemini 3 Flash reasoning effort.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "subscription", + "model": "gemini-3.1-flash-lite-preview", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingLevel", + "label": "Thinking level", + "description": "Controls Gemini 3.1 Flash-Lite reasoning effort.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "subscription", + "model": "gemini-3.1-flash-lite", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingLevel", + "label": "Thinking level", + "description": "Controls Gemini 3.1 Flash-Lite reasoning effort.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "subscription", + "model": "gemini-3.1-pro-preview", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingLevel", + "label": "Thinking level", + "description": "Controls Gemini 3 Pro reasoning effort.", + "group": "reasoning", + "type": "enum", + "default": "high", + "values": [ + "low", + "high" + ] + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "google", + "authType": "api_key", + "model": "gemini-3.5-flash", + "params": [ + { + "path": "generationConfig.maxOutputTokens", + "label": "Max output tokens", + "description": "Maximum number of tokens to include in a response candidate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 65536 + } + }, + { + "path": "generationConfig.temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "generationConfig.topP", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "generationConfig.topK", + "label": "Top K", + "description": "Limits token sampling to the top K most likely next tokens.", + "group": "sampling", + "type": "integer", + "default": 64, + "range": { + "min": 0 + } + }, + { + "path": "generationConfig.seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "generationConfig.thinkingConfig.thinkingLevel", + "label": "Thinking level", + "description": "Controls Gemini 3.5 Flash reasoning effort.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + }, + { + "path": "generationConfig.thinkingConfig.includeThoughts", + "label": "Include thoughts", + "description": "Controls whether Gemini returns available thought summaries in the response parts.", + "group": "reasoning", + "type": "boolean", + "default": false + }, + { + "path": "generationConfig.responseMimeType", + "label": "Response MIME type", + "description": "MIME type for generated text candidates.", + "group": "output_format", + "type": "enum", + "default": "text/plain", + "values": [ + "text/plain", + "application/json" + ] + } + ] + }, + { + "provider": "meta", + "authType": "api_key", + "model": "Llama-3.3-70B-Instruct", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number" + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number" + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer" + }, + { + "path": "repetition_penalty", + "label": "Repetition penalty", + "description": "Penalizes tokens that have already appeared to reduce repetition in the output.", + "group": "sampling", + "type": "number" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or a schema-constrained JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_schema" + ] + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Controls whether the model may call tools, must call one, or skips tool calls.", + "group": "tooling", + "type": "enum", + "values": [ + "auto", + "none", + "required" + ] + } + ] + }, + { + "provider": "meta", + "authType": "api_key", + "model": "Llama-3.3-8B-Instruct", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number" + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number" + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer" + }, + { + "path": "repetition_penalty", + "label": "Repetition penalty", + "description": "Penalizes tokens that have already appeared to reduce repetition in the output.", + "group": "sampling", + "type": "number" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or a schema-constrained JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_schema" + ] + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Controls whether the model may call tools, must call one, or skips tool calls.", + "group": "tooling", + "type": "enum", + "values": [ + "auto", + "none", + "required" + ] + } + ] + }, + { + "provider": "meta", + "authType": "api_key", + "model": "Llama-4-Maverick-17B-128E-Instruct-FP8", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number" + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number" + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer" + }, + { + "path": "repetition_penalty", + "label": "Repetition penalty", + "description": "Penalizes tokens that have already appeared to reduce repetition in the output.", + "group": "sampling", + "type": "number" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or a schema-constrained JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_schema" + ] + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Controls whether the model may call tools, must call one, or skips tool calls.", + "group": "tooling", + "type": "enum", + "values": [ + "auto", + "none", + "required" + ] + } + ] + }, + { + "provider": "meta", + "authType": "api_key", + "model": "Llama-4-Scout-17B-16E-Instruct-FP8", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number" + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number" + }, + { + "path": "top_k", + "label": "Top K", + "description": "Limits generation to the selected number of highest-probability tokens.", + "group": "sampling", + "type": "integer" + }, + { + "path": "repetition_penalty", + "label": "Repetition penalty", + "description": "Penalizes tokens that have already appeared to reduce repetition in the output.", + "group": "sampling", + "type": "number" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or a schema-constrained JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_schema" + ] + }, + { + "path": "tool_choice", + "label": "Tool choice", + "description": "Controls whether the model may call tools, must call one, or skips tool calls.", + "group": "tooling", + "type": "enum", + "values": [ + "auto", + "none", + "required" + ] + } + ] + }, + { + "provider": "minimax", + "authType": "api_key", + "model": "minimax-m2", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_split", + "label": "Split reasoning", + "description": "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "minimax", + "authType": "subscription", + "model": "MiniMax-M2", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "minimax", + "authType": "api_key", + "model": "minimax-m2.1", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_split", + "label": "Split reasoning", + "description": "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "minimax", + "authType": "api_key", + "model": "minimax-m2.1-highspeed", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_split", + "label": "Split reasoning", + "description": "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "minimax", + "authType": "subscription", + "model": "MiniMax-M2.1-highspeed", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "minimax", + "authType": "subscription", + "model": "MiniMax-M2.1", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "minimax", + "authType": "api_key", + "model": "minimax-m2.5", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_split", + "label": "Split reasoning", + "description": "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "minimax", + "authType": "api_key", + "model": "minimax-m2.5-highspeed", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_split", + "label": "Split reasoning", + "description": "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "minimax", + "authType": "subscription", + "model": "MiniMax-M2.5-highspeed", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "minimax", + "authType": "subscription", + "model": "MiniMax-M2.5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "minimax", + "authType": "api_key", + "model": "minimax-m2.7", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_split", + "label": "Split reasoning", + "description": "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "minimax", + "authType": "api_key", + "model": "minimax-m2.7-highspeed", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_split", + "label": "Split reasoning", + "description": "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "minimax", + "authType": "subscription", + "model": "MiniMax-M2.7-highspeed", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "minimax", + "authType": "subscription", + "model": "MiniMax-M2.7", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "minimax", + "authType": "api_key", + "model": "minimax-m3", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_split", + "label": "Split reasoning", + "description": "Returns the model's reasoning in a separate reasoning_details field instead of inline with the response.", + "group": "reasoning", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "minimax", + "authType": "subscription", + "model": "MiniMax-M3", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied. Values must be greater than 0 and at most 1.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "codestral-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "devstral-2512", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "devstral-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "magistral-medium-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "prompt_mode", + "label": "Prompt mode", + "description": "Enables Mistral's reasoning system prompt; leave unset to disable the default reasoning behavior.", + "group": "reasoning", + "type": "enum", + "values": [ + "reasoning" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "magistral-small-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "prompt_mode", + "label": "Prompt mode", + "description": "Enables Mistral's reasoning system prompt; leave unset to disable the default reasoning behavior.", + "group": "reasoning", + "type": "enum", + "values": [ + "reasoning" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "ministral-14b-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "ministral-3b-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "ministral-8b-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "mistral-large-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "mistral-medium-3.5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "mistral-medium-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "mistral-small-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "mistral", + "authType": "api_key", + "model": "open-mistral-nemo", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this string is detected.", + "group": "generation_length", + "type": "string" + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1.5, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "random_seed", + "label": "Random seed", + "description": "Seed used for deterministic sampling when reproducible outputs are desired.", + "group": "sampling", + "type": "integer", + "range": { + "min": 0 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes repeated words or phrases to encourage a wider variety of generated content.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes words based on how often they already appear in the generated text.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns normal text or JSON mode output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + }, + { + "path": "safe_prompt", + "label": "Safe prompt", + "description": "Controls whether Mistral injects its safety prompt before the conversation.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "moonshot", + "authType": "api_key", + "model": "kimi-k2.5", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls whether Kimi reasons step by step before answering, or responds directly when set to disabled.", + "group": "reasoning", + "type": "enum", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "moonshot", + "authType": "api_key", + "model": "kimi-k2.6", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Controls whether Kimi reasons step by step before answering. Thinking is enabled by default; set disabled to respond directly.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "moonshot", + "authType": "api_key", + "model": "moonshot-v1-128k", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "n", + "label": "Number of completions", + "description": "How many chat completion choices to generate for the request.", + "group": "generation_length", + "type": "integer", + "default": 1, + "range": { + "min": 1, + "max": 5 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "moonshot", + "authType": "api_key", + "model": "moonshot-v1-32k", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "n", + "label": "Number of completions", + "description": "How many chat completion choices to generate for the request.", + "group": "generation_length", + "type": "integer", + "default": 1, + "range": { + "min": 1, + "max": 5 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "moonshot", + "authType": "api_key", + "model": "moonshot-v1-8k", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.3, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "n", + "label": "Number of completions", + "description": "How many chat completion choices to generate for the request.", + "group": "generation_length", + "type": "integer", + "default": 1, + "range": { + "min": 1, + "max": 5 + } + }, + { + "path": "presence_penalty", + "label": "Presence penalty", + "description": "Penalizes tokens that have already appeared, encouraging the model to talk about new topics.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "frequency_penalty", + "label": "Frequency penalty", + "description": "Penalizes tokens by how often they have appeared, reducing verbatim repetition.", + "group": "sampling", + "type": "number", + "default": 0, + "range": { + "min": -2, + "max": 2, + "step": 0.1 + } + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "chatgpt-4o-latest", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-3.5-turbo", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-4-turbo", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-4-turbo-2024-04-09", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-4.1", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-4.1-mini", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-4.1-nano", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-4o", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-4o-2024-11-20", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-4o-mini", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens whose cumulative probability reaches this value.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5-chat-latest", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5-mini", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5-nano", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.1", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "none", + "values": [ + "none", + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.1-codex-max", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.1-codex", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.2", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.2-codex", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.2", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.3-codex", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.3-codex-spark", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.3-codex", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.4", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.4-mini", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.4-mini", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.4-nano", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.4-pro", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.4-pro", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.4", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.5", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "gpt-5.5-pro", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.5-pro", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "subscription", + "model": "gpt-5.5", + "params": [ + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "reasoning.summary", + "label": "Reasoning summary", + "description": "Controls the level of reasoning summary returned with the response.", + "group": "reasoning", + "type": "enum", + "default": "auto", + "values": [ + "auto", + "concise", + "detailed", + "none" + ] + }, + { + "path": "text.verbosity", + "label": "Verbosity", + "description": "Controls how concise or detailed the model's final text response should be.", + "group": "output_format", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "o1", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "o1-mini", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "o1-preview", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 1 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "o3", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "o3-mini", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "o3-pro", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "openai", + "authType": "api_key", + "model": "o4-mini", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "default": 4096, + "range": { + "min": 16 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning the model should perform before producing an answer.", + "group": "reasoning", + "type": "enum", + "default": "medium", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ] + }, + { + "provider": "perplexity", + "authType": "api_key", + "model": "sonar", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 128000 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "search_mode", + "label": "Search mode", + "description": "Selects the corpus the model searches when grounding its answer.", + "group": "provider_metadata", + "type": "enum", + "values": [ + "web", + "academic", + "sec" + ] + }, + { + "path": "search_recency_filter", + "label": "Search recency filter", + "description": "Restricts web search results to a recent time window.", + "group": "provider_metadata", + "type": "enum", + "values": [ + "hour", + "day", + "week", + "month", + "year" + ] + }, + { + "path": "search_domain_filter", + "label": "Search domain filter", + "description": "Limits search to, or excludes, specific domains.", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "search_after_date_filter", + "label": "Search after date", + "description": "Restricts search results to content published after this date (MM/DD/YYYY).", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "search_before_date_filter", + "label": "Search before date", + "description": "Restricts search results to content published before this date (MM/DD/YYYY).", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "web_search_options.search_context_size", + "label": "Search context size", + "description": "Controls how much web search context is retrieved before generating the answer.", + "group": "provider_metadata", + "type": "enum", + "default": "low", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "path": "return_images", + "label": "Return images", + "description": "Controls whether the response may include related images from the search.", + "group": "provider_metadata", + "type": "boolean", + "default": false + }, + { + "path": "return_related_questions", + "label": "Return related questions", + "description": "Controls whether the response includes suggested follow-up questions.", + "group": "provider_metadata", + "type": "boolean", + "default": false + }, + { + "path": "disable_search", + "label": "Disable search", + "description": "Turns off web search so the model answers from its own knowledge only.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "perplexity", + "authType": "api_key", + "model": "sonar-deep-research", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 128000 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning and searching the model performs before producing the report.", + "group": "reasoning", + "type": "enum", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + }, + { + "path": "search_mode", + "label": "Search mode", + "description": "Selects the corpus the model searches when grounding its answer.", + "group": "provider_metadata", + "type": "enum", + "values": [ + "web", + "academic", + "sec" + ] + }, + { + "path": "search_recency_filter", + "label": "Search recency filter", + "description": "Restricts web search results to a recent time window.", + "group": "provider_metadata", + "type": "enum", + "values": [ + "hour", + "day", + "week", + "month", + "year" + ] + }, + { + "path": "search_domain_filter", + "label": "Search domain filter", + "description": "Limits search to, or excludes, specific domains.", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "search_after_date_filter", + "label": "Search after date", + "description": "Restricts search results to content published after this date (MM/DD/YYYY).", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "search_before_date_filter", + "label": "Search before date", + "description": "Restricts search results to content published before this date (MM/DD/YYYY).", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "web_search_options.search_context_size", + "label": "Search context size", + "description": "Controls how much web search context is retrieved before generating the answer.", + "group": "provider_metadata", + "type": "enum", + "default": "low", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "path": "return_images", + "label": "Return images", + "description": "Controls whether the response may include related images from the search.", + "group": "provider_metadata", + "type": "boolean", + "default": false + }, + { + "path": "return_related_questions", + "label": "Return related questions", + "description": "Controls whether the response includes suggested follow-up questions.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "perplexity", + "authType": "api_key", + "model": "sonar-pro", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 128000 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "search_mode", + "label": "Search mode", + "description": "Selects the corpus the model searches when grounding its answer.", + "group": "provider_metadata", + "type": "enum", + "values": [ + "web", + "academic", + "sec" + ] + }, + { + "path": "search_recency_filter", + "label": "Search recency filter", + "description": "Restricts web search results to a recent time window.", + "group": "provider_metadata", + "type": "enum", + "values": [ + "hour", + "day", + "week", + "month", + "year" + ] + }, + { + "path": "search_domain_filter", + "label": "Search domain filter", + "description": "Limits search to, or excludes, specific domains.", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "search_after_date_filter", + "label": "Search after date", + "description": "Restricts search results to content published after this date (MM/DD/YYYY).", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "search_before_date_filter", + "label": "Search before date", + "description": "Restricts search results to content published before this date (MM/DD/YYYY).", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "web_search_options.search_context_size", + "label": "Search context size", + "description": "Controls how much web search context is retrieved before generating the answer.", + "group": "provider_metadata", + "type": "enum", + "default": "low", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "path": "return_images", + "label": "Return images", + "description": "Controls whether the response may include related images from the search.", + "group": "provider_metadata", + "type": "boolean", + "default": false + }, + { + "path": "return_related_questions", + "label": "Return related questions", + "description": "Controls whether the response includes suggested follow-up questions.", + "group": "provider_metadata", + "type": "boolean", + "default": false + }, + { + "path": "disable_search", + "label": "Disable search", + "description": "Turns off web search so the model answers from its own knowledge only.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "perplexity", + "authType": "api_key", + "model": "sonar-reasoning-pro", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of output tokens the model may generate.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1, + "max": 128000 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "search_mode", + "label": "Search mode", + "description": "Selects the corpus the model searches when grounding its answer.", + "group": "provider_metadata", + "type": "enum", + "values": [ + "web", + "academic", + "sec" + ] + }, + { + "path": "search_recency_filter", + "label": "Search recency filter", + "description": "Restricts web search results to a recent time window.", + "group": "provider_metadata", + "type": "enum", + "values": [ + "hour", + "day", + "week", + "month", + "year" + ] + }, + { + "path": "search_domain_filter", + "label": "Search domain filter", + "description": "Limits search to, or excludes, specific domains.", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "search_after_date_filter", + "label": "Search after date", + "description": "Restricts search results to content published after this date (MM/DD/YYYY).", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "search_before_date_filter", + "label": "Search before date", + "description": "Restricts search results to content published before this date (MM/DD/YYYY).", + "group": "provider_metadata", + "type": "string" + }, + { + "path": "web_search_options.search_context_size", + "label": "Search context size", + "description": "Controls how much web search context is retrieved before generating the answer.", + "group": "provider_metadata", + "type": "enum", + "default": "low", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "path": "return_images", + "label": "Return images", + "description": "Controls whether the response may include related images from the search.", + "group": "provider_metadata", + "type": "boolean", + "default": false + }, + { + "path": "return_related_questions", + "label": "Return related questions", + "description": "Controls whether the response includes suggested follow-up questions.", + "group": "provider_metadata", + "type": "boolean", + "default": false + }, + { + "path": "disable_search", + "label": "Disable search", + "description": "Turns off web search so the model answers from its own knowledge only.", + "group": "provider_metadata", + "type": "boolean", + "default": false + } + ] + }, + { + "provider": "xai", + "authType": "api_key", + "model": "grok-4.20-0309-non-reasoning", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Upper bound for visible output tokens generated in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "stop", + "label": "Stop sequence", + "description": "Stops generation when this sequence is produced. xAI accepts up to four stop sequences.", + "group": "generation_length", + "type": "string" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object", + "json_schema" + ] + } + ] + }, + { + "provider": "xai", + "authType": "api_key", + "model": "grok-4.20-0309-reasoning", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Upper bound for visible output tokens generated in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object", + "json_schema" + ] + } + ] + }, + { + "provider": "xai", + "authType": "api_key", + "model": "grok-4.20-multi-agent-0309", + "params": [ + { + "path": "max_output_tokens", + "label": "Max output tokens", + "description": "Upper bound for output tokens generated in the Responses API response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 0.7, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 0.95, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "reasoning.effort", + "label": "Reasoning effort", + "description": "Controls whether the Responses API request uses the 4-agent or 16-agent multi-agent setup.", + "group": "reasoning", + "type": "enum", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + }, + { + "path": "text.format.type", + "label": "Text format", + "description": "Controls whether the Responses API returns free-form text, JSON mode output, or structured JSON schema output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object", + "json_schema" + ] + } + ] + }, + { + "provider": "xai", + "authType": "api_key", + "model": "grok-4.3", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Upper bound for visible output tokens generated in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "reasoning_effort", + "label": "Reasoning effort", + "description": "Controls how much reasoning Grok performs before responding. Set to none for non-reasoning requests.", + "group": "reasoning", + "type": "enum", + "default": "low", + "values": [ + "none", + "low", + "medium", + "high" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object", + "json_schema" + ] + } + ] + }, + { + "provider": "xai", + "authType": "api_key", + "model": "grok-build-0.1", + "params": [ + { + "path": "max_completion_tokens", + "label": "Max completion tokens", + "description": "Upper bound for visible output tokens generated in the chat completion.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 2, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + { + "path": "seed", + "label": "Seed", + "description": "Optional seed used for decoding when reproducible sampling is desired.", + "group": "sampling", + "type": "integer" + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Controls whether the model returns text, JSON mode output, or structured JSON schema output.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object", + "json_schema" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.6, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.5-air", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.6, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "subscription", + "model": "glm-4.5-air", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.6, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.5-airx", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.6, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.5-flash", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.6, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "subscription", + "model": "glm-4.5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.6, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.5-x", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.6, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.6", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "subscription", + "model": "glm-4.6", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.7", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.7-flash", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-4.7-flashx", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "subscription", + "model": "glm-4.7", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "subscription", + "model": "glm-5", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-5-turbo", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "subscription", + "model": "glm-5-turbo", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "api_key", + "model": "glm-5.1", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + }, + { + "provider": "z-ai", + "authType": "subscription", + "model": "glm-5.1", + "params": [ + { + "path": "max_tokens", + "label": "Max tokens", + "description": "Maximum number of tokens to generate in the response.", + "group": "generation_length", + "type": "integer", + "range": { + "min": 1 + } + }, + { + "path": "temperature", + "label": "Temperature", + "description": "Controls randomness. Lower values make outputs more focused; higher values make them more varied.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 1, + "range": { + "min": 0, + "max": 1, + "step": 0.1 + } + }, + { + "path": "top_p", + "label": "Top P", + "description": "Controls nucleus sampling by limiting generation to tokens within the selected cumulative probability.", + "group": "sampling", + "applicability": { + "except": { + "do_sample": false + } + }, + "type": "number", + "default": 0.95, + "range": { + "min": 0.01, + "max": 1, + "step": 0.01 + } + }, + { + "path": "do_sample", + "label": "Do sample", + "description": "When false, the model uses greedy decoding and ignores temperature and top_p.", + "group": "sampling", + "type": "boolean", + "default": true + }, + { + "path": "thinking.type", + "label": "Thinking mode", + "description": "Toggles the model's extended reasoning before it produces the final answer.", + "group": "reasoning", + "type": "enum", + "default": "enabled", + "values": [ + "enabled", + "disabled" + ] + }, + { + "path": "response_format.type", + "label": "Response format", + "description": "Forces the response into plain text or a JSON object.", + "group": "output_format", + "type": "enum", + "default": "text", + "values": [ + "text", + "json_object" + ] + } + ] + } ] as const; export type CatalogEntry = (typeof CATALOG)[number]; @@ -13151,5 +13871,7 @@ function authSuffix(authType: CatalogEntry["authType"]): "" | "-subscription" { } export const BY_ID: Readonly> = Object.freeze( - Object.fromEntries(CATALOG.map((m) => [`${m.provider}/${m.model}${authSuffix(m.authType)}`, m])), + Object.fromEntries( + CATALOG.map((m) => [`${m.provider}/${m.model}${authSuffix(m.authType)}`, m]), + ), ) as Readonly>; diff --git a/packages/modelparams/src/generated/model-ids.ts b/packages/modelparams/src/generated/model-ids.ts index 6d1c1d1..6ce0b76 100644 --- a/packages/modelparams/src/generated/model-ids.ts +++ b/packages/modelparams/src/generated/model-ids.ts @@ -175,7 +175,7 @@ export const MODEL_IDS = [ "z-ai/glm-5-turbo", "z-ai/glm-5-turbo-subscription", "z-ai/glm-5.1", - "z-ai/glm-5.1-subscription", + "z-ai/glm-5.1-subscription" ] as const; export type ModelId = (typeof MODEL_IDS)[number]; @@ -193,7 +193,7 @@ export const PROVIDERS = [ "openai", "perplexity", "xai", - "z-ai", + "z-ai" ] as const; export type Provider = (typeof PROVIDERS)[number];