2025年2月22日小于 1 分钟
+++
title = "✍️ 限制性语法"
weight = 15
url = "/features/constrained_grammars/"
+++
Overview
chat 端点支持 grammar 参数,允许用户以巴科斯-诺尔形式(BNF)指定语法。此功能使得大型语言模型(LLM)能够生成符合用户定义模式的输出,例如 JSON、YAML 或任何其他可以使用 BNF 定义的格式。关于 BNF 的更多详细信息,请参阅 维基百科上的巴科斯-诺尔形式。
Setup
要使用此功能,请按照 LocalAI Functions 页面上的安装和设置说明操作。确保您的本地设置满足 llama.cpp 后端指定的所有先决条件。
💡 使用示例
以下示例演示如何使用 grammar 参数将模型的输出限制为 "yes" 或 "no"。这在需要严格控制响应格式的场景中特别有用。
示例:二进制响应约束
curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "Do you like apples?"}],
"grammar": "root ::= (\"yes\" | \"no\")"
}'在此示例中,grammar 参数设置为在 "yes" 和 "no" 之间的简单选择,确保模型的响应严格遵循这些选项之一,而不管上下文如何。