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。

典型工作流程

  1. 编写一个描述所需输出形状的 JSON schema。
  2. 从 schema 生成 regex。
  3. 加载或构建一个与您将使用的 LLM tokenizer 匹配的 Vocabulary
  4. 使用 regex 与词汇表构建 Index
  5. 在 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 (同时运行 Rust cargo test 和 Python pytest)。
  • 通过 make pcc (pre‑commit) 进行样式检查。使用 make pybench 进行基准测试。
  • 在 Discord 上加入社区,或在 GitHub 上开启 issue/PR。

许可证 – MIT (参见 repository 的 LICENSE 文件)。


Outlines‑core 是为需要在处理大型语言模型时进行快速、具有 schema 意识的 token 筛选的 AI 开发人员提供的真实、低层级构建块。",

相关

  • Dispatch
  • 项目
  • 项目
  • 项目
  • 项目