- C (*)
- C++ (*)
- C# (*)
- COBOL
- Elixir
- Go (*)
- Java (*)
- JavaScript (需要包
esprima) - Kotlin (*)
- Lua (*)
- Perl (*)
- Python
- Ruby (*)
- Rust (*)
- Scala (*)
- TypeScript (*)
tree_sitter 和 tree_sitter_languages 包。使用 tree_sitter 添加对其他语言的支持非常简单,尽管这目前需要修改 LangChain。 可以配置用于解析的语言,以及激活基于语法拆分所需的最小行数。 如果未明确指定语言,LanguageParser 将(如果存在)从文件名扩展名推断一种语言。parser_threshold 指示源代码文件必须具有的最小行数才能使用解析器进行分段。拆分
对于那些过大的函数、类或脚本,可能需要额外的拆分。使用 Tree-sitter 模板添加语言
使用 Tree-Sitter 模板扩展语言支持涉及几个基本步骤- 创建新的语言文件:
- 首先在指定目录 (langchain/libs/community/langchain_community/document_loaders/parsers/language) 中创建一个新文件。
- 根据现有语言文件(如
cpp.py)的结构和解析逻辑来建模此文件。 - 您还需要在 langchain 目录 (langchain/libs/langchain/langchain/document_loaders/parsers/language) 中创建一个文件。
- 解析语言特定内容:
- 模仿
cpp.py文件中使用的结构,并根据您正在合并的语言进行调整。 - 主要修改涉及调整块查询数组,以适应您正在解析的语言的语法和结构。
- 模仿
- 测试语言解析器:
- 为了进行彻底验证,请为新语言生成一个测试文件。在指定目录 (langchain/libs/community/tests/unit_tests/document_loaders/parsers/language) 中创建
test_language.py。 - 遵循
test_cpp.py中设置的示例,为新语言中已解析的元素建立基本测试。
- 为了进行彻底验证,请为新语言生成一个测试文件。在指定目录 (langchain/libs/community/tests/unit_tests/document_loaders/parsers/language) 中创建
- 集成到解析器和文本拆分器中:
- 在
language_parser.py文件中包含您的新语言。确保更新 LANGUAGE_EXTENSIONS 和 LANGUAGE_SEGMENTERS 以及 LanguageParser 的文档字符串,以识别和处理添加的语言。 - 此外,请确认您的语言包含在
text_splitter.py的 Language 类中,以便进行正确的解析。
- 在
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。