fix(provider): fix Bailian rerank payload compatibility for qwen3-rerank (#6222)

* fix(provider): align bailian qwen3 rerank payload with latest API schema

* fix(provider): explicitly ignore unsupported return_documents for qwen3 rerank
This commit is contained in:
Yokami
2026-03-28 21:27:53 +08:00
committed by GitHub
parent da1eb65afe
commit 971bcbad10

View File

@@ -33,6 +33,8 @@ class BailianNetworkError(BailianRerankError):
class BailianRerankProvider(RerankProvider):
"""阿里云百炼文本重排序适配器."""
QWEN3_RERANK_MODEL = "qwen3-rerank"
def __init__(self, provider_config: dict, provider_settings: dict) -> None:
super().__init__(provider_config, provider_settings)
self.provider_config = provider_config
@@ -83,19 +85,35 @@ class BailianRerankProvider(RerankProvider):
Returns:
请求载荷字典
"""
normalized_model = self.model.strip().lower()
normalized_top_n = top_n if top_n is not None and top_n > 0 else None
# qwen3-rerank follows a model-specific payload:
# query/documents/top_n/instruct should be at the top level.
if normalized_model == self.QWEN3_RERANK_MODEL:
payload = {
"model": self.model,
"query": query,
"documents": documents,
}
if normalized_top_n is not None:
payload["top_n"] = normalized_top_n
if self.instruct:
payload["instruct"] = self.instruct
if self.return_documents:
logger.warning(
"qwen3-rerank does not support return_documents; "
"this option will be ignored."
)
return payload
base = {"model": self.model, "input": {"query": query, "documents": documents}}
params = {
k: v
for k, v in [
("top_n", top_n if top_n is not None and top_n > 0 else None),
("top_n", normalized_top_n),
("return_documents", True if self.return_documents else None),
(
"instruct",
self.instruct
if self.instruct and self.model == "qwen3-rerank"
else None,
),
]
if v is not None
}