一、概述
POST /v1/rerank
| 请求形式 | 查询内容 query | 候选列表 documents |
| 文本重排 | 一段文本 | 多段文本 |
| 图片查询 | 一张图片 | 文本、图片或视频候选 |
| 视频查询 | 一个视频 | 文本、图片或视频候选 |
| 混合候选重排 | 文本、图片或视频 | 包含不同内容类型的候选列表 |
图片、视频和混合候选是否可用,以所选模型的支持情况为准。每次请求只提供一份查询,每条候选只包含一段文本、一张图片或一个视频。
二、前提条件
1. 建议提前阅读 使用约束 与 支持的模型提供商 了解相关信息。
2. 已创建模型路由实例,详细操作指导请参见 创建模型路由实例。
3. 已创建 BYOK 实例,详细操作指导请参见 创建 BYOK 实例。
4. 已创建模型路由访问密钥(API Key),详细操作指导请参见 创建模型路由访问密钥。
5. 已完成重排序模型关联和模型路由策略配置,详细操作指导请参见 配置模型调度管理。
四、请求地址
POST {CMR_BASE_URL}/v1/rerank
CMR_BASE_URL 为控制台展示的实例访问地址。请求使用 CMR 模型名称和 CMR API Key,无需填写厂商的接口地址或 API Key。
五、请求头
| Header | 必填 | 说明 |
| Authorization | 是 | Bearer <CMR_API_KEY> |
| Content-Type | 是 | 固定为 application/json |
六、快速开始
将示例中的访问地址、API Key 和模型名称替换为自己的配置。
七、cURL
curl –request POST "${CMR_BASE_URL}/v1/rerank" \\ –header "Authorization: Bearer ${CMR_API_KEY}" \\ –header "Content-Type: application/json" \\ –data '{ "model": "cmr-text-rerank", "query": "如何安装产品?", "documents": [ "产品退款规则。", "先固定底座,再连接电源。" ] }'
八、Python
import osimport requestsdocuments = [ "产品退款规则。", "先固定底座,再连接电源。",]response = requests.post( f"{os.environ['CMR_BASE_URL']}/v1/rerank", headers={ "Authorization": f"Bearer {os.environ['CMR_API_KEY']}", "Content-Type": "application/json", }, json={ "model": "cmr-text-rerank", "query": "如何安装产品?", "documents": documents, }, timeout=30,)response.raise_for_status()for item in response.json()["results"]: print(item["relevance_score"], documents[item["index"]])
十、基本请求参数
| 参数 | 类型 | 必填 | 说明 |
| model | string | 是 | CMR 模型名称或模型别名,可用值以控制台关联模型为准 |
| query | string | object | 是 | 本次查询。文本填字符串,图片填 {"image":"…"},视频填 {"video":"…"} |
| documents | array | 是 | 待排序的候选列表。每项可以是文本字符串、图片对象或视频对象 |
| top_n | integer | 否 | 请求返回相关性最高的前 N 条。取值范围和未填写时的行为以所选模型为准 |
| return_documents | boolean | 否 | 是否请求模型返回候选内容。实际是否返回,取决于模型 |
| instruct | string | 否 | 排序要求,例如“优先选择提供具体安装步骤的内容” |
选填参数是否生效取决于所选模型。未填写的选填参数,CMR 不自动补默认值。
十一、文本输入
query 和文本候选直接填写字符串,最简请求见快速开始。下面演示所选模型支持时,如何添加选填参数来限制结果数量、请求返回候选内容和指定排序要求:
{ "model": "cmr-text-rerank", "query": "如何安装产品?", "documents": [ "产品退款规则。", "先固定底座,再连接电源。" ], "top_n": 1, "return_documents": true, "instruct": "优先选择提供具体安装步骤的内容。"}
十二、图片和视频输入
| 内容 | 填写格式 | 可填写的位置 |
| 文本 | "安装步骤" | query 或 documents[] |
| 图片 | {"image":"图片 URL 或 Data URI"} | query 或 documents[] |
| 视频 | {"video":"视频 URL"} | query 或 documents[] |
图片查询与混合候选示例:
{ "model": "cmr-multimodal-rerank", "query": {"image": "https://example.com/product.png"}, "documents": [ "产品退款规则。", "先固定底座,再连接电源。", {"image": "https://example.com/manual.png"}, {"video": "https://example.com/tutorial.mp4"} ]}
使用视频查询时,将 query 改为:
{"video": "https://example.com/question.mp4"}
媒体地址和内容格式需符合所选模型的要求;视频查询的可用性和效果也需按模型确认。直接填写 URL 字符串会被当作文本,图片和视频请使用表中的对象格式。
十三、Provider 自定义请求参数
CMR 实例默认开启参数转换,并默认透传厂商自定义参数。按厂商要求将参数放入请求即可,无需逐个配置放行;如果实例已配置参数过滤规则,则按该规则处理。例如,所选模型支持 return_raw_scores 时,可以这样请求:
{ "model": "cmr-text-rerank", "query": "如何安装产品?", "documents": ["产品退款规则。", "先固定底座,再连接电源。"], "return_raw_scores": true}
如需设置默认值、修改参数值或过滤字段,可在目标 CMR 实例的参数转换配置中设置规则。通过管理 API 配置时,使用 CreateParamTranslationConfig 保存、TestParamTranslationConfig 预览;Rerank 规则的端点填写 rerank。自定义参数的名称、填写层级和取值以厂商说明为准。更换模型或厂商后,请确认这些参数仍然适用。
十五、基本响应参数
| 参数 | 类型 | 是否一定返回 | 说明 |
| id | string | 是 | 本次请求的标识 |
| created | integer | 是 | 响应创建时间,Unix 时间戳,单位为秒 |
| object | string | 是 | 固定为 list |
| model | string | 是 | 本次实际调用成功的 CMR 逻辑模型名称 |
| results | object[] | 是 | 重排结果列表 |
| usage | object | 否 | 模型返回的用量信息;未提供时不返回 |
十六、响应结果
| 参数 | 类型 | 是否一定返回 | 说明 |
| results[].index | integer | 是 | 候选在请求 documents 中的下标,从 0 开始,不是排序后的名次 |
| results[].relevance_score | number | 是 | 模型给出的相关性分数 |
| results[].document | string | object | 否 | 模型返回的候选内容:文本为字符串,图片为 {"image":"…"},视频为 {"video":"…"} |
CMR 保留模型返回的顺序和分数。不同模型的分数不一定可直接比较,也不应将分数当作概率。document 是否出现,以模型实际返回为准;即使设置 return_documents=true,也可能不返回。需要原始候选时,可用 index 查找请求中的 documents[index]。
十七、Provider 自定义响应参数
除上述标准响应字段外,CMR 也会透传厂商实际返回的自定义字段,例如 request_id、结果项或用量信息中的附加字段,保留其内容和内部结构,无需额外配置。已经转换为标准字段的信息不会重复返回。自定义字段的含义以厂商说明为准,更换模型或厂商后,这些字段可能不再返回或含义发生变化。
十八、响应示例
以下示例用于说明字段格式,分数和用量以实际返回为准。
十九、文本结果
{ "id": "rerank-7f3a2c10", "created": 1788969600, "object": "list", "model": "cmr-text-rerank", "results": [ { "index": 1, "relevance_score": 0.91, "document": "先固定底座,再连接电源。" } ], "usage": { "prompt_tokens": 60, "completion_tokens": 0, "total_tokens": 60 }}
index=1 表示结果对应请求中的第 2 条候选。模型未返回候选内容或用量时,响应会省略相应字段。
20、图片结果
{ "id": "rerank-a1b2c3d4", "created": 1788969600, "object": "list", "model": "cmr-multimodal-rerank", "results": [ { "index": 2, "relevance_score": 0.91, "document": {"image": "https://example.com/manual.png"} } ], "usage": { "prompt_tokens": 147, "total_tokens": 829, "prompt_tokens_details": {"image_tokens": 682} }}
21、错误响应
·请求失败时,CMR 返回统一的错误格式:
{ "error": { "message": "请求参数无效", "type": "invalid_request_error", "param": null, "code": "400" }}
| 参数 | 说明 |
| error.message | 错误说明 |
| error.type | 错误类型 |
| error.param | 相关请求参数;无法定位时可能为空 |
| error.code | 错误码,以实际响应为准 |
·常见 HTTP 状态码:
| HTTP 状态码 | 常见原因 | 处理建议 |
| 400 | 请求格式错误,或模型不支持当前参数、内容类型 | 检查并修正请求 |
| 401 | API Key 无效或鉴权失败 | 检查 API Key 和厂商凭证 |
| 403 | 鉴权头有误或没有访问权限 | 检查 Authorization 和模型权限 |
| 404 | 模型、资源或接口不存在 | 检查模型名称和接入配置 |
| 408 / 504 | 请求超时 | 在业务允许时稍后重试 |
| 429 | 请求限流或配额不足 | 参考 Retry-After,降低请求频率后重试 |
| 500 / 502 / 503 | 服务异常、连接失败或返回内容异常 | 稍后重试;持续失败时记录请求标识并联系支持 |