欢迎回来

登录 EAKE AI,继续您的智能之旅

忘记密码?
还没有账号?立即注册

Skills中心

133 篇文章

Outlines 结构化生成

2026-05-22 · v1.0

X/Twitter 社交媒体

2026-05-22 · v1.0

LLM 知识百科

2026-05-22 · v1.0

Claude Code 编码代理

2026-05-22 · v1.0

子代理驱动开发

2026-05-22 · v1.0

代码库检查

2026-05-22 · v1.0

GitHub 仓库管理

2026-05-22 · v1.0

内容研究与写作

2026-05-22 · v1.0

头脑风暴助手

2026-05-22 · v1.0

创意头脑风暴

2026-05-22 · v1.0

OpenCode 编码代理

2026-05-22 · v1.0

ASCII 艺术

2026-05-22 · v1.0

Jupyter 实时内核

2026-05-22 · v1.0

vLLM 高性能推理

2026-05-22 · v1.0

代码审查请求

2026-05-22 · v1.0

VibeSec 安全审查

2026-05-22 · v1.0

科学研究技能集

2026-05-22 · v1.0

HTML 设计生成

2026-05-22 · v1.0

视频生成提示词

2026-05-22 · v1.0

PDF 文档处理

2026-05-22 · v1.0

Kaggle 竞赛集成

2026-05-22 · v1.0

OpenClaw Skills生态 — 从安装到自定义开发

2026-05-22 · v1.0

GitHub Issue 管理

2026-05-22 · v1.0

Pretext 创意演示

2026-05-22 · v1.0

HTML 快速原型

2026-05-22 · v1.0

Polymarket 预测市场

2026-05-22 · v1.0

计划标注工具

2026-05-22 · v1.0

个人知识搜索

2026-05-22 · v1.0

ASCII 视频

2026-05-22 · v1.0

HeartMuLa 音乐生成

2026-05-22 · v1.0

Spotify 音乐控制

2026-05-22 · v1.0

DSPy 声明式编程

2026-05-22 · v1.0

热门网页设计

2026-05-22 · v1.0

Apple 查找设备

2026-05-22 · v1.0

Manim 数学动画

2026-05-22 · v1.0

AWS 开发技能

2026-05-22 · v1.0

HuggingFace 模型仓库

2026-05-22 · v1.0

PPT 演示文稿

2026-05-22 · v1.0

SAM 图像分割

2026-05-22 · v1.0

MCP 客户端

2026-05-22 · v1.0

OCR 文档识别

2026-05-22 · v1.0

Deep Thinker Skill — 深度思考与反思

2026-05-22 · v1.0

GBrain Skill — 代码语义索引与智能搜索

2026-05-22 · v1.0

实现计划编写

2026-05-22 · v1.0

LLM 越狱测试

2026-05-21 · v1.0

Codex 编码代理

2026-05-21 · v1.0

GitHub PR 工作流

2026-05-21 · v1.0

EPUB 电子书生成

2026-05-21 · v1.0

ElevenLabs 语音合成

2026-05-21 · v1.0

YouTube 字幕提取

2026-05-21 · v1.0

W&B 实验追踪

2026-05-21 · v1.0

PPT 演示文稿

2026-05-21 · v1.0

Hermes 技能开发

2026-05-21 · v1.0

CSV 数据分析

2026-05-21 · v1.0

Notion 知识管理

2026-05-21 · v1.0

VibeSec 安全编码

2026-05-21 · v1.0

OWASP 安全检查

2026-05-21 · v1.0

Agent Skills 入门指南

2026-05-21 · v1.0

TouchDesigner 控制

2026-05-21 · v1.0

Obsidian 笔记管理

2026-05-21 · v1.0

Node.js 调试器

2026-05-21 · v1.0

企业内部沟通

2026-05-21 · v1.0

GIF 搜索

2026-05-21 · v1.0

测试驱动开发 (TDD)

2026-05-21 · v1.0

p5.js 创意编程

2026-05-21 · v1.0

Excalidraw 手绘图表

2026-05-21 · v1.0

Google Workspace 集成

2026-05-21 · v1.0

地图与地理编码

2026-05-21 · v1.0

Pokémon 自动游玩

2026-05-21 · v1.0

计划模式

2026-05-21 · v1.0

Excel 表格处理

2026-05-21 · v1.0

LLM 拒绝消除

2026-05-21 · v1.0

文本人性化改写

2026-05-21 · v1.0

像素艺术创作

2026-05-21 · v1.0

Honcho 记忆管理

2026-05-21 · v1.0

DESIGN.md 规范

2026-05-21 · v1.0

Apple 备忘录

2026-05-21 · v1.0

深度研究助手

2026-05-21 · v1.0

技能创建器

2026-05-21 · v1.0

Gemini 图像生成

2026-05-21 · v1.0

DOCX 文档处理

2026-05-21 · v1.0

