mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-29 23:12:38 +08:00
* refactor: replace axios and node fetch with electron's net module for network requests in preprocess providers - Updated Doc2xPreprocessProvider and MineruPreprocessProvider to use net.fetch instead of axios for making HTTP requests. - Improved error handling for network responses across various methods. - Removed unnecessary AxiosRequestConfig and related code to streamline the implementation. * lint * refactor(Doc2xPreprocessProvider): enhance file validation and upload process - Added file size validation to prevent loading files larger than 300MB into memory. - Implemented file size check before reading the PDF to ensure efficient memory usage. - Updated the file upload method to use a stream, setting the 'Content-Length' header for better handling of large files. * refactor(brave-search): update net.fetch calls to use url.toString() - Modified all instances of net.fetch to use url.toString() for better URL handling. - Ensured consistency in how URLs are passed to the fetch method across various functions. * refactor(MCPService): improve URL handling in net.fetch calls - Updated net.fetch to use url.toString() for better type handling of URLs. - Ensured consistent URL processing across the MCPService class. * feat(ProxyManager): integrate axios with fetch proxy support - Added axios as a dependency to enable fetch proxy usage. - Implemented logic to set axios's adapter to 'fetch' for proxy handling. - Preserved original axios adapter for restoration when disabling the proxy.
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { ExtractChunkData } from '@cherrystudio/embedjs-interfaces'
|
|
import { KnowledgeBaseParams } from '@types'
|
|
import { net } from 'electron'
|
|
|
|
import BaseReranker from './BaseReranker'
|
|
|
|
export default class GeneralReranker extends BaseReranker {
|
|
constructor(base: KnowledgeBaseParams) {
|
|
super(base)
|
|
}
|
|
|
|
public rerank = async (query: string, searchResults: ExtractChunkData[]): Promise<ExtractChunkData[]> => {
|
|
const url = this.getRerankUrl()
|
|
|
|
const requestBody = this.getRerankRequestBody(query, searchResults)
|
|
|
|
try {
|
|
const response = await net.fetch(url, {
|
|
method: 'POST',
|
|
headers: this.defaultHeaders(),
|
|
body: JSON.stringify(requestBody)
|
|
})
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
|
|
}
|
|
|
|
const data = await response.json()
|
|
|
|
const rerankResults = this.extractRerankResult(data)
|
|
return this.getRerankResult(searchResults, rerankResults)
|
|
} catch (error: any) {
|
|
const errorDetails = this.formatErrorMessage(url, error, requestBody)
|
|
throw new Error(`重排序请求失败: ${error.message}\n请求详情: ${errorDetails}`)
|
|
}
|
|
}
|
|
}
|