SuperAPI AI 工具集

chunking-for-llms

智能体与模型

查看项目

更新于 10-16 07:18

技能介绍

用途:把源码切分成适合 LLM 上下文窗口的块,避免按固定字节或行数切分时把函数截半、丢失上下文。基于 tree-sitter 语法解析,按语法边界(完整函数、类、块)切分。

主要能力:命令行 ts-pack process <file> --chunk-size <bytes> 生成约指定字节数以内的块,--chunk-size 为最大字节数;分块器会把完整语法单元打包到该上限,单个超大的构造自成一块而不被切开。分块结果加入正常 process 的 JSON 输出,位于 chunks 数组。

用法:示例 ts-pack process src/app.ts --chunk-size 2000;可与结构提取组合:ts-pack process src/service.py --structure --chunk-size 3000 | jq '{chunks: (.chunks | length), functions: (.structure | length)}';遍历 chunks 逐个喂给 LLM:ts-pack process big_module.py --chunk-size 2500 | jq -c '.chunks[]'。每个代码块对象含源文本及 span 信息(行/字节偏移),便于引用或回定位原文件。

SDK:通过 ProcessConfig 配置分块,设置 chunk_max_size(字节);ProcessConfig 是 frozen dataclass,需传入构造函数:config = ProcessConfig("python", chunk_max_size=2500),result = process(source_code, config),for chunk in result.chunks:(ProcessResult 是对象而非字典)。

尺寸选择:匹配下游模型 token 预算,粗略规则为代码字节÷4≈token,故 --chunk-size 4000 约 1k token;更大的块保留更多局部上下文但每请求容纳更少;应为提示、周边消息与响应留出余量,不要按满上下文窗口设定。

适用场景:文件较大、批量建 RAG 索引、需要稳定且语法连贯的可引用单元时。限制:单个小文件若已能放入上下文窗口,应跳过不分块、整体传入。资料未提供收费、价格与平台支持信息。