From d19f059f34b80e80740c9cab2180c30c0964140a Mon Sep 17 00:00:00 2001 From: Zhichang Yu Date: Mon, 2 Dec 2024 12:55:05 +0800 Subject: [PATCH] Detect invalid response from api.siliconflow.cn (#3792) ### What problem does this PR solve? Detect invalid response from api.siliconflow.cn. Close #2643 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- rag/llm/embedding_model.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rag/llm/embedding_model.py b/rag/llm/embedding_model.py index 28a2d5261..1e82bd621 100644 --- a/rag/llm/embedding_model.py +++ b/rag/llm/embedding_model.py @@ -606,6 +606,8 @@ class SILICONFLOWEmbed(Base): "encoding_format": "float", } res = requests.post(self.base_url, json=payload, headers=self.headers).json() + if "data" not in res or not isinstance(res["data"], list) or len(res["data"])!= len(texts): + raise ValueError(f"SILICONFLOWEmbed.encode got invalid response from {self.base_url}") return ( np.array([d["embedding"] for d in res["data"]]), res["usage"]["total_tokens"], @@ -618,6 +620,8 @@ class SILICONFLOWEmbed(Base): "encoding_format": "float", } res = requests.post(self.base_url, json=payload, headers=self.headers).json() + if "data" not in res or not isinstance(res["data"], list) or len(res["data"])!= 1: + raise ValueError(f"SILICONFLOWEmbed.encode_queries got invalid response from {self.base_url}") return np.array(res["data"][0]["embedding"]), res["usage"]["total_tokens"]