归属于你的 环境的模型推理。
使用环境绑定的 Runtime Key、由 Anyhost 管理的模型目录、协议原生流式响应和精确的 Model Credit 结算。
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 实现。
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 与缓存用量、费用、时间戳和安全错误。