文本生成推理文档

指南

Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

开始使用

指南

什么是 Guidance?

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

如何使用?

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

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

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

但是,这些用例可以涵盖广泛的应用,例如

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

它是如何工作的?

深入细节,指导是通过在生成请求中包含一个语法来实现的,该语法会被编译并用于修改选定的标记。

这个过程可以分解成以下步骤:

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

  2. 选择其中一个标记的过程称为“采样”。模型从概率分布中采样以选择下一个标记。在 TGI 中,采样之前的步骤都称为“处理器”。语法被用作一个处理器,屏蔽掉语法不允许的标记。

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

如何使用指导?

主要有两种使用指导的方式:您可以使用带有语法的/generate端点,或者使用带有工具的/chat/completion端点。

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

请参考使用指导以获取更多示例以及有关如何在 Python、JavaScript 和 cURL 中使用指导的详细信息。

充分利用指导

根据您使用指导的方式,您可能希望使用不同的功能。以下是一些充分利用指导的技巧:

  • 如果您使用的是带有grammar/generate,建议在提示中包含该语法,并在其前面加上类似“请使用以下 JSON 模式生成输出:”的内容。这将有助于模型理解语法的上下文并相应地生成输出。
  • 如果您得到的响应包含许多重复的标记,请使用frequency_penaltyrepetition_penalty来减少输出中重复标记的数量。
< > 在 GitHub 上更新