Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【虎の穴ラボ Tech Talk #2】プロンプトエンジニアリング

【虎の穴ラボ Tech Talk #2】プロンプトエンジニアリング

2024年11月21日に開催された「虎の穴ラボ Tech Talk #2 〜LLM活用LT〜」の発表資料になります。
https://yumenosora.connpass.com/event/335158/

虎の穴ラボ株式会社

November 22, 2024
Tweet

More Decks by 虎の穴ラボ株式会社

Other Decks in Technology

Transcript

  1. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 自己紹介

    山田(やまだ) ‣ 所属 ‣ アーキテクトチーム ‣ 業務内容 ‣ 通販サイドの運用・環境構築・環境整備 ‣ 趣味 ‣ ゲーム ‣ 最近のものも遊んでいますが、実機でレトロゲームとかも遊んでたりし ます。 2
  2. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 概要

    虎の穴ラボでは、業務にOpenAI社のChatGPTを全社的に利用しています。 今回はChatGPTの「プロンプトエンジニアリング」についてと、社内ブログチームがメンバー に提供しているプロンプトの実例を紹介します。 3
  3. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. アジェンダ

    1. プロンプトエンジニアリング 2. ポイント 3. 社内の実例 4. まとめ 4
  4. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 1.

    プロンプトエンジニアリング 5
  5. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 1.

    プロンプトエンジニアリング プロンプトエンジニアリングとは ChatGPTにおけるプロンプト(Prompt)とは、LLMに対する「回答を得るための指示」、「入力 情報」のことです。 このプロンプトを使って、より適切な回答、より望む回答を得るためのアプローチを「プロンプト エンジニアリング」と呼びます。 6
  6. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 1.

    プロンプトエンジニアリング ポイント 1. 最新のモデルを使用する 2. プロンプトの最初に指示を書き、区切り文字を使って「指示」と「コンテキスト」を分ける 3. 結果、長さ、形式、スタイルなどについて、具体的で詳細な指示を出す 4. 例をあげて望ましい出力形式を指示する 5. 簡単な指示から始めて、徐々に指示を増やし、どちらもうまくいかなかったら微調整する 6. 「リーディングワード」を使用して、回答して欲しいパターンに誘導する 7. 複雑な指示は、より単純な指示に分割する 8. モデルに「考える」時間を与える 8
  7. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 1. 最新のモデルを使用する • 基本的に最新モデルの使用が推奨されています • コストや返答速度、質問内容により選択しましょう • 現在は、以下のようなモデルが提供されています 参考: https://platform.openai.com/docs/models 9 GPT-4o 複雑で多段階のタスクに対応する OpenAIのフラッグシップモデル GPT-4o mini 高速で軽量なタスクに最適な小型モデル。この 4つの中では最も安く使用で きます。 o1-preview 複雑な推論を実行するために強化学習でトレーニングされた言語モデル o1-mini コーディング・数学・科学で特に優れた言語モデル
  8. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 2. プロンプトの最初に指示を書き、区切り文字を使って「指示」と「コンテキスト」 を分ける • 指示を最初に書く • 区切り文字を使って、「指示」と「コンテキスト(文脈や状況、脈絡、背景)」を分ける • 区切り文字には#(ハッシュ)や”(ダブルクォーテーション)などが使用できます 10
  9. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 2. プロンプトの最初に指示を書き、区切り文字を使って「指示」と「コンテキスト」 を分ける 例: 11 # 指示 以下のテキストを、最も重要なポイントの箇条書きリストとして要約してください。 テキスト: """ {ここにテキストを入力 } """
  10. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 3. 結果、長さ、形式、スタイルなどについて、具体的で詳細な指示を出す • なるべく明確な指示を出す • 出力が単純すぎる場合は、専門家レベルの文章を求めてください ◦ あなたは◦◦◦の専門家 ◦ あなたはベテランの ◦◦◦ • 出力が長い場合は、簡潔な返信を求めてください ◦ ◦つあげてください ◦ ◦文字以内に要約してください • 回答するスタイルを指定することもできます ◦ フォーマルな文章で回答してください ◦ カジュアルな文章で回答してください 12
  11. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 3. 結果、長さ、形式、スタイルなどについて、具体的で詳細な指示を出す 例: 13 # 指示 - あなたはWebサイト開発の専門家です - 以下のテキストを200文字以内に要約してください - マニュアルに記述する文章で回答してください テキスト: """ {ここにテキストを入力 } """
  12. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 4. 例をあげて望ましい出力形式を指示する • 例を示して指示を出すことで、望む形式で回答を得られます。 ◦ カテゴリー ◦ 実例 ◦ デモンストレーション 14
  13. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 4. 例をあげて望ましい出力形式を指示する 例:カテゴリー 参考 :https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-wi th-the-openai-api#h_63ba130195 15 # 指示 知床半島に関する情報を以下のカテゴリーに分けて出力してください 位置: [位置] 所在: [所在] 面積: [面積] 生物: [生物] 自然の脅威: [自然の脅威] 保全活動: [保全活動]
  14. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 4. 例をあげて望ましい出力形式を指示する 例:実例 参考: 16 ## 見出しだけで答えがわかる たとえば、「◦◦とは何か」「◦◦の特徴」だけだと、 具体的にそれが何なのかや、どのような特徴を持っているかは伝わらない。 次のように配下の見出しで説明することで、「 ◦◦とは何か」「◦◦の特徴」の答えまで伝えることができ る。 ``` 良い例)前述している用語について見出しで理解できる # Webページの速度とは何か ## ページロードの速度 ── ページが表示されるまでの速度 ## ランタイムの速度 ── ページ上での操作に対する UIの応答速度 ```
  15. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 4. 例をあげて望ましい出力形式を指示する 例:デモンストレーション(首都の推測) 17 アメリカ//ワシントンD.C インド//ニューデリー エジプト//カイロ 日本//
  16. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 5. 簡単な指示から始めて、次にコンテキストを追加し、うまくいかなかったら微調 整する • Zero-shot promptingというのは出力例の指示の無いプロンプトです • Few-shot promptingというのは出力例やデモンストレーションのあるプロンプトのことです • まずは簡単な指示(Zero-shot prompting)で回答を求める • 適切な回答が得られない場合は、コンテキストを追加した指示( Few-shot prompting)を試す • それでも適切な回答が得られない場合は、指示やコンテキストの微調整を繰り返す 18
  17. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 6. 「リーディングワード」を使用して、回答して欲しいパターンに誘導する • 入力データに特定のキーワードやフレーズを追加して指示 ◦ Pythonのソースコードが欲しければ「 import」 ◦ SQLが欲しければ「SELECT」 19
  18. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 6. 「リーディングワード」を使用して、回答して欲しいパターンに誘導する 例:リーディングワード 参考: https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-wit h-the-openai-api#h_67d8a695f4 20 # 簡単なPython関数を書いてください。 # 1. マイルの数値を尋ねます。 # 2. マイルをキロメートルに変換します import
  19. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 7. 複雑な指示は、より単純な指示に分割する • 複雑な指示により回答が複数返されるような指示は、単純な指示に分割する • 長大な指示は、段階的に指示を出して回答を得る 21
  20. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 8. モデルに「考える」時間を与える • あまり適切な回答が得られない場合、以下のような指示を付け加えてみる ◦ 「よく考えて回答してください」 ◦ 「熟考して回答してください」 22
  21. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    ポイント 「プロンプトエンジニアリング」については、ネット上に多数のドキュメントが存在します。 今回紹介したポイントは、主に以下のドキュメントを参考にさせていただきました。 Prompt engineering https://platform.openai.com/docs/guides/prompt-engineering Best practices for prompt engineering with the OpenAI API https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api Prompt-Engineering-Guide https://github.com/dair-ai/Prompt-Engineering-Guide Prompt Engineering Guide(日本語版) https://www.promptingguide.ai/jp 23
  22. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 社内の実例 虎の穴ラボには、社内の技術ブログを管理する「ブログチーム」というのが存在します。 ここに所属するメンバーがブログ投稿の手助けとなるようなプロンプトを作成していますので、今回はこち らを実例として2つ紹介します。 虎の穴ラボ 技術ブログ https://toranoana-lab.hatenablog.com/ 25
  23. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 - その1 箇条書きから記事構成の提案 その1 箇条書きから記事構成の提案 記事にしたい内容をプロンプトに箇条書きで示すと、ブログの構成を提案してくれるプロンプトです。 プロンプトの説明には「制約条件」に項目を追加すると、より欲しい出力に近づくことが書かれています。 26
  24. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 - その1 箇条書きから記事構成の提案 # 命令書 あなたはプロの技術ブログ編集者です。 以下の制約条件と入力をもとに、最高のブログ記事を出力してください # 制約条件 - 10分ほどで読める技術記事 - 重要なキーワードを取り残さない - 章タイトルは章の内容を具体的で簡潔に分かるものにする - 文章は分かりやすく簡潔に *** 好みで条件を追加すると欲しい出力に近づく *** - 読みたくなるキャッチーなタイトル - 実装例を交えて具体的に解説 *************************************** 27
  25. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 - その1 箇条書きから記事構成の提案 # 入力 ## 伝えたいこと - HTMLネイティブのdialog要素を用いたモーダルダイアログの実装方法 - dialog要素を用いると実装がシンプルになるメリット - dialog要素で実装する際の注意する点 ## dialog要素で実装する際の注意する点 - dialog要素は開く/閉じるを切り替えても DOMに存在しているので、マウント /アンマウントは発火しない - dialog要素は閉じる際にcloseイベントを発火するが、開く際に発火するイベントはない - dialog要素のopen属性は読み取りのみで扱うことを推奨 - escキーで閉じる仕様がデフォルトで含まれている ********************************* # 出力 28
  26. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 - その1 箇条書きから記事構成の提案 ポイント • 区切り文字の使用 • 明確な指示 ◦ 「命令書」「制約条件」「入力」という項目と内容で、明確な指示を出している 29
  27. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 - その2 タイトルの提案 その2 タイトルの提案 ブログの本文をプロンプトに含めて実行することで、タイトルを提案してもらえるプロンプトです。 評価観点や制約条件を指定することで、より適切な出力を得られるようになっています。 30
  28. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 - その2 タイトルの提案 # 命令書 - あなたはベテランの Webエンジニアです。 - プロのWebライターとしても活躍しています。 - 【本文】の内容から【タイトルの評価観点】を満たすタイトルを 5つ提案してください。 - 全ての出力内容において、【制約条件】を必ず守ってください。 # タイトルの評価観点 - SEOの観点で評価してください。 - タイトルは45文字以内にしてください。 - 読者の興味を引くタイトルにしてください。 - 読者はWebエンジニアを想定しています。 # 制約条件 - 修正後の文章は出力しないでください。 - 【理由】と【おすすめポイント】は必ず簡潔に出力してください。 - 必ず日本語で回答してください。 31
  29. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 - その2 タイトルの提案 # 入力文 ## 本文 # 出力文 ## タイトルについて ### タイトル案 | No.  | タイトル案 | おすすめポイント | |----------------|---------------|----------------| | 1 |         |         | | 2 |         |         | | 3 |         |         | | 4 |         |         | | 5 |         |         | 32
  30. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 3.

    社内の実例 - その2 タイトルの提案 実行するにはブログ記事の本文が必要です。今回は、以前虎の穴技術ブログに投稿した本文を使用して 実演します。 科学が証明!エンジニアが取り入れたい勉強法 https://toranoana-lab.hatenablog.com/entry/2024/07/18/120000 33
  31. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 2.

    社内の実例 - その2 タイトルの提案 ポイント • 出力形式の指示 ◦ 出力フォーマットを提示して、適切な回答を得ようとしている 34
  32. Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. 4.

    まとめ • 「プロンプトエンジニアリング」とは、適切な回答、望む回答を得るためのアプローチです • 今回紹介した以外にも様々な手法があります • まずは回数を重ねて、今後も色々試してみたいと思います 36