这个项目能做什么

Swift Tokenizers 是一个 Swift 包,封装了 Hugging Face 的 Rust `tokenizers` crate,为 Swift 应用提供高性能分词。与 Swift Transformers 不同,它仅专注于分词,不依赖 Hugging Face Hub,因此模型文件需单独下载并从本地目录加载。 要求和平台支持:需要 Swift 6.2 或更高版本(Apple 平台上为 Xcode 26)、macOS 14+、iOS 17+,以及 x86_64 和 aarch64 架构的 Linux。Rust 后端以单个 SE-0482 staticLibrary artifactbundle 形式提供,包含 Apple 和 Linux 切片,因此单一依赖即可跨平台使用,无需条件清单逻辑。Linux 二进制文件针对 Ubuntu 22.04 上的 glibc,并与更新的 Ubuntu LTS 镜像向前兼容;不支持 musl。较旧的工具链无法解析该包,因为 artifact 类型在 Swift 6.2 中才引入。 核心功能: - 从包含 tokenizer.json 和辅助文件(如 tokenizer_config.json、config.json 和 chat_template.jinja)的本地目录加载分词器。 - 将文本编码为 token ID,并将 token ID 解码回文本。 - encodeWithMetadata 返回更丰富的编码数据,包括 token 字符串、掩码、序列索引、词索引和偏移跨度。 - StreamingDetokenizer 在完整的 Unicode 标量可用时立即发出文本块,内部状态有界,不随流长度增长。恢复中断的流时,可用先前的 token 进行种子初始化。 - 通过 applyChatTemplate 应用聊天模板,包括带函数定义的工具调用。 - 批量编码和分词操作。 API 在失败时抛出 TokenizerError(无效 token ID、配置不匹配、内部 Rust 错误),使用类型化抛出,以便调用者能穷尽捕获情况。迁移部分记录了从静默返回空结果到抛出的变更,另一部分涵盖从 Swift Transformers 迁移,包括替换包依赖和从基于 Hub 的加载切换到本地目录加载。 README 包含一个基准测试表,比较了 Swift Tokenizers 0.5.0 与 Swift Transformers 1.3.2 在 M3 MacBook Pro 上的性能,报告了更快的分词器加载、分词、解码和模型加载时间。基准测试受 TOKENIZERS_ENABLE_BENCHMARKS 环境变量控制,因此普通消费者不会引入需要 Metal 且仅限 macOS 的 mlx-swift-lm。模型加载基准测试需要 Metal,必须通过 xcodebuild 运行;仅分词器的基准测试可在发布配置下使用 swift test 运行。