Outlines
活跃简介
使用正则、JSON Schema、CFG 强制约束 LLM 输出结构的概率编程库。
核心特性
- 约束解码 — 在 token 级别屏蔽非法输出,让模型 100% 符合 JSON Schema / 正则 / 上下文无关文法
- 多后端 — 支持 Transformers、vLLM、TGI、MLX 等本地与远程推理后端
- 类型化生成 — 与 Pydantic、dataclass 无缝集成,自动推导约束
- 工具调用 — 内置 JSON 模式工具调用,无需自定义 parser
- 概率编程 — 文本生成视为采样,提供更高级的提示工程能力
- 轻量 — 库本身 < 1000 行核心代码,依赖极少
适用场景
💡 为业务表单生成严格符合 schema 的 JSON 输出。
💡 本地部署 LLM 时确保结构化输出稳定。
💡 用上下文无关文法描述 DSL,生成合法代码片段。
分类
快速开始
# 安装
pip install outlines
# 用 Pydantic 生成 JSON
import outlines
from pydantic import BaseModel
class Joke(BaseModel):
setup: str
punchline: str
model = outlines.models.transformers('gpt2')
generator = outlines.generate.json(model, Joke)
joke = generator('Tell me a joke')
print(joke.setup, joke.punchline)