Skip to content

List Models

列出当前网关可用的模型资产目录。若未显式指定 provider 过滤参数,系统将汇总聚合所有已接入供应商的可用模型;当请求携带虚拟密钥(Authorization: Bearer sk-bf-*x-bf-vk)时,网关将遵循最小权限管控策略,仅返回且仅探测该虚拟密钥被授权访问的模型列表

GET/v1/models

请求头 (Headers)

Authorizationstringheader
Bearer Token 鉴权凭证。推荐方式,支持传入 OmniCortex 虚拟密钥(以 sk-bf- 开头)或授权的管理凭据。
x-api-keystringheader
通过请求头传递 API 密钥。同样支持直接传入 OmniCortex 虚拟密钥。
x-bf-vkstringheader
OmniCortex 虚拟密钥专属请求头,用于精细化配额控制与模型可见性隔离。

查询参数 (Query Parameters)

providerstringquery
按模型供应商代码进行精准过滤。例如 openaianthropicdeepseekbedrockgemini 等。缺省时返回全量供应商模型。
page_sizeintegerquerydefault: 50
单页返回的最大模型记录条数。
page_tokenstringquery
分页游标令牌。用于在多页遍历时传入上一页返回的 next_page_token

响应模型核心字段 (Response Model Fields)

idstringbodyrequired
网关统一路由命名空间下的模型全局唯一标识符,格式为 provider/model(例如 openai/gpt-4odeepseek/deepseek-chatanthropic/claude-3-7-sonnet)。
namestringbody
模型显示名称或供应商原始标识。
context_lengthintegerbody
模型支持的最大上下文窗口总 token 长度(包含输入与输出)。
max_input_tokensintegerbody
单次请求允许输入的最大 prompt token 上限。
max_output_tokensintegerbody
单次推理允许生成的最大 completion token 上限。
architectureobjectbody
模型的多模态输入输出能力描述:
  • input_modalities: 支持的输入模态列表,例如 ["text"]["text", "image", "audio"]
  • output_modalities: 支持的输出模态列表,例如 ["text"]
pricingobjectbody
企业标准定价或核算中心覆盖的费率策略(包含输入、输出、推理思考及提示词缓存读写价格)。
reasoningobjectbody
深度思考推理能力标识:
  • mandatory (boolean): 是否强制开启思考模式。
  • supported_efforts (array): 支持的推理强度档位列表(如 ["low", "medium", "high"])。
List Models
HTTP / SDK
bash
curl --request GET \
  --url 'http://localhost:8080/v1/models?provider=deepseek' \
  --header 'Authorization: Bearer sk-bf-your-virtual-key'
python
from openai import OpenAI

# 全面兼容 OpenAI SDK 标准 models.list() 接口
client = OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="sk-bf-your-virtual-key"
)

# 仅返回该虚拟密钥具有访问权限的模型
models = client.models.list()

for model in models:
    print(f"Model ID: {model.id}, Owned by: {model.owned_by if hasattr(model, 'owned_by') else 'N/A'}")
typescript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'http://localhost:8080/v1',
  apiKey: 'sk-bf-your-virtual-key',
});

async function main() {
  const models = await client.models.list();
  console.log(models.data.map(m => m.id));
}

main();
Response
json
{
  "data": [
    {
      "id": "deepseek/deepseek-chat",
      "name": "deepseek-chat",
      "canonical_slug": "deepseek-v3",
      "normalized_name": "DeepSeek-V3",
      "created": 1726915200,
      "context_length": 65536,
      "max_input_tokens": 65536,
      "max_output_tokens": 8192,
      "architecture": {
        "modality": "text->text",
        "tokenizer": "deepseek",
        "input_modalities": ["text"],
        "output_modalities": ["text"]
      },
      "pricing": {
        "prompt": "0.00000014",
        "completion": "0.00000028",
        "input_cache_read": "0.000000014"
      },
      "supported_parameters": [
        "temperature",
        "top_p",
        "max_tokens",
        "stream",
        "tools",
        "tool_choice"
      ]
    },
    {
      "id": "deepseek/deepseek-reasoner",
      "name": "deepseek-reasoner",
      "canonical_slug": "deepseek-r1",
      "normalized_name": "DeepSeek-R1",
      "created": 1726915200,
      "context_length": 65536,
      "max_input_tokens": 65536,
      "max_output_tokens": 8192,
      "architecture": {
        "modality": "text->text",
        "tokenizer": "deepseek",
        "input_modalities": ["text"],
        "output_modalities": ["text"]
      },
      "reasoning": {
        "mandatory": true,
        "default_enabled": true
      },
      "supported_parameters": [
        "temperature",
        "stream",
        "max_tokens"
      ]
    }
  ],
  "next_page_token": null,
  "extra_fields": {
    "request_type": "list_models",
    "latency": 12
  }
}