跳到内容

文本生成

Outlines 提供了一个统一的接口,用于使用多种语言模型(基于 API 和本地)生成文本。整个库中都使用了相同的模式。

  1. 通过调用 outlines.generate.text 并传入要使用的模型来实例化生成器。
  2. 调用生成器,传入提示词和(可选)一些生成参数。
from outlines import models, generate

model = models.openai("gpt-4o-mini")
generator = generate.text(model)
answer = generator("What is 2+2?")

model = models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = generate.text(model)
answer = generator("What is 2+2?")

默认情况下,Outlines 使用多项式采样器,temperature=1。请参阅 本节 了解如何使用不同的采样器。

流式传输

Outlines 允许你通过调用生成器的 .stream 方法并传入提示词来流式传输模型的响应。

from outlines import models, generate

model = models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = generate.text(model)

tokens = generator.stream("What is 2+2?")
for token in tokens:
    print(token)

参数

限制生成的 token 数量

要限制生成的 token 数量,你可以将 max_tokens 位置参数传递给生成器。

from outlines import models, generate

model = models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = generate.text(model)

answer = generator("What is 2+2?", 5)
answer = generator("What is 2+2?", max_tokens=5)

在生成特定字符串后停止

你还可以要求模型在生成特定字符串后停止生成文本,例如句号或换行符。你可以为 stop_at 参数传入一个字符串或字符串列表。

from outlines import models, generate

model = models.transformers("microsoft/Phi-3-mini-4k-instruct")
generator = generate.text(model)

answer = generator("What is 2+2?", stop_at=".")
answer = generator("What is 2+2?", stop_at=[".", "\n"])

停止字符串将包含在响应中。

设置生成种子

为了获得可重现的结果,设置生成种子可能会很有用。

import torch
from outlines import models, generate

model = models.transformers("microsoft/Phi-3-mini-4k-instruct")

seed = 789001

answer = generator("What is 2+2?", seed=seed)