fix(Reranker): 修复rerank 400 and 完善错误信息 (#4013)

feat(Reranker): enhance error handling with detailed error messages and early return for empty results
This commit is contained in:
Chen Tao 2025-03-27 20:04:37 +08:00 committed by GitHub
parent 41191f6132
commit 710171278a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 26 additions and 6 deletions

View File

@ -17,4 +17,15 @@ export default abstract class BaseReranker {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
} }
} }
public formatErrorMessage(url: string, error: any, requestBody: any) {
const errorDetails = {
url: url,
message: error.message,
status: error.response?.status,
statusText: error.response?.statusText,
requestBody: requestBody
}
return JSON.stringify(errorDetails, null, 2)
}
} }

View File

@ -47,8 +47,10 @@ export default class JinaReranker extends BaseReranker {
.filter((doc): doc is ExtractChunkData => doc !== undefined) .filter((doc): doc is ExtractChunkData => doc !== undefined)
.sort((a, b) => b.score - a.score) .sort((a, b) => b.score - a.score)
} catch (error: any) { } catch (error: any) {
console.error('Jina Reranker API 错误:', error.status) const errorDetails = this.formatErrorMessage(url, error, requestBody)
throw new Error(`${error} - BaseUrl: ${baseURL}`)
console.error('Jina Reranker API Error:', errorDetails)
throw new Error(`重排序请求失败: ${error.message}\n请求详情: ${errorDetails}`)
} }
} }
} }

View File

@ -49,8 +49,10 @@ export default class SiliconFlowReranker extends BaseReranker {
.filter((doc): doc is ExtractChunkData => doc !== undefined) .filter((doc): doc is ExtractChunkData => doc !== undefined)
.sort((a, b) => b.score - a.score) .sort((a, b) => b.score - a.score)
} catch (error: any) { } catch (error: any) {
console.error('SiliconFlow Reranker API 错误:', error.status) const errorDetails = this.formatErrorMessage(url, error, requestBody)
throw new Error(`${error} - BaseUrl: ${baseURL}`)
console.error('SiliconFlow Reranker API 错误:', errorDetails)
throw new Error(`重排序请求失败: ${error.message}\n请求详情: ${errorDetails}`)
} }
} }
} }

View File

@ -53,8 +53,10 @@ export default class VoyageReranker extends BaseReranker {
.filter((doc): doc is ExtractChunkData => doc !== undefined) .filter((doc): doc is ExtractChunkData => doc !== undefined)
.sort((a, b) => b.score - a.score) .sort((a, b) => b.score - a.score)
} catch (error: any) { } catch (error: any) {
console.error('Voyage Reranker API 错误:', error.message || error) const errorDetails = this.formatErrorMessage(url, error, requestBody)
throw new Error(`${error} - BaseUrl: ${baseURL}`)
console.error('Voyage Reranker API Error:', errorDetails)
throw new Error(`重排序请求失败: ${error.message}\n请求详情: ${errorDetails}`)
} }
} }
} }

View File

@ -475,6 +475,9 @@ class KnowledgeService {
_: Electron.IpcMainInvokeEvent, _: Electron.IpcMainInvokeEvent,
{ search, base, results }: { search: string; base: KnowledgeBaseParams; results: ExtractChunkData[] } { search, base, results }: { search: string; base: KnowledgeBaseParams; results: ExtractChunkData[] }
): Promise<ExtractChunkData[]> => { ): Promise<ExtractChunkData[]> => {
if (results.length === 0) {
return results
}
return await new Reranker(base).rerank(search, results) return await new Reranker(base).rerank(search, results)
} }
} }