正则表达式
Outlines可以保证由LLM生成的文本将符合正则表达式:
from outlines import models, generate
model = models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = generate.regex(
model,
r"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)",
)
prompt = "What is the IP address of the Google DNS servers? "
answer = generator(prompt, max_tokens=30)
print(answer)
# What is the IP address of the Google DNS servers?
# 2.2.6.1
如果您发现自己在使用 generate.regex 来限制答案的类型,您可以查看 类型结构化生成。
性能
generate.regex 计算一个索引,帮助 Outlines 指导生成。这可能需要一些时间,但只需执行一次。如果您想使用相同的正则表达式多次生成,请确保只调用一次 generate.regex。