From 5f386bb5ded430820391e83921d46f58480abcbc Mon Sep 17 00:00:00 2001 From: Yoshio Terada Date: Thu, 21 Dec 2023 07:11:27 +0900 Subject: [PATCH] Modified Japanese expression Modified Japanese expression --- .../translations/ja-jp/README.md | 81 ++++++++++--------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/05-advanced-prompts/translations/ja-jp/README.md b/05-advanced-prompts/translations/ja-jp/README.md index 6aa01caa1..08833f266 100644 --- a/05-advanced-prompts/translations/ja-jp/README.md +++ b/05-advanced-prompts/translations/ja-jp/README.md @@ -2,40 +2,38 @@ [![高度なプロンプトの作成](../../images/05-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://youtu.be/32GBH6BTWZQ?WT.mc_id=academic-105485-yoterada) -前の章で学んだことをいくつかおさらいしましょう。 +前章までの学習内容をいくつかおさらいしましょう。 -> プロンプト _エンジニアリング_ は、より有用な指示やコンテキストを提供することで、**より適切な回答の提供に向けてモデルを導く**プロセスです。 +> 「_プロンプト・エンジニアリング_」は、より意味のある指示やコンテキスト(文脈)を提供し、「**適切な回答の提供に向けてモデルを導く**」プロセスです。 -また、プロンプトを書くには、関連するコンテキストを提供することで、プロンプトを作成する際 2つのステップがあり、2番目の部分は _最適化_、つまりプロンプトを徐々に改善する手法です。 +また、プロンプトを作成する際 2つのステップがあります。 +一つ目は関連するコンテキスト(文脈)を提供する手法で、二つ目は「_最適化_」つまりプロンプトを徐々に改善する手法です。 -ここまでで、プロンプトの書き方についての基本的な理解はできましたが、さらに深く掘り下げる必要があります。この章では、さまざまなプロンプトを試し、あるプロンプトが別のプロンプトよりも優れている理由を理解します。任意の LLM に適用できる、いくつかの基本的な手法に従いプロンプトを作成する方法を学習します。 +ここまでで、プロンプトの書き方についての基本的な内容は理解はできましたが、さらに深く掘り下げる必要があります。この章では、さまざまなプロンプトを試し、特定のプロンプトが別のプロンプトよりも優れている理由を理解します。任意の LLM に適用できる、いくつかの基本的な手法に従ってプロンプトを作成する方法を学習します。 ## はじめに このレッスンでは、下記の内容について説明します。 -- プロンプトにさまざまな手法を適用することで、プロンプト・エンジニアリングの知識を深めます -- 出力を変化させるようプロンプトを構成します - -- プロンプトには、さまざまな手法を適用することで、プロンプト・エンジニアリングの知識の幅を広げます -- 出力を変化させるようなプロンプトを作成します。 +- プロンプトに、さまざまな手法を適用し、プロンプト・エンジニアリングの知識の幅を広げます +- 出力を変化させるようなプロンプトを作成します ## 学習目標 このレッスンを修了すると、下記を理解できます: -- プロンプトの結果を改善するプロンプト・エンジニアリング手法を利用できる。 -- 多様な、あるいは決定的なプロンプトを実行できる。 +- 結果を改善するプロンプト・エンジニアリング手法を学ぶ +- 多様な、あるいは決定的なプロンプトを作成する ## プロンプト・エンジニアリング -プロンプト・エンジニアリングは、期待する結果を生み出すためのプロンプトを作成するプロセスです。プロンプト・エンジニアリングには、単にテキスト・プロンプトを書くだけではありません。プロンプト・エンジニアリングはエンジニアリング分野ではなく、期待する結果を得るために適用できる一連のテクニックです。 +プロンプト・エンジニアリングは、期待する結果を生み出すためのプロンプトを作成するプロセスです。単にテキスト・プロンプトを書くだけではありません。プロンプト・エンジニアリングはエンジニアリング分野ではなく、期待する結果を得るために適用できる一連のテクニックです。 ### プロンプトの例 次の基本的なプロンプトを見てみましょう。 -> 地理に関する質問を10問作成してください +> 地理に関する質問を 10 問作成してください このプロンプトの中では、実際には一連のさまざまなプロンプトのテクニックを適用しています。 @@ -46,39 +44,39 @@ ### 単純なプロンプトの制限 -期待する結果が得られる場合と得られない場合があります。地理は幅広いテーマであり、以下の理由により期待する結果が得られない場合があります。 +期待する結果が得られる場合と得られない場合があります。地理は幅広いテーマであり、幅広いテーマは以下の理由により期待する結果が得られない場合があります。 -- **大きな話題 :** 国、首都、川などのような話題は大きく、どのような結果が返されるか予想できません。 +- **大きな話題 :** 国、首都、川などのような話題は大きく、どのような回答結果が得られるか予想できません。 - **フォーマット :** 質問を特定の方法で書式設定したい場合はどうすればよいでしょうか。 ご覧のとおり、プロンプトを作成する際には考慮すべきことがたくさんあります。 -ここまでは、簡単なプロンプトの例を見てきましたが、生成 AI は、さまざまな役割や業界の人々を支援するために、より多くのことができます。次に、いくつかの基本的なテクニックを確認してみましょう。 +ここまでは、簡単なプロンプトの例を見てきましたが、生成 AI は、さまざまな役割や業界の人々を支援するために、より多くの作業ができます。次に、いくつかの基本的なテクニックを確認してみましょう。 ### プロンプトのテクニック -まずプロンプトは、大規模言語モデル (LLM) の登場で、_新たに出てきた技術_ で、これはモデルに組み込まれている機能ではなく、モデルを使用する際に使用するものだと理解する必要があります。 +まずプロンプトは、大規模言語モデル (LLM) の登場で、「_新たに出てきた技術_」で、これはモデルに組み込まれている機能ではなく、モデルを使うために使用するものだとご理解ください。 -LLM のプロンプトで利用できる、いくつかの基本的なテクニックがあります。それらを確認してみましょう。 +LLM のプロンプトで利用可能な、基本的なテクニックがいくつかあります。それらを確認してみましょう。 -- **Few shot prompting** プロンプトの最も基本的な形式で、いくつかの例を含む一つのプロンプトです。 -- **Chain-of-thought** このプロンプトは、問題を段階に分解し LLM に問い合わせします。 +- **Few shot prompting** プロンプトの最も基本的な形式で、いくつかの例 (質問例と回答例) を含む一つのプロンプトです。 +- **Chain-of-thought** このプロンプトは、問題を段階に分解し LLM に指示を与えます。 - **Generated knowledge** プロンプトの応答を改善するため、事実や知識をプロンプトに追加で提供します。 - **Least to most** Chain-of-thought(思考の連鎖)と同様に、この手法は問題を一連のステップに分解し、それらのステップを順番に実行するように指示します。 -- **Self-refine** この手法は、LLM の出力に対する評価と、それに対する改善要求を行います。 -- **Maieutic prompting** これは、LLM の回答が正しいことを確認し、回答の各部分を説明するように求めます。これは自己改善の一種です。 +- **Self-refine** この手法は、LLM からの出力結果を LLM 自ら再評価させ、評価結果に基づいて LLM に改善要求を行います。 +- **Maieutic prompting** これは、LLM の回答が正しいか確認するため、回答の各部分を説明するように求めます。これは自己改善の一種です。 ### Few-shot prompting このプロンプトはとても簡単で、一つのプロンプトといくつかの例から構成します。 -この手法は、LLM について学び始めたときに最初に使用する手法です。次に例を示します。 +この手法は、LLM について学び始めたときに最初に使用すると良い手法です。次に例を示します。 - プロンプト: 「代数とは何ですか?」 -- 回答: 「代数は、数学の一分野で、数学記号とそれらの記号を操作するためのルールを研究します。」 +- 回答: 「数学の一分野で、数の代わりに文字を用いて方程式の解法などを研究する学問です。」 ### Chain-of-thought -Chain-of-thought (思考の連鎖)は非常に興味深く、LLM を一連の段階に分けて回答を導く手法です。LLM が、何をどうやって行うかを理解するように指導する手法です。次の例を考えてみてください。Chain-of-thought を用いた場合と用いない場合の両方の例をご覧ください。 +Chain-of-thought (思考の連鎖) は、非常に興味深い手法で、一つの問題をいくつか複数の段階に分けて、LLM の回答を誘導する手法です。LLM が、何をどうやって処理を行うべきかを理解できるように指示する手法です。次の例を考えてみてください。Chain-of-thought を用いた場合と用いない場合の両方の例をご覧ください。まずは、Chain-of-thought を用いない例を見てみましょう。 - プロンプト: 「アリスはリンゴを 5 個持っていて、3 個を捨て、2 個をボブに渡し、ボブは 1 個を返します。アリスはリンゴを何個持っていますか?」 - 回答: 5 @@ -87,13 +85,13 @@ LLMは5と答えますが、これは間違いです。正しい答えはリン では、どうやって LLM がこれを正しく行うように教えることができるでしょうか? -Chain-of-thought を試してみましょう。Chain-of-thought を適用するためには: +次に、Chain-of-thought を試してみましょう。Chain-of-thought を適用するためには: 1. LLM に類似の例を示す。 2. 計算式と、それを正しく計算する方法を示す。 3. 元のプロンプトを提供する。 -という手順を踏みです。以下にその方法を示します。 +という手順を踏みます。以下にその方法を示します。 - プロンプト: 「リサはリンゴを7個持っていて、1個を捨て、4個をバートに渡し、バートは1個を返します。計算は次の通り: 7 - 1 = 6 @@ -102,21 +100,21 @@ Chain-of-thought を試してみましょう。Chain-of-thought を適用する アリスはリンゴを 5 個持っていて、3 個を捨て、2 個をボブに渡し、ボブは 1 個を返します。アリスはリンゴを何個持っていますか?」 - 回答: 1 -別の例と、計算式を用いて、少し長いプロンプトを作成し、元のプロンプトを提供することで、正しい答え 1 に到達する方法に注目してください。 +最初に類似した計算問題の計算順序や式を記述した、少し長いプロンプトを作成し、最後に本当に問い合わせしたい内容を記述し送信することで、正しい答え 1 が得られています。 ご覧の通り、Chain-of-thought (思考の連鎖) は非常に強力な手法です。 ### Generated knowledge -プロンプトを作成する際、多くの場合、自社のデータを活用します。プロンプトの一部は会社からの情報で、残りの部分は具体的な問い合わせ内容にします。 +企業環境で LLM を使用する際、Generated knowledge (生成された知識) は、プロンプトを作成する際に最も頻繁に使用する手法の一つです。Generated knowledge は、プロンプトに、会社のデータを追加する手法です。これにより、LLM が会社のデータを使用して、より正確な回答を生成できるようになります。 -例えば、保険業界であれば、プロンプトは以下のようになるでしょう。 +例えば、保険業界であれば、プロンプトは以下のようになります。 ```text {{company}}: {{company_name}} {{products}}: {{products_list}} -以下の予算と要件を考慮した上で、保険を提案してください: +以下の予算と要件を考慮し、保険を提案してください: 予算: {{budget}} 要件: {{requirements}} ``` @@ -190,6 +188,17 @@ AI アシスタントは以下のように回答します。 4. データをプロットする 5. データを提示する +> 訳者追記 +> 上記の説明に加え、Least-to-most に関して追加で説明します。Chain of thought と同様に、Least-to-most は問題を一連のステップに分解し、それらのステップを順番に実行するように指示します。 +> Chain of thought の場合は、問題の解き方をプロンプト内で具体的に指示するために、仮に解き方で記載した手順よりも難しい問題が与えられた場合は、時間を要するかもしくは解くことはできません。 +> 一方で、Least-to-most は、複雑な問題をより簡単なサブ問題に分解し、それらを順番に解いていきます。サブ問題を解く際には、前に解いたサブ問題の答えを利用します。 +> たとえば、難しい問題を解くために、最初にこの問題の解き方を教えてくださいという、最小の簡単な質問をします。その結果、AI はまず、その問題の解き方を考えて教えてくれます。この問題の解き方の情報を会話履歴に含めたままで、次に、オリジナルの問題をもう一度問い合わせします。すると、会話履歴に含まれる、解き方の情報を使って、オリジナルの問題を解くことができます。そのため、Chain of thought よりも、より難しい問題を解くことができるようになります。 +> 解き方 +> +> 1. 複雑な問題を一連の単純なサブ問題に分解する +> 2. サブ質問のそれぞれを、前の回答を元に解く +> 参考情報: [1. Least to Most Prompting](https://cobusgreyling.medium.com/least-to-most-prompting-b37ed2e19859?WT.mc_id=academic-105485-yoterada), [2. LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS (Original Paper)](https://arxiv.org/pdf/2205.10625.pdf?WT.mc_id=academic-105485-yoterada) + ### Self-refine, critique the results 生成 AI や LLM を使用する際、その出力をそのまま信じてはいけません。必ず確認が必要です。なぜなら、LLM は何が正しいかではなく、次に出てくる可能性が最も高いものを提示しているだけだからです。そのため、LLM に自己評価を求め、それによって自己改善するという手法が有効です。 @@ -418,7 +427,7 @@ app.run() > では、このような出力のバリエーションは問題なのでしょうか? -それは、皆様が何を実現したいかによります。特定の確実な応答を求めている場合、それは問題となります。しかし、「地理に関する任意の 3 つの質問を生成する」のように、出力のバリエーションに対して柔軟であれば問題ではありません。 +それは、皆様が何を実現したいかによります。特定の確実な回答を求めている場合、それは問題となります。しかし、「地理に関する任意の 3 つの質問を生成する」のように、出力のバリエーションに対して柔軟であれば問題ではありません。 ### 温度を使用して出力を変化させる @@ -560,7 +569,7 @@ Temperature (温度) パラメータは 0 から 1 までの値を持ってお ``` -ご覧いただいたように、結果は非常に多様になることがわかります。 +ご覧いただいたように、結果は非常に多様(違う内容)になることがわかります。 > なお、出力を変化させるために変更できるパラメータは他にもあります。例えば、top-k, top-p, repetition penalty, length penalty, diversity penalty などですが、これらはこのレッスンでは取り扱いません。 @@ -572,10 +581,10 @@ Temperature (温度) パラメータは 0 から 1 までの値を持ってお 以下に、そのおすすめの方法をいくつか紹介します。 -- **コンテキストを明確にする** コンテキストは重要で、ドメインやトピックなど、具体的に指定するほど良い結果が得られます。 -- **出力を制限する** 特定の項目数や特定の長さを求める場合は、それを明示的に指定しましょう。 +- **コンテキストを明確にする** コンテキスト(文脈)は重要で、ドメインやトピックなど、具体的に指定するほど良い結果が得られます。 +- **出力を制限する** 特定の項目数や特定の長さが必要な場合は、それを明示的に指定しましょう。 - **「何を」、「どうするか」を明確にする** 例えば、「Python の Web API を作成し、商品と顧客を設定し、それを 3 つのファイルに分けてください」といった、具体的な指示を出すようにしてください -- **テンプレートを活用する** 自社データをプロンプトに反映させたい場合が多いと思います。その際に、テンプレートを活用しましょう。テンプレートには、実際のデータに置き換えられる変数を設定できます。 +- **テンプレートを活用する** 自社データをプロンプトに反映させたい場合も多いと思います。その際に、テンプレートを活用しましょう。テンプレートには、実際のデータに置き換えられる変数を設定できます。 - **正確に記述する** スペル・ミスがあっても LLM は正しい回答を提供してくれるかもしれませんが、スペルが正確であれば、より良い回答が得られます。 ## 課題