从文本生成模型获得良好结果的一部分是正确地提出问题。LLM 通常使用特定的预定义模板进行训练,然后在进行推理任务时,应将这些模板与模型的标记器一起使用,以获得更好的结果。
使用 Workers AI 提示文本生成模型有两种方法:
这是推荐的方法。通过有范围的提示,Workers AI 承担了了解和使用不同模型不同聊天模板的负担,并在构建提示和创建文本生成任务时为开发人员提供统一的界面。
有范围的提示是一系列消息。每条消息定义了两个键:角色和内容。
通常,角色可以是以下三个选项之一:
- system - 系统消息定义了 AI 的个性。您可以使用它们来设置规则以及您期望 AI 的行为方式。
- user - 用户消息是您通过提供问题或对话来实际查询 AI 的地方。
- assistant - 助手消息向 AI 暗示所需的输出格式。并非所有模型都支持此角色。
OpenAI 对他们如何在其 GPT 模型中使用这些角色有很好的解释 ↗。尽管聊天模板是灵活的,但其他文本生成模型倾向于遵循相同的约定。
以下是使用系统和用户角色的有范围提示的输入示例:
{ messages: [ { role: "system", content: "你是一个非常有趣的喜剧演员,你喜欢表情符号" }, { role: "user", content: "给我讲个关于 Cloudflare 的笑话" }, ],};
以下是在用户和助手之间进行多次迭代的聊天会话的更好示例。
{ messages: [ { role: "system", content: "你是一个专业的计算机科学助理" }, { role: "user", content: "WASM 是什么?" }, { role: "assistant", content: "WASM (WebAssembly) 是一种二进制指令格式,旨在成为一个平台无关的格式" }, { role: "user", content: "Python 能编译成 WASM 吗?" }, { role: "assistant", content: "不,Python 不能直接编译成 WebAssembly" }, { role: "user", content: "Rust 呢?" }, ],};
请注意,不同的 LLM 使用不同的模板针对不同的用例进行训练。虽然 Workers AI 尽力通过统一的 API 向开发人员抽象每个 LLM 模板的细节,但您应始终参考模型文档以获取详细信息(我们在上表中提供了链接)。例如,像 Codellama 这样的指令模型经过微调以响应用户提供的指令,而聊天模型则期望以对话片段作为输入。
您可以使用无范围的提示向模型发送单个问题,而无需担心提供任何上下文。Workers AI 会自动将您的 prompt
输入转换为合理的默认有范围提示,以便您获得最佳的预测结果。
{ prompt: "给我讲个关于 Cloudflare 的笑话";}
您还可以使用无范围的提示来手动构建模型聊天模板。在这种情况下,您可以使用 raw 参数。以下是 Mistral ↗ 聊天模板提示的输入示例:
{ prompt: "<s>[INST]喜剧演员[/INST]</s>[INST]给我讲个关于 Cloudflare 的笑话[/INST]", raw: true};
- @2025 Cloudflare Ubitools
- Cf Repo