Guidance:微软的 LLM 输出控制框架

微软开源的 Guidance 是一个用于引导语言模型生成的编程框架。它的目标是用结构化的方式控制模型输出,在降低延迟和成本的同时获得更高质量的结果。

正文顶部截图

Guidance 的核心理念是将控制逻辑和文本生成交织在一起。用户可以在生成过程中插入条件判断、循环和工具调用,并对输出格式施加精确约束。这种范式区别于传统的提示工程,它不依赖模型理解自然语言指令,而是通过程序化的规则直接限定输出范围。

README区域截图

Guidance 的 API 设计贴合 Python 开发习惯。模型对象是不可变的,每次操作返回新的副本。system、user、assistant 等上下文管理器让对话角色的组织变得直观:

from guidance import system, user, assistant, gen
from guidance.models import Transformers

phi_lm = Transformers("microsoft/Phi-4-mini-instruct")
lm = phi_lm

with system():
    lm += "You are a helpful assistant"

with user():
    lm += "Hello. What is your name?"

with assistant():
    lm += gen(max_tokens=20)

约束生成是该框架的重点能力。gen() 调用可通过正则表达式限制输出内容,select() 可从预设选项列表中选取答案。更进一步的特性是支持任意上下文无关文法,这使得 JSON、HTML 等复杂结构化数据的生成可以被精确控制。例如,基于 Pydantic 模型的 JSON 生成可以直接利用 schema 约束模型输出。

Guidance 支持本地调试约束规则。通过 Mock 模型,开发者无需调用真实 API 就能验证文法是否正确匹配预期字符串。这对约束条件的迭代开发很有帮助。

token 快速推进是该项目的另一个技术点。当约束规则确定了后续必须出现的 token 时,Guidance 会直接填充这些 token,跳过模型的前向计算。在生成高度结构化的内容时,这种机制能显著减少 GPU 使用。

Guidance 还支持自定义函数。用 @guidance 装饰器标记的函数可以像 gen() 一样被调用,并且可以被组合起来构建复杂的生成逻辑。多个函数可以层层嵌套,最终组合成一个完整的上下文无关文法。

安装 Guidance 很简单:

pip install guidance

该项目兼容 Transformers、llama.cpp、OpenAI 等多种后端。对于需要精确控制输出格式、降低推理成本的应用场景,Guidance 提供了一个实用的工具。

于需要精确控制输出格式、降低推理成本的应用场景,Guidance 提供了一个实用的工具。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