Files
9router/open-sse/providers/registry/openai.js
Minh Ha 5c217d34f3 feat(capabilities): model capability metadata on /v1/models, combo aggregation, pattern fixes
- Export aggregateComboCapabilities: union for vision/audio/search/pdf,
  intersection for tools, primary-model for reasoning fields, min
  contextWindow, max maxOutput
- Support nested combo resolution in aggregateComboCapabilities via
  comboLookup with depth guard (max 6)
- Wire capability metadata to all /v1/models entries and combos
- Show aggregated ctx/max metadata line and capability badges on combo chips
- Pattern fixes: MiMo v2.5/omni reasoning, qwen max/plus vision, minimax m2.x vision
- Sync commandcode model catalog and add openai gpt-5.5
- Add unit tests for capability patterns and combo capability aggregation
2026-09-21 19:41:29 +07:00

86 lines
3.6 KiB
JavaScript

export default {
id: "openai",
priority: 30,
alias: "openai",
display: {
name: "OpenAI",
icon: "auto_awesome",
color: "#10A37F",
textIcon: "OA",
website: "https://platform.openai.com",
notice: {
apiKeyUrl: "https://platform.openai.com/api-keys",
},
},
category: "apikey",
thinkingConfig: {
options: [
"auto",
"none",
"low",
"medium",
"high",
],
defaultMode: "auto",
},
transport: {
baseUrl: "https://api.openai.com/v1/chat/completions",
forceStream: true,
},
models: [
{ id: "gpt-5.5", name: "GPT-5.5" },
{ id: "gpt-5.4", name: "GPT-5.4" },
{ id: "gpt-5.4-mini", name: "GPT-5.4 Mini" },
{ id: "gpt-5.4-nano", name: "GPT-5.4 Nano" },
{ id: "gpt-5.2", name: "GPT-5.2" },
{ id: "gpt-5.1", name: "GPT-5.1" },
{ id: "gpt-5", name: "GPT-5" },
{ id: "gpt-5-mini", name: "GPT-5 Mini" },
{ id: "gpt-5-nano", name: "GPT-5 Nano" },
{ id: "gpt-4o", name: "GPT-4o" },
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
{ id: "gpt-4-turbo", name: "GPT-4 Turbo" },
{ id: "gpt-4.1", name: "GPT-4.1" },
{ id: "gpt-4.1-mini", name: "GPT-4.1 Mini" },
{ id: "gpt-4.1-nano", name: "GPT-4.1 Nano" },
{ id: "o3", name: "O3" },
{ id: "o3-mini", name: "O3 Mini" },
{ id: "o3-pro", name: "O3 Pro" },
{ id: "o4-mini", name: "O4 Mini" },
{ id: "o1", name: "O1" },
{ id: "o1-mini", name: "O1 Mini" },
{ id: "text-embedding-3-large", name: "Text Embedding 3 Large", kind: "embedding" },
{ id: "text-embedding-3-small", name: "Text Embedding 3 Small", kind: "embedding" },
{ id: "text-embedding-ada-002", name: "Text Embedding Ada 002", kind: "embedding" },
{ id: "tts-1", name: "TTS-1", kind: "tts" },
{ id: "tts-1-hd", name: "TTS-1 HD", kind: "tts" },
{ id: "gpt-4o-mini-tts", name: "GPT-4o Mini TTS", kind: "tts" },
{ id: "whisper-1", name: "Whisper 1", params: ["language","response_format","temperature","prompt"], kind: "stt" },
{ id: "gpt-4o-transcribe", name: "GPT-4o Transcribe", params: ["language","response_format","temperature","prompt"], kind: "stt" },
{ id: "gpt-4o-mini-transcribe", name: "GPT-4o Mini Transcribe", params: ["language","response_format","temperature","prompt"], kind: "stt" },
{ id: "gpt-image-2.5", name: "GPT Image 2.5", params: ["n","size","quality","response_format"], kind: "image" },
{ id: "gpt-image-2.5-flare", name: "GPT Image 2.5 Flare", params: ["n","size","quality","response_format"], kind: "image" },
{ id: "gpt-image-2.5-sunburst", name: "GPT Image 2.5 Sunburst", params: ["n","size","quality","response_format"], kind: "image" },
{ id: "gpt-image-1", name: "GPT Image 1", params: ["n","size","quality","response_format"], kind: "image" },
{ id: "dall-e-3", name: "DALL-E 3", params: ["size","quality","style","response_format"], kind: "image" },
{ id: "dall-e-2", name: "DALL-E 2", params: ["n","size","response_format"], kind: "image" },
],
serviceKinds: ["llm","embedding","tts","stt","image","imageToText","webSearch"],
ttsConfig: {
baseUrl: "https://api.openai.com/v1/audio/speech",
authType: "apikey",
authHeader: "bearer",
format: "openai",
defaultModel: "gpt-4o-mini-tts",
},
sttConfig: {
baseUrl: "https://api.openai.com/v1/audio/transcriptions",
authType: "apikey",
authHeader: "bearer",
format: "openai",
},
embeddingConfig: { baseUrl: "https://api.openai.com/v1/embeddings", authType: "apikey", authHeader: "bearer" },
imageConfig: { baseUrl: "https://api.openai.com/v1/images/generations" },
searchViaChat: { defaultModel: "gpt-4o-mini", pricingUrl: "https://openai.com/api/pricing" },
};