跳到内容

OpenAILLM

OpenAI LLM 实现,运行异步 API 客户端。

属性

  • model: 用于 LLM 的模型名称,例如“gpt-3.5-turbo”、“gpt-4”等。支持的模型可以在这里找到。

  • base_url: 用于 OpenAI API 请求的基本 URL。默认为 None,这意味着将使用为环境变量 OPENAI_BASE_URL 设置的值,如果未设置,则使用“https://api.openai.com/v1”。

  • api_key: 用于验证对 OpenAI API 请求的 API 密钥。默认为 None,这意味着将使用为环境变量 OPENAI_API_KEY 设置的值,如果未设置,则为 None

  • default_headers: 用于 OpenAI API 请求的默认标头。

  • max_retries: 在失败之前重试 API 请求的最大次数。默认为 6

  • timeout: 等待 API 响应的最长时间(秒)。默认为 120

  • structured_output: 使用 instructor 的结构化输出配置字典。您可以在 distilabel.steps.tasks.structured_outputs.instructor 中的 InstructorStructuredOutputType 中查看字典结构。

运行时参数

  • base_url: 用于 OpenAI API 请求的基本 URL。默认为 None

  • api_key: 用于验证对 OpenAI API 请求的 API 密钥。默认为 None

  • max_retries: 在失败之前重试 API 请求的最大次数。默认为 6

  • timeout: 等待 API 响应的最长时间(秒)。默认为 120

示例

生成文本

from distilabel.models.llms import OpenAILLM

llm = OpenAILLM(model="gpt-4-turbo", api_key="api.key")

llm.load()

output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])

从遵循 OpenAI API 的自定义端点生成文本

from distilabel.models.llms import OpenAILLM

llm = OpenAILLM(
    model="prometheus-eval/prometheus-7b-v2.0",
    base_url=r"http://localhost:8080/v1"
)

llm.load()

output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])

生成结构化数据

from pydantic import BaseModel
from distilabel.models.llms import OpenAILLM

class User(BaseModel):
    name: str
    last_name: str
    id: int

llm = OpenAILLM(
    model="gpt-4-turbo",
    api_key="api.key",
    structured_output={"schema": User}
)

llm.load()

output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])

使用批量 API 生成(离线批量生成)

from distilabel.models.llms import OpenAILLM

load = llm = OpenAILLM(
    model="gpt-3.5-turbo",
    use_offline_batch_generation=True,
    offline_batch_generation_block_until_done=5,  # poll for results every 5 seconds
)

llm.load()

output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
# [['Hello! How can I assist you today?']]