text-generation-inference 文档

指南

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Guidance

什么是 Guidance?

Guidance 是一项允许用户使用指定语法约束大型语言模型生成的功能。当您想要生成遵循特定结构或使用特定词汇集或以特定格式输出的文本时,此功能特别有用。一个突出的例子是 JSON 语法,在该语法中,模型被迫输出有效的 JSON。

如何使用?

Guidance 可以通过多种方式实现,社区总是在探索新的使用方式。以下是一些使用 Guidance 的示例

从技术上讲,Guidance 可用于生成

  • 特定的 JSON 对象
  • 函数签名
  • 列表(如整数列表)等类型化输出

然而,这些用例可以涵盖广泛的应用,例如

  • 从非结构化文本中提取结构化数据
  • 将文本摘要为特定格式
  • 将输出限制为特定类别的词语(充当 LLM 驱动的分类器)
  • 生成特定 API 或服务的输入
  • 为下游任务提供可靠且一致的输出
  • 从多模态输入中提取数据

它如何工作?

深入细节,Guidance 通过在生成请求中包含一个语法来实现,该语法经过编译,并用于修改所选的 token。

此过程可分为以下步骤

  1. 请求被发送到后端,然后进行处理并放入批处理中。处理包括将语法编译成有限状态机和语法状态。
  1. 模型对批处理进行前向传递。这将返回批处理中每个请求的词汇表中每个 token 的概率。

  2. 选择这些 token 之一的过程称为 `采样`。模型从概率分布中采样以选择下一个 token。在 TGI 中,采样之前的所以步骤都称为 `处理器`。语法作为处理器应用,该处理器会屏蔽掉语法不允许的 token。

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

如何使用 Guidance?

使用 Guidance 主要有两种方式;您可以使用带有语法的 `/generate` 端点,或使用带有工具的 `/chat/completion` 端点。

在底层,工具是语法的一种特殊情况,允许模型选择一个或不选择提供的任何工具。

有关如何在 Python、JavaScript 和 cURL 中使用 Guidance 的更多示例和详细信息,请参阅使用 Guidance

充分利用 Guidance

根据您使用 Guidance 的方式,您可能希望利用不同的功能。以下是一些充分利用 Guidance 的提示

  • 如果您使用带有 `grammar` 的 `/generate`,建议在提示中包含语法,并加上类似 `请使用以下 JSON 模式生成输出:` 的前缀。这将帮助模型理解语法的上下文并相应地生成输出。
  • 如果您收到的响应中包含许多重复的 token,请使用 `frequency_penalty` 或 `repetition_penalty` 来减少输出中重复 token 的数量。
< > 在 GitHub 上更新