dottxt-ai/outlines-core
Faster structured generation
outlines‑core – Rust 中的结构化生成
是什么 – 一个 Rust 库 (带有 Python 绑定),让你能将 JSON schema 转换为确定性有限状态自动机 (DFA),从而引导语言模型词汇表的 token 生成。它是原始 Outlines 项目的项目的性能导向核心。
关键能力
- Schema → regex – 将 JSON schema 转换为正则表达式 (
json_schema::regex_from_str)。 - 词汇表处理 – 从预训练模型 (例如
openai-community/gpt2) 加载 tokenizer,或手动构建一个,将 token 映射到整数 ID。 - 索引对象 – 结合 regex 与
Vocabulary以产生一个Index,从而高效地将 token ID 映射到 DFA 状态转换。 - Guide 抽象 (Python) – 一个薄层封装 (
Guide),用于跟踪当前 DFA 状态、报告允许的 tokens,并在 tokens 被消耗时推进状态。 - 跨语言 – 核心是用 Rust 编写的,以确保速度和安全性;一个基于
pyo3的 Python 包 (outlines_core) 向 Python 用户提供相同的 API。
典型工作流程
- 编写一个描述所需输出形状的 JSON schema。
- 从 schema 生成 regex。
- 加载或构建一个与您将使用的 LLM tokenizer 匹配的
Vocabulary。 - 使用 regex 与词汇表构建
Index。 - 在 Python (或 Rust) 中从 index 创建
Guide并重复执行以下操作:- 查询
guide.get_tokens()以获取模型被允许接下来发射的 token ID 集。 - 通过
guide.advance(token_id)将选择的 token 传回。 - 当
guide.is_finished()时停止。
- 查询
为什么重要 – 通过将生成限制在能使输出符合 schema 的 tokens,从而实现 结构化 LLM 输出 (例如 JSON 对象、日期、ID),而无需进行事后解析或昂贵的束搜索 (beam search)。
入门指南
- Rust:
cargo add outlines-core然后遵循 README 中的代码片段。 - Python: Clone repo,创建 virtualenv,然后运行
pip install -e .[test]。按照 Python 示例中使用outlines_core包。 - 使用
make build-extension-debug编译原生扩展进行调试。
开发与贡献
- Fork → clone → 设置 Python venv。
- 运行
make test(同时运行 Rustcargo test和 Pythonpytest)。 - 通过
make pcc(pre‑commit) 进行样式检查。使用make pybench进行基准测试。 - 在 Discord 上加入社区,或在 GitHub 上开启 issue/PR。
许可证 – MIT (参见 repository 的 LICENSE 文件)。
Outlines‑core 是为需要在处理大型语言模型时进行快速、具有 schema 意识的 token 筛选的 AI 开发人员提供的真实、低层级构建块。",
相关
- Dispatch
- 项目
- 项目
- 项目
- 项目