Model API · v1

归属于你的 环境的模型推理。

使用环境绑定的 Runtime Key、由 Anyhost 管理的模型目录、协议原生流式响应和精确的 Model Credit 结算。

一个资源每个项目环境一个
三种协议Chat、Responses、Messages
不存储提示词内容不进入账本
精确结算美元成本与 Model Credits

Quickstart

创建一次,部署时注入。

为明确指定的环境创建 Model API 资源。运行命令前请确认生产环境操作; model create 不使用 --yes.

anyhost model create -e dev
anyhost model status -e dev
anyhost deploy -e dev
anyhost model test -e dev --model openai/gpt-5-mini

就绪的资源会注入以下服务端运行时变量:

ANYHOST_MODEL_API_KEY
ANYHOST_MODEL_API_BASE_URL
ANYHOST_MODEL_API_RESOURCE_ID

当前 Model API Base URL 是公开地址,且已包含 /v1:

https://models.anyhostcloud.com/v1

Use ANYHOST_MODEL_API_BASE_URL ,以便应用代码在不同部署环境中使用平台管理的值。CLI 永远不会打印 Runtime Key,也不得将其放入源码、日志、浏览器包或带服务商名称的变量中。

anyhost model test 运行固定、小规模且计量的探测请求。它接受目录模型 ID,但不接受任意提示词,只返回生成与结算状态。

轮换采用有界的两阶段重叠:先运行 anyhost model rotate-key -e dev,部署并验证一次真实模型请求,然后使用以下参数再次运行命令 --finalize。最终确认前,必须完成轮换后的成功部署并观察到新密钥被使用,之后才能撤销旧密钥。

Catalog

选择已发布的目录模型 ID。

认证后的模型目录是模型身份、生命周期、协议、能力、上下文长度、输出限制和客户参考价格上限的权威来源。模型 ID 和展示名称保留已发布的开发者与模型身份,方便用户找到目标模型。每个 customer_prices 条目都包含精确的小数 price, currency, unit,以及 kind: ceiling。新的活跃模型会自动对所有就绪资源可用,无需逐个编辑资源。

curl -sS "https://models.anyhostcloud.com/v1/models" \
  -H "Authorization: Bearer $ANYHOST_MODEL_API_KEY"

发送目录返回的准确 data[].id;不要根据显示名称推导 ID。已暂停模型仍然可见,但暂时不可用;已弃用模型包含替代项和停止时间。Catalog 不公开实际服务 Provider、endpoint、私有账户成本或 adapter 实现。

无需 Runtime Key 浏览同一份当前 publication →

Inference

使用应用所需的协议。

GET  https://models.anyhostcloud.com/v1/models
POST https://models.anyhostcloud.com/v1/chat/completions
POST https://models.anyhostcloud.com/v1/responses
POST https://models.anyhostcloud.com/v1/messages
GET  https://models.anyhostcloud.com/v1/generation/{generation_id}

所有调用都使用 Authorization: Bearer <ANYHOST_MODEL_API_KEY>。Messages 使用相同的 Bearer 契约,不要求 anthropic-version.

curl -sS "https://models.anyhostcloud.com/v1/chat/completions" \
  -H "Authorization: Bearer $ANYHOST_MODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "'"$MODEL_ID"'",
    "messages": [{"role":"user","content":"Hello"}]
  }'

当前 adapter 会透明转发不由 Anyhost 管理的参数,包括调用方选择的 provider 偏好、采样控制、推理、工具、结构化输出、模态、插件和服务端工具字段。必填的 model 是顶层准确的 Anyhost Catalog Model ID;与它同级的可选 provider 对象只控制能服务该模型的 Provider 之间的路由。Anyhost 不会注入统一输出 token 上限,也不会覆盖你的 Provider 顺序。实时 router 与所选 endpoint 在请求时做最终支持判断。

Anyhost 会拒绝通过以下字段启用的跨模型 fallback: models/fallbacks,以及通过以下字段启用的存储续接: previous_response_id 或已存储的 prompt, background: true,以及 store: true。这些控制与单一请求 Model ID、单一 Generation 和无内容存储语义冲突。 阅读完整参数边界 →

公开的 Anyhost OpenAPI 是 Chat Completions、Responses 和 Messages 的权威请求约定。请使用协议结构确定字段类型和嵌套对象形状,并使用各模型页面查看该模型的 supported_parameters set.

JSON 请求体最大为 50 MiB。更大的请求体会返回 413 request_too_large ,并在推理前终止。

Streaming

使用原生 SSE,无需等待计费。

Set stream: true 并按顺序处理协议事件。Anyhost 不会为了结算而缓冲完整输出。每个已受理的响应都包含 x-anyhost-generation-id;同一个公开 ID 会替代私有响应 ID。

用量与结算

100 Model Credits 代表 1 美元。

最终用量对象以十进制字符串报告客户费用:

{
  "cost": "0.0015",
  "credits": "0.15",
  "settlement_status": "settled"
}

如果结算仍在处理中, cost 和 credits 为 null。请查询 GET /generation/{generation_id} 并使用同一资源密钥。不要在应用代码中根据 token 数估算最终客户费用。

资源预算独立于工作区余额:

anyhost model budget -e dev --credits 500 --period monthly
anyhost model budget -e dev --clear

错误与重试

重试由调用方决定。

Chat Completions 和 Responses 使用 OpenAI 形状的错误对象;Messages 使用 Messages 形状的错误对象。请根据 HTTP 状态和稳定的 error.code进行分支判断,而不是错误文本。

Anyhost 绝不会自动重发推理请求。调用方重试会创建新的生成记录,可能产生不同输出和另一笔费用。请保留安全的 Retry-After 证据(如有),并让产品重试保持明确。

隐私边界

生成记录包含用量,不包含内容。

Anyhost 不持久化模型输入或输出。生成记录只包含资源归属、生命周期、不含内容的 token 与缓存用量、费用、时间戳和安全错误。