text-generation-inference 文件
指南
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
Guidance
什麼是 Guidance?
Guidance 是一項允許使用者使用指定語法約束大型語言模型生成的功能。當您想要生成遵循特定結構或使用特定詞彙集或以特定格式輸出的文字時,此功能特別有用。一個突出的例子是 JSON 語法,在該語法中,模型被迫輸出有效的 JSON。
如何使用?
Guidance 可以透過多種方式實現,社群總是在探索新的使用方式。以下是一些使用 Guidance 的示例
從技術上講,Guidance 可用於生成
- 特定的 JSON 物件
- 函式簽名
- 列表(如整數列表)等型別化輸出
然而,這些用例可以涵蓋廣泛的應用,例如
- 從非結構化文字中提取結構化資料
- 將文字摘要為特定格式
- 將輸出限制為特定類別的詞語(充當 LLM 驅動的分類器)
- 生成特定 API 或服務的輸入
- 為下游任務提供可靠且一致的輸出
- 從多模態輸入中提取資料
它如何工作?
深入細節,Guidance 透過在生成請求中包含一個語法來實現,該語法經過編譯,並用於修改所選的 token。
此過程可分為以下步驟
- 請求被髮送到後端,然後進行處理並放入批處理中。處理包括將語法編譯成有限狀態機和語法狀態。


模型對批處理進行前向傳遞。這將返回批處理中每個請求的詞彙表中每個 token 的機率。
選擇這些 token 之一的過程稱為 `取樣`。模型從機率分佈中取樣以選擇下一個 token。在 TGI 中,取樣之前的所以步驟都稱為 `處理器`。語法作為處理器應用,該處理器會遮蔽掉語法不允許的 token。


- 應用語法掩碼後,模型從剩餘的 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 的數量。