SuperAPI AI 工具集

guidance

智能体与模型

查看项目

更新于 10-30 06:46

技能介绍

用途

Guidance 是一个用于约束式 LLM 生成的 Python 库,由微软研究院开发。它的核心目标是让开发者能够精确控制语言模型的输出语法与结构,避免无效或格式错误的生成结果。适用于需要保证输出格式合法、减少重试、构建多步工作流的场景。

主要能力

1. 约束式生成

Guidance 支持通过正则表达式和文法(grammar)约束模型输出。正则表达式会在 token 级别转换为文法,生成过程中过滤掉不符合模式的 token,因此模型只能产生匹配的输出。例如可约束邮箱、日期(YYYY-MM-DD)、电话号码等格式。

2. 选项选择(select)

通过 select() 可将输出限制在给定的候选列表中,例如情感分类(positive/negative/neutral)或多选题答案,保证结果一定是合法选项之一。

3. Token Healing

Guidance 默认启用 token healing,自动“修复”提示词与生成内容之间的 token 边界问题,避免出现多余空格等不自然的分隔,使文本边界更自然,并提升模型表现。

4. 基于文法的生成

可使用上下文无关文法定义复杂结构,例如嵌套 JSON、编程语言语法或领域特定语言,从而生成结构合法的输出。

5. Guidance 函数

通过 @guidance 装饰器可创建可复用的生成模式;使用 @guidance(stateless=False) 可创建有状态函数,用于构建 ReAct 智能体等带工具调用的多步工作流。

6. 上下文管理器

Guidance 使用 Pythonic 的上下文管理器(system()、user()、assistant())组织聊天式交互,角色分离清晰,便于阅读和维护。

使用方式

安装

基础安装:

pip install guidance

按后端安装:

pip install guidance[transformers]  # Hugging Face 模型
pip install guidance[llama_cpp]     # llama.cpp 模型

基本示例

from guidance import models, gen

lm = models.OpenAI("gpt-4")
result = lm + "The capital of France is " + gen("capital", max_tokens=5)
print(result["capital"])

后端配置

  • Anthropic Claude:models.Anthropic(model="claude-sonnet-4-5-20250929", api_key=...)
  • OpenAI:models.OpenAI(model="gpt-4o-mini", api_key=...)
  • 本地 Transformers:Transformers("microsoft/Phi-4-mini-instruct", device="cuda")
  • 本地 llama.cpp:LlamaCpp(model_path="/path/to/model.gguf", n_ctx=4096, n_gpu_layers=35)

常见模式

资料中给出了多种常见模式,包括:JSON 生成、分类、多步推理(chain-of-thought)、ReAct 智能体、数据抽取(实体抽取)等。

适用场景

  • 需要正则或文法约束输出格式
  • 需要保证 JSON/XML/代码等结构化输出合法
  • 需要 token healing
  • 使用本地模型(Transformers、llama.cpp)
  • 偏好 Pythonic 语法
  • 构建带控制流的多步工作流

限制与对比

资料中提供的对比表显示:

  • Guidance 支持正则约束、CFG 文法、token healing、本地模型与 API 模型,语法为 Pythonic,学习曲线低。
  • 不支持 Pydantic 验证(Instructor 和 Outlines 支持)。
  • 若需要 Pydantic 验证与自动重试,可考虑 Instructor;若需要 JSON schema 验证,可考虑 Outlines;若偏好声明式查询语法,可考虑 LMQL。

性能特征

资料称:

  • 延迟:受限输出场景下比传统提示方式快 30%–50%;token healing 减少不必要的重新生成;文法约束防止无效 token 生成。
  • 内存:相比无约束生成开销极小;文法编译在首次使用后缓存;推理时进行高效的 token 过滤。
  • Token 效率:避免在无效输出上浪费 token,无需重试循环,直接生成合法输出。

资源

  • 文档:https://guidance.readthedocs.io
  • GitHub:https://github.com/guidance-ai/guidance
  • Notebooks:https://github.com/guidance-ai/guidance/tree/main/notebooks
  • Discord:社区支持

参考文件

  • references/constraints.md - 正则与文法模式
  • references/backends.md - 后端配置
  • references/examples.md - 生产级示例