SuperAPI AI 工具集

guidance

Guidance 是微软推出的一个 Python 库,用于控制大语言模型的生成过程。它采用类似 Handlebars 的模板语法,将生成、提示和逻辑控制(如条件、循环、工具调用)交织在一起,从而精确控制输出结构。相比传统提示或微调,Guidance 能降低延迟和成本,并支持通过正则表达式和上下文无关文法(CFG)约束生成。该库可通过 PyPI 安装,支持 Transformers、llama.cpp、OpenAI 等多种后端。

访问官网

工具介绍

Guidance 是一个用于引导语言模型的高效编程范式。通过 Guidance,你可以控制输出的结构,并为你的用例获得高质量输出,同时相比传统提示或微调降低延迟和成本。它允许用户约束生成(例如使用正则表达式和上下文无关文法),并无缝地交织控制流(条件、循环、工具使用)和生成。

主要能力

  • 约束生成:使用正则表达式或上下文无关文法(CFG)约束模型输出,确保输出符合预期语法。例如,gen() 调用可以约束为匹配正则表达式;select() 函数用于从预定义列表中选择输出。
  • 交织控制与生成:在生成过程中嵌入条件、循环和工具调用,实现复杂的逻辑控制。
  • 自定义 Guidance 函数:使用 @guidance 装饰器创建自己的函数,这些函数可以与语言模型交互,并可以组合以构建完整的上下文无关文法。
  • JSON 生成:JSON schema 本质上是一种上下文无关文法,Guidance 对此提供特殊支持,可以基于 Pydantic 模型等生成 JSON。
  • 快速前向令牌:由于文法约束,某些令牌可以提前确定,Guidance 无需模型生成这些令牌,而是直接插入,从而节省前向传递,减少 GPU 使用。
  • 离线调试文法:在迭代约束时,可以在本地验证候选字符串,并使用 Mock 模型测试完整运行,无需调用模型 API。

使用方式

Guidance 可通过 PyPI 安装。如果已经拥有模型所需的后端,只需运行安装命令即可。它支持多种后端,包括 Transformers、llama.cpp、OpenAI 等。

在 Python 中,你可以使用常见的 Python 惯用法与大语言模型交互。例如,在命令行运行时会生成输出;在 Jupyter notebook 中,Guidance 提供小部件以获得更丰富的用户体验。捕获生成的文本也非常容易。

创建自定义 Guidance 函数时,使用 @guidance 装饰器标记函数,language_model 参数会自动填充。这些函数可以像 gen() 或 select() 一样使用,并且可以组合以构建完整的上下文无关文法。例如,可以创建函数来生成不包含 HTML 标签的文本、在任意 HTML 标签内生成文本、生成页面标题、定义正文中的标题和段落,最终生成完整的 HTML 页面。

适用场景

  • 需要精确控制语言模型输出结构的场景,如生成特定格式的 JSON、HTML 等。
  • 需要将逻辑控制与生成交织的复杂任务,如多轮问答、工具调用。
  • 希望减少延迟和成本,同时获得高质量输出的应用。

限制

  • 约束生成(如上下文无关文法)需要后端 LLM 完全支持 Guidance。
  • 具体支持的后端列表和安装细节请参考官方文档。
  • 关于收费、价格、平台等信息,资料中暂未提供。