Git Worktree 工作流

2026-05-21 · v1.0

文件智能整理

2026-05-20 · v1.0

架构图绘制

2026-05-20 · v1.0

YouTube 内容创作

2026-05-20 · v1.0

GitHub 代码审查

2026-05-20 · v1.0

Apple 提醒事项

2026-05-20 · v1.0

GitNexus 代码图谱

2026-05-20 · v1.0

Airtable 数据管理

2026-05-20 · v1.0

Himalaya 邮件

2026-05-20 · v1.0

快速实验验证

2026-05-20 · v1.0

AudioCraft 音频生成

2026-05-20 · v1.0

Claude Code 插件开发

2026-05-20 · v1.0

系统化调试

2026-05-20 · v1.0

系统化调试

2026-05-20 · v1.0

Kanban 看板

2026-05-20 · v1.0

CC Switch - Claude Code/Codex/Gemini CLI

2026-05-20 · v1.0

Philips Hue 灯光控制

2026-05-20 · v1.0

Python 调试工具

2026-05-20 · v1.0

博客/RSS 监控

2026-05-20 · v1.0

加密货币市场数据

2026-05-20 · v1.0

看板工作者

2026-05-20 · v1.0

测试驱动开发

2026-05-20 · v1.0

PostgreSQL 数据库查询

2026-05-20 · v1.0

Self-Evolution Skill — AI自动进化优化技能

2026-05-20 · v1.0

Outline Wiki 文档

2026-05-20 · v1.0

TRL 微调训练

2026-05-20 · v1.0

Webhook 订阅

2026-05-20 · v1.0

知识漫画生成

2026-05-20 · v1.0

Axolotl 微调框架

2026-05-20 · v1.0

学术论文搜索

2026-05-20 · v1.0

调试器技能

2026-05-20 · v1.0

AI 音乐创作

2026-05-20 · v1.0

音频频谱分析

2026-05-20 · v1.0

AI 写作风格检测

2026-05-20 · v1.0

Hermes Agent 配置

2026-05-20 · v1.0

Linear 项目管理

2026-05-20 · v1.0

GitHub 认证配置

2026-05-20 · v1.0

LLM 评测基准

2026-05-20 · v1.0

Web 应用测试

2026-05-20 · v1.0

Unsloth 快速微调

2026-05-20 · v1.0

llama.cpp 本地推理

2026-05-20 · v1.0

arXiv 论文搜索

2026-05-20 · v1.0

Google Workspace 办公套件

2026-05-20 · v1.0

iMessage 消息

2026-05-20 · v1.0

PDF 编辑工具

2026-05-20 · v1.0

产品命名助手

2026-05-20 · v1.0

信息图可视化

2026-05-20 · v1.0

Minecraft 模组服务器

2026-05-20 · v1.0

看板编排器

2026-05-20 · v1.0

ML 论文写作

2026-05-20 · v1.0

ComfyUI 图像生成

2026-05-20 · v1.0

思源笔记

2026-05-20 · v1.0

Outlines 结构化生成

2026-05-22 22:26 · v1.0

Outlines 结构化生成

Outlines:结构化 JSON/正则/Pydantic LLM 输出生成

Outlines 结构化文本生成

使用场景

需要以下场景时使用 Outlines:

  • 保证生成 JSON/XML/代码的有效性,而非生成后解析
  • 使用 Pydantic 模型获得类型安全的输出
  • 支持本地模型(Transformers、llama.cpp、vLLM)
  • 最大化推理速度,零开销的结构化生成
  • 基于 JSON Schema 自动生成有效输出
  • 在语法级别控制 token 采样

GitHub Stars: 8,000+ | 来自: dottxt.ai(前身 .txt)

安装


# 基础安装
pip install outlines

# 带特定后端
pip install outlines transformers  # Hugging Face 模型
pip install outlines llama-cpp-python  # llama.cpp
pip install outlines vllm  # vLLM 高吞吐

快速入门

基础示例:分类


import outlines
from typing import Literal

# 加载模型
model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")

# 带类型约束生成
prompt = "评论 '这个产品太棒了!' 的情感: "
generator = outlines.generate.choice(model, ["positive", "negative", "neutral"])
sentiment = generator(prompt)

print(sentiment)  # "positive"(保证是其中之一)

使用 Pydantic 模型


from pydantic import BaseModel
import outlines

class User(BaseModel):
    name: str
    age: int
    email: str

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")

# 基于 Pydantic 模型生成
generator = outlines.generate.json(model, User)
result = generator("创建一个名为 Alice 的用户,30 岁,邮箱 alice@example.com。")
print(result)
# {"name": "Alice", "age": 30, "email": "alice@example.com"}

使用 JSON Schema


schema = {
    "type": "object",
    "properties": {
        "title": {"type": "string"},
        "rating": {"type": "number", "minimum": 1, "maximum": 5},
        "review": {"type": "string"}
    },
    "required": ["title", "rating"]
}

