OpenAI 模型#

LLM 内置了一个用于与 OpenAI API 交互的默认插件。OpenAI 提供语言模型和嵌入模型,LLM 可以访问这两种类型。

配置#

所有 OpenAI 模型都使用 API 密钥进行访问。你可以从 OpenAI 网站上的 API 密钥页面获取一个。

创建密钥后,运行以下命令配置 LLM 以使用它

llm keys set openai

然后粘贴 API 密钥。

OpenAI 语言模型#

运行 llm models 命令查看所有可用模型的完整列表。LLM 支持的 OpenAI 模型有

OpenAI Chat: gpt-4o (aliases: 4o)
OpenAI Chat: chatgpt-4o-latest (aliases: chatgpt-4o)
OpenAI Chat: gpt-4o-mini (aliases: 4o-mini)
OpenAI Chat: gpt-4o-audio-preview
OpenAI Chat: gpt-4o-audio-preview-2024-12-17
OpenAI Chat: gpt-4o-audio-preview-2024-10-01
OpenAI Chat: gpt-4o-mini-audio-preview
OpenAI Chat: gpt-4o-mini-audio-preview-2024-12-17
OpenAI Chat: gpt-4.1 (aliases: 4.1)
OpenAI Chat: gpt-4.1-mini (aliases: 4.1-mini)
OpenAI Chat: gpt-4.1-nano (aliases: 4.1-nano)
OpenAI Chat: gpt-3.5-turbo (aliases: 3.5, chatgpt)
OpenAI Chat: gpt-3.5-turbo-16k (aliases: chatgpt-16k, 3.5-16k)
OpenAI Chat: gpt-4 (aliases: 4, gpt4)
OpenAI Chat: gpt-4-32k (aliases: 4-32k)
OpenAI Chat: gpt-4-1106-preview
OpenAI Chat: gpt-4-0125-preview
OpenAI Chat: gpt-4-turbo-2024-04-09
OpenAI Chat: gpt-4-turbo (aliases: gpt-4-turbo-preview, 4-turbo, 4t)
OpenAI Chat: gpt-4.5-preview-2025-02-27
OpenAI Chat: gpt-4.5-preview (aliases: gpt-4.5)
OpenAI Chat: o1
OpenAI Chat: o1-2024-12-17
OpenAI Chat: o1-preview
OpenAI Chat: o1-mini
OpenAI Chat: o3-mini
OpenAI Chat: o3
OpenAI Chat: o4-mini
OpenAI Completion: gpt-3.5-turbo-instruct (aliases: 3.5-instruct, chatgpt-instruct)

有关每个模型的详细信息,请参阅 OpenAI 模型文档

gpt-4o-mini(别名为 4o-mini)是成本最低的模型,如果你不指定模型,它就是默认模型。有关其他模型的详细信息,请查阅 OpenAI 的模型文档

o1-pro 模型无法通过 LLM 默认的 OpenAI 插件使用的聊天补全 API 访问。你可以安装新的 llm-openai-plugin 插件来访问该模型。

模型特性#

以下特性适用于 OpenAI 模型

  • 系统提示可用于提供权重高于提示本身的指令。

  • 附件。许多 OpenAI 模型支持图像输入 - 使用 llm models --options 查看支持哪些模型。任何接受图像的模型也可以接受 PDF。

  • 模式可用于影响模型输出的 JSON 结构。

  • 模型选项可用于设置 temperature 等参数。使用 llm models --options 命令查看所有支持选项的完整列表。

OpenAI 嵌入模型#

运行 llm embed-models 命令查看 嵌入模型的列表。LLM 支持以下 OpenAI 嵌入模型

ada-002 (aliases: ada, oai)
3-small
3-large
3-small-512
3-large-256
3-large-1024

目前 3-small 模型是最经济实惠的。3-large 成本更高但能力更强 - 有关详细信息和基准,请参阅 OpenAI 博客上的 新嵌入模型和 API 更新

任何嵌入模型的一个重要特性是它返回的向量大小。较小的向量存储和查询成本较低,但可能不够准确。

OpenAI 的 3-small3-large 向量可以安全地截断到较低维度,而不会损失太多准确性。LLM 提供的 -int 模型已预配置执行此操作,因此 3-large-256 是截断到 256 维度的 3-large 模型。

支持的 OpenAI 嵌入模型的向量大小如下

模型

大小

ada-002

1536

3-small

1536

3-large

3072

3-small-512

512

3-large-256

256

3-large-1024

1024

OpenAI 补全模型#

The gpt-3.5-turbo-instruct 模型略有不同 - 它是一个补全模型而非聊天模型,详情见 OpenAI 补全文档

补全模型可以使用 -o logprobs 3 选项调用(聊天模型不支持),这将使 LLM 在 SQLite 数据库中为每个返回的 token 存储 3 个对数概率。有关如何读取这些值的详细信息,请查阅 此 issue

添加更多 OpenAI 模型#

OpenAI 会不定期发布新模型。LLM 旨在发布新版本来支持这些模型,但你也可以通过将它们添加到 extra-openai-models.yaml 配置文件中来直接配置它们。

运行此命令查找应该创建此文件的目录

dirname "$(llm logs path)"

在我的 Mac 笔记本电脑上,我得到如下输出

~/Library/Application Support/io.datasette.llm

在该目录下创建一个名为 extra-openai-models.yaml 的文件。

假设 OpenAI 刚刚发布了 gpt-3.5-turbo-0613 模型,而 LLM 尚未发布支持,你仍然想使用它。你可以通过将以下内容添加到文件中来配置它

- model_id: gpt-3.5-turbo-0613
  model_name: gpt-3.5-turbo-0613
  aliases: ["0613"]

model_id 是将记录在 LLM 日志中的标识符。你可以使用它来指定模型,或者选择性地包含该模型的别名列表。model_name 是将传递给 API 的实际模型标识符,它必须与 API 期望的完全匹配。

如果模型是补全模型(例如 gpt-3.5-turbo-instruct),则在配置中添加 completion: true

如果模型支持使用 json_schema 进行结构化提取,则在配置中添加 supports_schema: true

对于 o1o3-mini 等推理模型,添加 reasoning: true

完成此配置后,以下命令应该可以针对新模型运行提示

llm -m 0613 'What is the capital of France?'

运行 llm models 命令确认新模型现在可用

llm models

示例输出

OpenAI Chat: gpt-3.5-turbo (aliases: 3.5, chatgpt)
OpenAI Chat: gpt-3.5-turbo-16k (aliases: chatgpt-16k, 3.5-16k)
OpenAI Chat: gpt-4 (aliases: 4, gpt4)
OpenAI Chat: gpt-4-32k (aliases: 4-32k)
OpenAI Chat: gpt-3.5-turbo-0613 (aliases: 0613)

运行 llm logs -n 1 命令应该会确认提示和响应已正确记录到数据库中。