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?']]