generator = outlines.generate.json(model, schema)
result = generator("Write a book review for 'The Great Gatsby'.")
print(result)

使用正则表达式


import outlines

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")

# 严格匹配正则格式
phone_gen = outlines.generate.regex(model, r'\+?1?\d{9,15}')
phone = phone_gen("Get me a phone number.")
print(phone)  # "+1234567890"

核心概念

生成器类型

生成器用途示例
jsonJSON 对象Pydantic、JSON Schema
regex正则匹配电话号码、日期
choice选项分类、评分

模型后端


# Transformers(本地)
model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")

# llama.cpp
model = outlines.models.llamacpp("path/to/model.gguf")

# vLLM
model = outlines.models.vllm("meta-llama/Llama-3-8B-Instruct")

# OpenAI
model = outlines.models.openai("gpt-4")

词汇引导(Token 目视)

Outlines 通过在生成时限制 token 采样词汇(而非生成后校验),实现零开销结构化生成。

  • 不浪费样本在无效 token 上
  • 保证输出格式正确
  • 比 ReAct/自研解析器更快

进阶用法

带验证的 Pydantic


from pydantic import BaseModel, field_validator
import outlines

class User(BaseModel):
    name: str
    age: int
    email: str

    @field_validator('age')
    @classmethod
    def age_must_be_positive(cls, v):
        if v <= 0:
            raise ValueError('Age must be positive')
        return v

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = outlines.generate.json(model, User)
result = generator("Create a user named Bob, age 25, email bob@test.com")

列表生成


import outlines

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")

# 生成字符串列表(逗号分隔)
list_gen = outlines.generate.format(model, str)
items = list_gen("List three fruits: apple, ")
print(items)  # "banana, orange"

# 生成带格式的列表
generator = outlines.generate.json(model, {"type": "array", "items": {"type": "string"}})
result = generator("List three colors")

函数调用


from pydantic import BaseModel
import outlines

class ExtractInfo(BaseModel):
    name: str
    organization: str | None = None
    title: str | None = None

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = outlines.generate.json(model, ExtractInfo)

text = "John Smith is the CEO of Acme Corp."
result = generator(f"Extract: {text}")
# {"name": "John Smith", "organization": "Acme Corp.", "title": "CEO"}

XML 生成


xml_schema = """<{name:str}{age:int}{email:str}"""

generator = outlines.generate.format(model, xml_schema)
result = generator("Generate user data in XML format.")

常见工作流

工作流 1:RAG 提取


from pydantic import BaseModel
import outlines

class DocumentMetadata(BaseModel):
    title: str
    author: str | None
    date: str | None
    summary: str

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = outlines.generate.json(model, DocumentMetadata)

text = "The paper 'Attention Is All You Need' by Vaswani et al. (2017) introduced the Transformer architecture."

result = generator(f"Extract metadata from: {text}")
# {"title": "Attention Is All You Need", "author": "Vaswani et al.", "date": "2017", "summary": "..."}

工作流 2:批量分类


from typing import Literal
import outlines

Sentiment = Literal["positive", "negative", "neutral"]

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = outlines.generate.choice(model, ["positive", "negative", "neutral"])

reviews = [
    "这个产品非常好用!",
    "太差了,完全不好用。",
    "一般般,中规中矩。"
]

for review in reviews:
    sentiment = generator(f"情感分析: {review}")
    print(f"'{review}' -> {sentiment}")

工作流 3:代码生成


import outlines

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")

# 生成 Python 函数格式
py_schema = """@def greet(name: str, age: int) -> str:
    return"""

generator = outlines.generate.format(model, py_schema)
code = generator("Write a greet function.")
print(code)
# @def greet(name: str, age: int) -> str:
#     return f"Hello, {name}! You are {age} years old."

配置参数

采样参数


import outlines

model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct")

# 自定义采样
result = outlines.generate.choice(
    model,
    ["positive", "negative", "neutral"],
    sampler=outlines.samplers.TopK(k=50)
)("This movie is amazing!")

# 贪婪采样
result = outlines.generate.choice(
    model,
    ["positive", "negative", "neutral"],
    sampler=outlines.samplers.Greedy()
)("This movie is amazing!")

常见问题

format格式化Python dict、列表
问题解决方案
生成进入死循环确保 Schema/Regex 完整,无歧义分支
输出不完全的 JSON设置 max_tokens 确保完整生成
不支持的模型检查 outlines 版本,使用 transformers 后端

资源链接

  • GitHub: https://github.com/dottxt-ai/outlines
  • 文档: https://dottxt-ai.github.io/outlines/
  • Pydantic 集成: https://dottxt-ai.github.io/outlines/reference/pydantic/
  • 正则语法: https://dottxt-ai.github.io/outlines/reference/regex/

Pydantic 验证失败添加 field_validator 或使用 nullable 字段