63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
"""
|
||
知识库加载器 — 支持按需加载单个知识库文件
|
||
"""
|
||
|
||
from pathlib import Path
|
||
|
||
|
||
def load_knowledge_base(kb_dir: Path) -> str:
|
||
"""
|
||
加载指定目录下的所有 .md 文件内容,按文件名排序后拼接。
|
||
|
||
Args:
|
||
kb_dir: 知识库目录路径
|
||
|
||
Returns:
|
||
所有 md 文件内容的拼接文本
|
||
"""
|
||
if not kb_dir.exists():
|
||
return ""
|
||
|
||
files = sorted(kb_dir.glob("*.md"))
|
||
if not files:
|
||
return ""
|
||
|
||
parts = []
|
||
for f in files:
|
||
parts.append(f"\n# {f.name}\n")
|
||
parts.append(f.read_text(encoding="utf-8"))
|
||
|
||
return "\n".join(parts)
|
||
|
||
|
||
def load_knowledge_file(kb_dir: Path, filename: str) -> str:
|
||
"""
|
||
按需加载单个知识库文件。
|
||
|
||
Args:
|
||
kb_dir: 知识库目录路径
|
||
filename: 文件名(如 "01_课程底层逻辑与场景路由.md")
|
||
|
||
Returns:
|
||
文件内容,文件不存在时返回空字符串
|
||
"""
|
||
f = kb_dir / filename
|
||
if not f.exists():
|
||
return ""
|
||
return f.read_text(encoding="utf-8")
|
||
|
||
|
||
def list_knowledge_files(kb_dir: Path) -> list[str]:
|
||
"""
|
||
列出知识库目录下所有 .md 文件名。
|
||
|
||
Args:
|
||
kb_dir: 知识库目录路径
|
||
|
||
Returns:
|
||
按文件名排序的列表
|
||
"""
|
||
if not kb_dir.exists():
|
||
return []
|
||
return sorted([f.name for f in kb_dir.glob("*.md")])
|