Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions translations/ja/04-prompt-engineering-fundamentals/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -322,15 +322,15 @@ response = openai.chat.completions.create(

### プロンプトテンプレート

プロンプトテンプレートとは、_あらかじめ定義されたプロンプトのレシピ_であり、必要に応じて保存・再利用することで、より一貫したユーザー体験を大規模に実現できます。最もシンプルな形では、[OpenAIのこの例](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst)のように、プロンプト例(ユーザーとシステムのメッセージ)とAPIリクエスト形式をまとめたものです。これにより、再利用が可能になります。
プロンプトテンプレートとは、_あらかじめ定義されたプロンプトのレシピ_ であり、必要に応じて保存・再利用することで、より一貫したユーザー体験を大規模に実現できます。最もシンプルな形では、[OpenAIのこの例](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst)のように、プロンプト例(ユーザーとシステムのメッセージ)とAPIリクエスト形式をまとめたものです。これにより、再利用が可能になります。

より複雑な形では、[LangChainのこの例](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst)のように、_プレースホルダー_を含み、ユーザー入力やシステムの状況、外部データなど様々な情報で置き換えて、動的にプロンプトを生成できます。これにより、再利用可能なプロンプトのライブラリを作成し、プログラム的に一貫したユーザー体験を大規模に提供できます。
より複雑な形では、[LangChainのこの例](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst)のように、_プレースホルダー_ を含み、ユーザー入力やシステムの状況、外部データなど様々な情報で置き換えて、動的にプロンプトを生成できます。これにより、再利用可能なプロンプトのライブラリを作成し、プログラム的に一貫したユーザー体験を大規模に提供できます。

さらに、テンプレートの本当の価値は、_プロンプトライブラリ_を特定の分野向けに作成・公開できる点にあります。プロンプトテンプレートをアプリケーション固有の文脈や例に最適化することで、対象ユーザーにとってより関連性が高く、正確な応答を得られます。[Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst)リポジトリはこのアプローチの良い例で、教育分野向けにレッスンプランやカリキュラム設計、個別指導などの目的に特化したプロンプトをまとめています。
さらに、テンプレートの本当の価値は、_プロンプトライブラリ_ を特定の分野向けに作成・公開できる点にあります。プロンプトテンプレートをアプリケーション固有の文脈や例に最適化することで、対象ユーザーにとってより関連性が高く、正確な応答を得られます。[Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst)リポジトリはこのアプローチの良い例で、教育分野向けにレッスンプランやカリキュラム設計、個別指導などの目的に特化したプロンプトをまとめています。

## 補足コンテンツ

プロンプトの構成を「指示(タスク)」と「ターゲット(主な内容)」と考えるなら、_二次的なコンテンツ_は、**出力に何らかの影響を与える追加の文脈**です。例えば、調整パラメータやフォーマット指示、トピック分類など、モデルがユーザーの目的や期待に合わせて応答を調整できるようにします。
プロンプトの構成を「指示(タスク)」と「ターゲット(主な内容)」と考えるなら、_二次的なコンテンツ_ は、**出力に何らかの影響を与える追加の文脈**です。例えば、調整パラメータやフォーマット指示、トピック分類など、モデルがユーザーの目的や期待に合わせて応答を調整できるようにします。

例:カリキュラム内のすべてのコースについて、名前・説明・レベル・タグ・担当者など豊富なメタデータがあるとします。

Expand All @@ -355,15 +355,15 @@ response = openai.chat.completions.create(

## プロンプトのベストプラクティス

プロンプトの_構成方法_が分かったら、今度は_設計方法_についてベストプラクティスを考えてみましょう。これは大きく2つの観点、_マインドセット_と_テクニック_に分けて考えられます
プロンプトの _構成方法_ が分かったら、今度は _設計方法_ についてベストプラクティスを考えてみましょう。これは大きく2つの観点、_マインドセット_ と _テクニック_ に分けて考えられます

### プロンプトエンジニアリングのマインドセット

プロンプトエンジニアリングは試行錯誤のプロセスです。次の3つの大きな指針を意識しましょう。

1. **ドメイン理解が重要。** 応答の正確さや関連性は、そのアプリケーションやユーザーが属する_ドメイン_に左右されます。直感や専門知識を活かして、**テクニックをカスタマイズ**しましょう。例えば、システムプロンプトでドメイン固有の人格を定義したり、ユーザープロンプトでドメイン固有のテンプレートを使ったりします。二次的な内容もドメインに合わせて調整し、モデルが慣れた使い方に誘導できるようにします。
1. **ドメイン理解が重要。** 応答の正確さや関連性は、そのアプリケーションやユーザーが属する _ドメイン_ に左右されます。直感や専門知識を活かして、**テクニックをカスタマイズ**しましょう。例えば、システムプロンプトでドメイン固有の人格を定義したり、ユーザープロンプトでドメイン固有のテンプレートを使ったりします。二次的な内容もドメインに合わせて調整し、モデルが慣れた使い方に誘導できるようにします。

2. **モデル理解が重要。** モデルは本質的に確率的ですが、実装によって学習データ(事前知識)、提供機能(APIやSDK)、最適化されているコンテンツの種類(コード・画像・テキストなど)が異なります。使っているモデルの強みや制約を理解し、それに合わせて_タスクの優先順位_や_カスタムテンプレート_を作りましょう
2. **モデル理解が重要。** モデルは本質的に確率的ですが、実装によって学習データ(事前知識)、提供機能(APIやSDK)、最適化されているコンテンツの種類(コード・画像・テキストなど)が異なります。使っているモデルの強みや制約を理解し、それに合わせて _タスクの優先順位_ や _カスタムテンプレート_ を作りましょう

3. **反復と検証が重要。** モデルもプロンプトエンジニアリングの手法も急速に進化しています。専門家として、あなたのアプリケーション固有の文脈や基準が、一般的なものと異なる場合もあります。プロンプトエンジニアリングのツールや手法でプロンプト作成を「ジャンプスタート」し、直感や専門知識で反復・検証しましょう。知見を記録し、**ナレッジベース**(プロンプトライブラリなど)を作ることで、他の人がより速く反復できるようになります。

Expand All @@ -374,13 +374,13 @@ response = openai.chat.completions.create(
| 内容 | 理由 |
| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 最新モデルを評価する | 新しい世代のモデルは機能や品質が向上している可能性がありますが、コストも高くなる場合があります。効果を評価し、移行を検討しましょう。 |
| 指示と文脈を分ける | モデルやプロバイダーが_区切り_を定義しているか確認し、指示・主な内容・二次的な内容を明確に分けましょう。これにより、モデルがトークンに正しく重み付けしやすくなります。 |
| 指示と文脈を分ける | モデルやプロバイダーが _区切り_ を定義しているか確認し、指示・主な内容・二次的な内容を明確に分けましょう。これにより、モデルがトークンに正しく重み付けしやすくなります。 |
| 具体的かつ明確に | 望ましい文脈・結果・長さ・フォーマット・スタイルなどを詳しく伝えましょう。応答の品質と一貫性が向上します。レシピは再利用可能なテンプレートにまとめましょう。 |
| 説明的に、例を使う | モデルは「見せて説明する」アプローチに反応しやすいです。まず`ゼロショット`(指示のみ、例なし)で試し、次に`少数ショット`(望ましい出力例をいくつか示す)で精度を高めましょう。類推も活用しましょう。 |
| キューで補完を促す | 望ましい結果に誘導するため、先頭の単語やフレーズを与えて、モデルがそこから応答を始められるようにしましょう。 |
| ダブルダウン | 時にはモデルに繰り返し指示する必要があります。主な内容の前後に指示を入れたり、指示とキューを組み合わせたりします。反復・検証して効果を確かめましょう。 |
| 順序が重要 | モデルへの情報提示順序は、出力に影響する場合があります(例示でも直近バイアスが働く)。様々な順序で試して、最適な方法を探しましょう。 |
| モデルに「逃げ道」を与える | モデルが何らかの理由でタスクを完了できない場合、_フォールバック_の応答を用意しましょう。これにより、誤ったり作り話の応答が減ります。 |
| モデルに「逃げ道」を与える | モデルが何らかの理由でタスクを完了できない場合、_フォールバック_ の応答を用意しましょう。これにより、誤ったり作り話の応答が減ります。 |
| | |

どんなベストプラクティスも、モデル・タスク・ドメインによって効果が異なることを忘れずに。まずはこれらを参考に、反復しながら自分に合った方法を見つけましょう。新しいモデルやツールが登場したら、プロセスの拡張性や応答品質に注目して、プロンプトエンジニアリングの手法を常に見直しましょう。
Expand Down Expand Up @@ -416,7 +416,7 @@ Jupyter Notebookへのリンク(コードコメントのみ、コード部分

- 実行カーネルを選択します。1または2の方法なら、devコンテナのデフォルトPython 3.10.xカーネルを選べばOKです。

これで演習の準備は完了です。ここでは_正解・不正解_はありません。モデルやアプリケーション分野ごとに、試行錯誤しながら何が効果的か直感を養いましょう。
これで演習の準備は完了です。ここでは _正解・不正解_ はありません。モデルやアプリケーション分野ごとに、試行錯誤しながら何が効果的か直感を養いましょう。

_このため、このレッスンにはコード解答セグメントはありません。Notebookには「My Solution:」というMarkdownセルがあり、参考例を1つ示しています。_

Expand Down Expand Up @@ -448,4 +448,5 @@ A: 2です。「何を」だけでなく、具体的なメーカーやモデル
---

**免責事項**:
本書類はAI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性には努めておりますが、自動翻訳には誤りや不正確な表現が含まれる場合があります。原文(元の言語の文書)が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用によって生じたいかなる誤解や誤認についても、当方は責任を負いかねます。

本書類はAI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性には努めておりますが、自動翻訳には誤りや不正確な表現が含まれる場合があります。原文(元の言語の文書)が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用によって生じたいかなる誤解や誤認についても、当方は責任を負いかねます。