mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-30 15:59:09 +08:00
Co-authored-by: icarus <eurfelux@gmail.com> Co-authored-by: eeee0717 <chentao020717@outlook.com>
32 lines
976 B
TypeScript
32 lines
976 B
TypeScript
import { RecursiveCharacterTextSplitter, TextSplitter } from '@langchain/textsplitters'
|
|
|
|
import { SrtSplitter } from './SrtSplitter'
|
|
|
|
export type SplitterConfig = {
|
|
chunkSize?: number
|
|
chunkOverlap?: number
|
|
type?: 'recursive' | 'srt' | string
|
|
}
|
|
export class SplitterFactory {
|
|
/**
|
|
* Creates a TextSplitter instance based on the provided configuration.
|
|
* @param config - The configuration object specifying the splitter type and its parameters.
|
|
* @returns An instance of a TextSplitter, or null if no splitting is required.
|
|
*/
|
|
public static create(config: SplitterConfig): TextSplitter {
|
|
switch (config.type) {
|
|
case 'srt':
|
|
return new SrtSplitter({
|
|
chunkSize: config.chunkSize,
|
|
chunkOverlap: config.chunkOverlap
|
|
})
|
|
case 'recursive':
|
|
default:
|
|
return new RecursiveCharacterTextSplitter({
|
|
chunkSize: config.chunkSize,
|
|
chunkOverlap: config.chunkOverlap
|
|
})
|
|
}
|
|
}
|
|
}
|