mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-15 17:30:13 +08:00
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:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user