Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

プロンプト

最終更新 Markdown で表示Agent セットアップ

テキスト生成モデルから良い結果を得るには、質問の出し方が重要です。LLM は通常、あらかじめ決まったテンプレートで学習されています。推論では、そのモデルのトークナイザーとあわせて使うと、より良い結果が得られます。

Workers AI でテキスト生成モデルにプロンプトを送る方法は、次の 2 つです。

スコープ付きプロンプト(Scoped Prompts)

こちらが推奨の方法です。Scoped Prompts では、モデルごとのチャットテンプレートの違いを Workers AI が引き受けます。開発者は、プロンプト作成とテキスト生成を、統一されたインターフェースで進められます。

Scoped Prompts はメッセージのリストです。各メッセージには、role と content の 2 つのキーがあります。

role は、通常次の 3 つのいずれかです。

  • system - システムメッセージは、AI の性格を定義します。ルールや、期待する振る舞いを設定できます。
  • user - ユーザーメッセージは、質問や会話を渡して、実際に AI へ問い合わせる場所です。
  • assistant - アシスタントメッセージは、望ましい出力形式を AI に示します。このロールに対応していないモデルもあります。

OpenAI は、GPT モデルでのロールの使い方を わかりやすく説明 しています。チャットテンプレートは柔軟ですが、他のテキスト生成モデルも同じ慣習に従うことが多いです。

system と user のロールを使った Scoped Prompts の入力例です。

{
  messages: [
    { role: "system", content: "you are a very funny comedian and you like emojis" },
    { role: "user", content: "tell me a joke about cloudflare" },
  ],
};

user と assistant を複数回やりとりする、チャットセッションのより良い例です。

{
  messages: [
    { role: "system", content: "you are a professional computer science assistant" },
    { role: "user", content: "what is WASM?" },
    { role: "assistant", content: "WASM (WebAssembly) is a binary instruction format that is designed to be a platform-agnostic" },
    { role: "user", content: "does Python compile to WASM?" },
    { role: "assistant", content: "No, Python does not directly compile to WebAssembly" },
    { role: "user", content: "what about Rust?" },
  ],
};

LLM ごとに、用途に応じたテンプレートで学習されています。Workers AI は統一 API で各 LLM テンプレートの詳細を抽象化しますが、詳細は必ずモデルのドキュメントを確認してください。たとえば Codellama のような instruct モデルは、ユーザーが与えた指示に応答するようファインチューンされています。一方、chat モデルは対話の断片を入力として想定します。

スコープなしプロンプト(Unscoped Prompts)

Unscoped Prompts では、文脈を用意せず、単一の質問をモデルへ送れます。Workers AI は内部で prompt 入力を妥当なデフォルトの Scoped Prompts へ変換し、できるだけ良い予測が得られるようにします。

{
  prompt: "tell me a joke about cloudflare";
}

Unscoped Prompts で、モデルのチャットテンプレートを自分で組み立てることもできます。その場合は raw パラメーターを使います。Mistral のチャットテンプレートプロンプトの入力例です。

{
  prompt: "<s>[INST]comedian[/INST]</s>
[INST]tell me a joke about cloudflare[/INST]",
  raw: true
};

役に立ちましたか?