跳到内容

正则表达式

regex(model, regex_str, =multinomial())

使用正则表达式语言生成结构化文本。

参数

名称 类型 描述 默认值
model

一个 `Transformer` 实例,表示来自 `transformers` 库的模型。

必需
regex_str str | Regex

输出必须遵循的正则表达式。

必需
sampler 采样器

用于从 logits 分布生成 token ID 的采样算法。

multinomial()

返回值

类型 描述
一个 `SequenceGeneratorAdapter` 实例,它生成受以下约束的文本
正则表达式。
源码位于 outlines/generate/regex.py
@singledispatch
def regex(model, regex_str: str | Regex, sampler: Sampler = multinomial()):
    """Generate structured text in the language of a regular expression.

    Parameters
    ----------
    model:
        An instance of `Transformer` that represents a model from the
        `transformers` library.
    regex_str:
        The regular expression that the output must follow.
    sampler:
        The sampling algorithm to use to generate token ids from the logits
        distribution.

    Returns
    -------
    A `SequenceGeneratorAdapter` instance that generates text constrained by the
    regular expression.

    """
    from outlines.processors import RegexLogitsProcessor

    if isinstance(regex_str, Regex):
        regex_str = regex_str.pattern

    logits_processor = RegexLogitsProcessor(regex_str, tokenizer=model.tokenizer)
    return SequenceGeneratorAdapter(model, logits_processor, sampler)