正则表达式
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
一次。