text-generation-inference 文档
指南
加入 Hugging Face 社区
并获得增强的文档体验
开始
Guidance
什么是 Guidance?
Guidance 是一项功能,允许用户使用指定的语法约束大型语言模型的生成。当您想要生成遵循特定结构或使用特定词汇集或以特定格式生成输出的文本时,此功能特别有用。一个突出的例子是 JSON 语法,其中模型被强制输出有效的 JSON。
如何使用?
Guidance 可以通过多种方式实现,社区一直在寻找使用它的新方法。以下是一些关于如何使用 guidance 的示例
从技术上讲,guidance 可以用于生成
- 特定的 JSON 对象
- 函数签名
- 类型化的输出,例如整数列表
然而,这些用例可以涵盖广泛的应用,例如
- 从非结构化文本中提取结构化数据
- 将文本总结为特定格式
- 将输出限制为特定类别的词(充当 LLM 驱动的分类器)
- 生成特定 API 或服务的输入
- 为下游任务提供可靠且一致的输出
- 从多模态输入中提取数据
它是如何工作的?
深入细节,guidance 通过在生成请求中包含一个语法来启用,该语法被编译并用于修改所选的 token。
此过程可以分解为以下步骤
- 请求被发送到后端,它被处理并放入批处理中。处理包括将语法编译成有限状态机和语法状态。


模型对批处理进行前向传递。这将返回批处理中每个请求的词汇表中每个 token 的概率。
选择其中一个 token 的过程称为
sampling
。模型从概率分布中采样以选择下一个 token。在 TGI 中,采样之前的所有步骤都称为processor
。语法被用作处理器,用于屏蔽语法不允许的 token。


- 应用语法掩码,模型从剩余的 token 中采样。一旦选择了 token,我们就用新的 token 更新语法状态,以便为下一次传递做准备。


如何使用 Guidance?
使用 guidance 主要有两种方式;您可以使用带有语法的 /generate
端点,也可以使用带有工具的 /chat/completion
端点。
在底层,工具是语法的一种特殊情况,它允许模型选择一个或不选择提供的工具。
请参阅 using guidance 以获取更多示例和关于如何在 Python、JavaScript 和 cURL 中使用 guidance 的详细信息。
充分利用 guidance
根据您使用 guidance 的方式,您可能需要使用不同的功能。以下是一些充分利用 guidance 的技巧
- 如果您正在使用带有
grammar
的/generate
,建议在提示中包含语法,并以类似请使用以下 JSON 模式生成输出:
的内容作为前缀。这将帮助模型理解语法的上下文并相应地生成输出。 - 如果您收到的响应中有很多重复的 token,请使用
frequency_penalty
或repetition_penalty
来减少输出中重复 token 的数量。