请求约定
Anyhost 不维护一份冻结的上游参数白名单。
对于当前透明 adapter,Anyhost 不管理的字段会按原 JSON 类型和值转发。即使 Anyhost 文档尚未列出,新发布的采样、推理、工具、模态、Provider 偏好和协议字段也包括在内。
model 为必填项,内部会替换为匹配且已审核的 route。公开响应仍显示你请求的 Anyhost Catalog Model ID。Anyhost 不会静默添加 max_tokens,不会更改采样值,也不会覆盖调用方选择的 Provider 偏好。
约定层级
从外向内理解请求。
协议字段描述有效 JSON。模型元数据把范围缩小到某个 Model ID 声明的能力。所选 Provider endpoint 做出最终的实时支持判断。Anyhost 只管理最外层的平台边界。
协议请求字段
类型与结构遵循已发布的 Anyhost 约定。
选择一个协议,复制准确的 Anyhost Catalog Model ID,并使用该协议的请求结构。以下对象字段会保留其上游 JSON 结构: provider, reasoning, tools, plugins,以及结构化输出都会保留其上游 JSON 结构。
平台边界
只拒绝会破坏单一 Generation 语义的已启用控制项。
| Field | 已发布行为 | Why |
|---|---|---|
models, fallbacks | 必须缺失、为 null、false 或空值 | 一个 Anyhost Generation 只有一个请求的 Catalog Model ID。 |
previous_response_id | 必须缺失、为 null、false 或空值 | Anyhost 不公开已存储响应续接能力。 |
prompt | 必须缺失、为 null、false 或空值 | Anyhost 不公开已存储 Prompt 引用。 |
background | true 会被拒绝; false 允许 | 已发布的请求生命周期是同步 JSON 或 SSE。 |
store | true 会被拒绝; false 允许 | Model API 不持久化 Prompt 或响应内容。 |
SDK 可以序列化未启用的可选值,例如 null, false、空字符串或空数组,而不会被拒绝。Anyhost 可以在不削弱此边界的情况下接入未来 adapter;新 adapter 在其透明约定通过审核前默认采用严格模式。
Provider 路由
Provider 偏好仍由调用方控制。
当前 adapter 会转发 provider 对象,而不是用 Catalog snapshot 覆盖它。你可以使用上游路由约定选择 Provider 顺序、启用或关闭 Provider fallback、要求参数支持、筛选 Provider、按价格/吞吐/延迟排序、请求隐私属性或设置上游最高价格。
model 不属于 provider. 请把必填且准确的 Anyhost Catalog Model ID 放在顶层;从经过鉴权的 GET /models 或者使用 公开模型浏览器复制。可选的顶层 provider 对象只会在能服务同一模型的合格 endpoint 之间选择;它不能替换模型,也不能选择第二个模型。因此, provider.allow_fallbacks 可以使用,因为它只在同一模型的 Provider 之间 fallback;而已启用的顶层 models or fallbacks 会被拒绝,因为它们请求的是跨模型 fallback。{
"model": "meta-llama/llama-3.3-70b-instruct",
"messages": [{"role": "user", "content": "Hello"}],
"provider": {
"sort": "throughput",
"allow_fallbacks": true,
"require_parameters": true
}
}
provider field | 类型 / 值 | 路由效果 |
|---|---|---|
order | Provider slug 数组 | 按指定顺序尝试合格的 Provider。 |
only | Provider slug 数组 | 本次请求只允许列出的 Provider。 |
ignore | Provider slug 数组 | 本次请求排除列出的 Provider。 |
allow_fallbacks | 布尔值;默认为 true | 当第一个合格 Provider 不可用时,允许另一个 Provider 服务同一个顶层 model. |
require_parameters | 布尔值;默认为 false | 只使用支持全部已提供模型参数的 endpoint,不允许忽略不支持的参数。 |
sort | 字符串或 { "by", "partition" } | 按已发布的价格、吞吐量、延迟或其他当前排序策略排列合格 endpoint。 |
quantizations | 量化格式数组 | 按以下值筛选 endpoint,例如 int4, int8, fp8, fp16或 bf16. |
data_collection | "allow" or "deny";默认为 "allow" | 选择可能收集请求数据的 endpoint 是否合格。Anyhost 不会覆盖该值。 |
zdr | Boolean | When true时,只使用零数据保留(ZDR)endpoint。 |
enforce_distillable_text | Boolean | When true时,只使用作者允许文本蒸馏的模型。 |
max_price | 对象,包含 prompt, completion, request, image或 audio | 拒绝价格超过所提供单次请求上限的 endpoint。 |
preferred_min_throughput | 数字或百分位对象 | 优先选择达到每秒 token 阈值的 endpoint;更慢的 endpoint 仍可作为 fallback。 |
preferred_max_latency | 数字或百分位对象 | 优先选择达到指定秒数延迟阈值的 endpoint;更慢的 endpoint 仍可作为 fallback。 |
Provider slug 的拼写以及以下字段的嵌套结构: sort, max_price和百分位阈值,均发布在当前 Anyhost OpenAPI 的 provider 请求结构中。如果实时路由约定在本文档列出前新增字段,请以 OpenAPI 为准。
这些字段会影响实时路由,但不会改变 Anyhost 的公开 Model ID、Resource、Generation、客户价格策略或结算。Provider 偏好可能缩小可用 endpoint 集合,即使模型仍为 active,也可能导致请求失败。当不能接受所请求的模型参数被静默忽略时,请设置 provider.require_parameters: true ,以免静默忽略所请求的模型参数。
Generation 控制
采样与输出长度由调用方决定。
常见控制项,例如 temperature, top_p, top_k, min_p, frequency_penalty, presence_penalty, repetition_penalty, seed, stop, logprobs, max_tokens, max_completion_tokens,以及 max_output_tokens ,在提供时会被转发。
Anyhost 不提供隐藏的输出 token 默认值。如果省略参数,则使用实时模型/router 默认值。如果设置输出长度,实时 Provider 路由会决定哪些 endpoint 能满足它。当 Catalog 有证据支持 Provider 级完成长度上限时,会将该值发布为 max_output_tokens ,但不会把它注入请求;没有已发布的上限时,Anyhost 会省略该 Catalog 字段。
推理控制项,例如 reasoning, reasoning_effort, include_reasoning, thinking,以及 verbosity ,仍取决于协议和模型。
内容、工具与输出
保留每个协议的原生请求结构。
Chat Completions 和 Messages 使用 messages;Responses 使用 input ,并且可以使用 instructions。文本、图片、音频、文件和视频部分会按所选协议的已发布结构转发。模型页面公开当前 Catalog 模态元数据,但实时 route 支持仍是最终依据。
tools, tool_choice、并行工具控制、以下结构化输出字段: response_format or text.format、流式选项以及 server-tool/plugin 字段都是透明参数。Anyhost 不执行它们;实时 adapter 会处理或拒绝。
Set stream: true 以使用原生 SSE。Anyhost 保留事件顺序,并公开 x-anyhost-generation-id 。该值会在准入后出现。
传输与安全限制
大请求最高可达 50 MiB。
- JSON 请求体限制为 50 MiB(上限) (52,428,800 字节)。更大的请求返回
413 request_too_large,并在推理前终止。 - 非流式上游 JSON 响应限制为 64 MiB(上限)。该限制用于保护 Server 内存,不限制 SSE 流持续时间。
- 负载均衡器空闲超时为 600 秒。如果连接在此期间没有任何网络数据,可能会关闭;正常 SSE 事件会保持连接活跃。
- 请求必须恰好是一个 JSON 对象,并包含非空字符串
model.
这些是传输和身份保护,不是模型创造力限制。Credits、Resource budget、Runtime Key 有效性、Resource 生命周期、模型生命周期和协议归属是独立准入检查。