a789495a98
FreeBSD Smoke / FreeBSD Smoke (x86_64) (push) Has been cancelled
CI / Quality Guardrails (push) Has been cancelled
CI / Build & Test (macos-latest) (push) Has been cancelled
CI / Build & Test (ubuntu-latest) (push) Has been cancelled
CI / Build & Test (windows-latest) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / PowerShell Syntax (push) Has been cancelled
CI / Windows Cross-Target Check (Linux) (push) Has been cancelled
62 lines
5.9 KiB
Markdown
62 lines
5.9 KiB
Markdown
# OpenAI-compatible provider `/models` audit
|
|
|
|
Scope: built-in `OpenAiCompatibleProfile` entries in `crates/jcode-provider-metadata/src/lib.rs`.
|
|
|
|
Legend:
|
|
- `verified data[]`: docs show or explicitly reference OpenAI-compatible `GET /models` shape `{ object: "list", data: [...] }`, or the provider says it implements the OpenAI Models API.
|
|
- `verified top-level array`: docs show a top-level model array.
|
|
- `supported endpoint, shape not shown`: docs say `/models` exists or OpenAI compatibility includes it, but do not show the response body.
|
|
- `catalog/static only`: docs point to a static catalog/models page, not a live `/models` endpoint.
|
|
- `unknown`: could not find provider docs proving `/models`.
|
|
|
|
## Audited providers
|
|
|
|
| Provider | Evidence | Expected parser support | Notes |
|
|
|---|---|---:|---|
|
|
| OpenCode Zen | OpenCode docs and models.dev catalog | static/bootstrap, endpoint unverified | OpenCode itself uses models.dev. `/models` on Zen not independently verified. |
|
|
| OpenCode Go | OpenCode docs and models.dev catalog | static/bootstrap, endpoint unverified | Same as Zen. |
|
|
| Z.AI | Search did not find `/models`; provider docs URL 404 from current metadata path | unknown | Need direct current docs URL or live key-backed test. |
|
|
| Kimi Code | Kimi third-party-agent docs found, OpenAI Compatible config only | unknown | No `/models` response shape found. |
|
|
| 302.AI | Official docs contain `Models(列出模型)GET` page | likely OpenAI-compatible data[] | Dedicated list-models page exists. Response body in fetched text was truncated before example. |
|
|
| Baseten | Official docs say public OpenAI-compatible endpoint `https://inference.baseten.co/v1` | supported endpoint, shape not shown | No dedicated `/models` response found. |
|
|
| Cortecs | Official docs overview only plus OpenCode provider entry | catalog/static only | No `/models` endpoint docs found. |
|
|
| DeepSeek | Official `GET /models` docs show `{ object, data[] }` | verified data[] | Covered by parser. |
|
|
| Comtegra | Official docs list supported `/v1/models` linking OpenAI Models API | supported endpoint, shape OpenAI | Covered by parser. |
|
|
| FPT AI Marketplace | Official docs show chat/completions through LiteLLM/OpenAI, no models endpoint | unknown/no evidence | Live `/models` may fail. |
|
|
| Firmware/FrogBot | OpenCode provider docs only | catalog/static only | No direct provider API docs found. |
|
|
| Hugging Face | General Inference Providers docs, OpenAI-compatible API | supported endpoint, shape not shown | No dedicated `/models` page verified. |
|
|
| Moonshot AI | Search/current URL did not expose `/models` docs | unknown | Kimi API search hints model list endpoint, but no official Moonshot page fetched. |
|
|
| Nebius | Quickstart docs OpenAI-compatible endpoint | supported endpoint, shape not shown | Dedicated `/models` page not verified. |
|
|
| Scaleway | Official “Using Models API” docs found | supported endpoint, shape likely OpenAI | Covered by parser if OpenAI shape. |
|
|
| STACKIT | Official integration docs say OpenAI-compatible API and model picker fetches `/models` | supported endpoint, shape not shown | Covered if OpenAI shape. |
|
|
| Groq | API reference has Models/List models | verified data[] | Covered. |
|
|
| Mistral | API reference has Models/List Available Models | verified data[] style | Covered. |
|
|
| Perplexity | API docs fetch/search did not find list-models endpoint | unknown | May not support `/models`; static docs list models. |
|
|
| Together AI | Official `GET /models` docs show top-level array | verified top-level array | Parser was fixed for this. |
|
|
| DeepInfra | Official OpenAI-compatible docs point to static model catalog, no `/models` page found | catalog/static only | Live `/models` unverified. |
|
|
| Fireworks | Official list-models docs found for account model API `{ models: [...] }`; OpenAI compat endpoint also exists | verified models[] variant for account API | Parser supports `models[]` and `name`. Need live base endpoint shape still unverified. |
|
|
| MiniMax | Official text generation docs show OpenAI-compatible base and static supported-models table | catalog/static only | No `/models` endpoint found. |
|
|
| xAI | API reference includes Models section | verified data[] likely | Covered. |
|
|
| LM Studio | Official OpenAI compatibility docs list `GET /v1/models` | supported endpoint, shape not shown | OpenAI local server expected data[]. |
|
|
| Ollama | Official OpenAI compatibility blog/docs cover chat; `/v1/models` docs not found in fetched page | unknown | Need raw docs/source or live local test. |
|
|
| Chutes | Live user response showed `{ object:"list", data:[...] }` with numeric pricing | verified data[] plus numeric pricing | Parser fixed and stale default removed. |
|
|
| Cerebras | Official `GET /v1/models` docs show `{ object, data[] }` | verified data[] | Covered. |
|
|
| Alibaba Coding Plan | Official docs show OpenAI-compatible base URL but warn Coding Plan is for coding tools only; no `/models` docs | unknown/no evidence | Static default likely needed; live `/models` may fail. |
|
|
| Generic openai-compatible | User-supplied endpoint | parser contract | We support `{data[]}`, top-level array, `{models[]}`, id/name identifiers. |
|
|
|
|
## Parser coverage after `f291f0e`
|
|
|
|
Supported response forms:
|
|
- `{ "data": [{ "id": "..." }] }`
|
|
- top-level `[{ "id": "..." }]`
|
|
- `{ "models": [{ "id" or "name": "..." }] }`
|
|
- numeric or string pricing fields
|
|
- context fields: `context_length`, `contextLength`, `max_context_length`, `maxModelLength`, `max_model_len`, `trainingContextLength`
|
|
|
|
## Gaps identified
|
|
|
|
No additional parser shape is proven necessary yet. The remaining issue is provider capability/profile accuracy:
|
|
- Some providers are OpenAI-compatible for chat but do not document live `GET /models`.
|
|
- For those, live catalog refresh should remain best-effort and must gracefully fall back to static catalog.
|
|
- Long-term, `OpenAiCompatibleProfile` should probably carry a `model_catalog` capability/strategy so providers known not to support `/models` do not emit noisy refresh failures.
|