From c7bf2f55c272a48381cc74363946e0fe442157da Mon Sep 17 00:00:00 2001 From: Yoshio Terada Date: Thu, 21 Dec 2023 07:54:23 +0900 Subject: [PATCH] Update Japanese Expression Update Japanese Expression --- .../translations/ja-jp/README.md | 110 +++++++++--------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/06-text-generation-apps/translations/ja-jp/README.md b/06-text-generation-apps/translations/ja-jp/README.md index d9ee1e1b7..112d53fad 100644 --- a/06-text-generation-apps/translations/ja-jp/README.md +++ b/06-text-generation-apps/translations/ja-jp/README.md @@ -4,9 +4,9 @@ > *(上記の画像をクリックすると、レッスン・ビデオを表示します)* -これまでのレッスンを通じて、プロンプトの基本的な概念や、「プロンプトエンジニアリング」と呼ばれる分野が存在することを学んできました。ChatGPT、Office 365、Microsoft Power Platform など、操作可能な多くのツールは、プロンプトを使って、何かを成し遂げるためのサポートを行います。 +これまでのレッスンを通じて、プロンプトの基本的な概念や、「プロンプト・エンジニアリング」と呼ばれるテクニックについて学んできました。ChatGPT、Office 365、Microsoft Power Platform など、プロンプトで操作可能な多くのツールは、皆様が何かを成し遂げるためのサポートを行います。 -アプリに、このような体験を追加するためには、プロンプトや Completion といった概念を理解し、使用するライブラリを選択する必要があります。この章では、それらを具体的に学んでいきます。 +皆様のアプリケーションに、このような機能を追加するためには、プロンプトや Completion といった概念を理解し、使用するライブラリを選択する必要があります。この章では、それらを具体的に学んでいきます。 ## はじめに @@ -20,9 +20,9 @@ このレッスンを修了すると、下記を理解できます: -- テキスト生成アプリケーションとは何かを説明する事ができる +- テキスト生成アプリケーションとは何かを説明できる - OpenAI を使用してテキスト生成アプリを構築する -- 使用するトークン数を増減させたり、温度を変更し、さまざまな出力を得られるようにアプリを構成する +- 使用するトークン数を増減させたり、温度を変更し、さまざまな出力が得られるようにアプリを構成する ## テキスト生成アプリについて @@ -36,36 +36,36 @@ コマンドを入力するコマンドベースのアプリと比較してください。 - **入力可能なコマンド数は有限** 任意のコマンドを入力できるわけではなく、アプリがサポートしているコマンドのみ入力可能です。 -- **言語特有** 一部のアプリはまれに多言語をサポートしていますが、たとえ追加言語サポートが可能な場合も、基本的には特定の言語用にアプリは実装されています。 +- **言語特有** 一部のアプリはまれに多言語をサポートしていますが、たとえ追加言語サポートが可能な場合でも、基本的には特定の言語用にアプリは実装されています。 ### テキスト生成アプリの利点 それでは、テキスト生成アプリはどう違うのでしょうか? -テキスト生成アプリでは、コマンド数や特定の入力する言語に制約されることなく、より柔軟に操作でき、自然言語を使ってアプリと対話することができます。さらに、既に大量のテキストや音声データの情報から訓練されたデータ・ソースを利用しているため、従来のアプリがデータベースの内容に制限されることとは対照的に、利用可能な情報が大幅に増えます。 +テキスト生成アプリでは、コマンド数や特定の入力言語に制約されることなく、より柔軟に操作でき、自然言語を使ってアプリと対話できます。さらに、既に大量のテキストや音声データの情報から訓練されたデータ・ソースを利用しているため、従来のアプリがデータベースの内容に限定されるのとは対照的に、利用可能な情報が大幅に増えます。 ### テキスト生成アプリで何が作れるのでしょうか? 作れるものはたくさんあります。例えば: -- **チャットボット**: 所属する会社や、提供する製品について質問に答えるチャットボットは、良い選択肢です -- **ヘルパー** LLM は、テキストの要約、テキストから知見の抽出、履歴書作成のようなテキスト生成など、様々なことに利用できます -- **コード・アシスタント** 使用する言語モデルによっては、プログラミング・コードの作成を支援するコード・アシスタントも作れます。例えば、GitHub Copilot や ChatGPT のような製品を使って、コードの作成を支援することができます。 +- **チャットボット**: 所属する会社や、提供する製品について質問に答えられるチャットボットは有用です +- **ヘルパー** LLM は、テキストの要約、テキストから知見の抽出、履歴書作成のように、様々なテキスト生成で利用できます +- **コード・アシスタント** 使用する言語モデルによっては、プログラミング・コードの作成を支援するコード・アシスタントも作れます。例えば、GitHub Copilot や ChatGPT のような製品を使って、コード作成の支援もできます。 ## どこから始めればよいのでしょうか? まず、LLM と統合する方法を見つける必要があります。これには通常、以下の2つのアプローチが含まれます: -- API の使用:プロンプトを含む HTTP リクエストを作成し、生成されたテキストを取得 +- API の使用:プロンプトを含む HTTP (RESTful) リクエストを作成し、生成されたテキストを取得 - ライブラリの使用:API 呼び出しをカプセル化したライブラリを使用し API 呼び出しより簡単に利用可能 ## ライブラリ/SDK -LLMを操作するためのいくつかの有名なライブラリがあります: +LLMを操作するために、いくつかの有名なライブラリがあります: - **OpenAI** このライブラリを使用すると、モデル接続とプロンプトの送信が簡単です -また、より高いレベルで動作するライブラリもあります: +また、より高レベルで動作するライブラリもあります: - **Langchain** Langchain はよく知られており、Python をサポートしています - **Semantic Kernel** Semantic Kernelは、C#、Python、Java をサポートするMicrosoft 純正のライブラリです @@ -76,7 +76,7 @@ LLMを操作するためのいくつかの有名なライブラリがありま ### OpenAI のインストール -OpenAI や Azure OpenAI と対話するためのライブラリはたくさんあります。また、C#、Python、JavaScript、Java など、さまざまなプログラミング言語を使用することも可能です。今回は、Python 用の `OpenAI` ライブラリを使用することにしました。ライブラリのインストールには `pip` を使用します。 +OpenAI や Azure OpenAI と対話するためのライブラリはたくさんあります。また、C#、Python、JavaScript、Java など、さまざまなプログラミング言語で利用可能です。今回は、Python 用の `OpenAI` ライブラリを使用します。そして、ライブラリのインストールには `pip` を使用します。 ```bash pip install openai @@ -84,7 +84,7 @@ pip install openai ### リソースの作成 -下記の手順に従い実行してください: +下記の手順に従い操作を行なってください: - Azureのアカウントを作成します。[https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-yoterada) - Azure Open AI へのアクセス権限を取得します。[https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-yoterada) からアクセス申請を提出します @@ -97,21 +97,21 @@ pip install openai ### API キーとエンドポイントを取得 -ここで、`OpenAI` ライブラリに対してどの API キーを使用するか指定する必要があります。API キーを見つけるためには、Azure OpenAI リソースの「Keys and Endpoint」セクションに移動し、「Key 1」の値をコピーします。 +ここで、`OpenAI` ライブラリに対してどの API キーを使用するか指定します。API キーを見つけるためには、Azure OpenAI リソースの「Keys and Endpoint」セクションに移動し、「Key 1」の値をコピーしてください。 ![Keys and Endpoint resource blade in Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-yoterada) -キー・データをコピーしたので、ライブラリにそれを使用するよう指定します。 +キーをコピーしたので、それをライブラリで利用できるように指定します。 > [!NOTE] -> コードから API キーを分離することは重要です。環境変数を使用して設定できます。 +> コードから API キーを分離することは重要です。下記のように環境変数を使用して設定できます。 > -> - 環境変数 `OPENAI_API_KEY` に API キーを設定します +> - 環境変数 `OPENAI_API_KEY` に API キーを設定します > `export OPENAI_API_KEY='sk-...'` ### Azure の設定 -Azure OpenAI を使用している場合、下記の設定を行います: +Azure OpenAI を使用している場合、下記の設定を追加で行います: ```python openai.api_type = 'azure' @@ -120,9 +120,9 @@ openai.api_version = '2023-05-15' openai.api_base = os.getenv("API_BASE") ``` -上記は、それぞれ下記の設定を行っています: +上記は、それぞれ下記の設定を行います: -- `api_type`を`azure`に設定します。これにより、ライブラリは OpenAI ではなく Azure Open AI を使用します。 +- `api_type`を`azure`に設定します。これにより、ライブラリは OpenAI ではなく Azure Open AI に接続します。 - `api_key`は、Azure Portal で取得した API キーを設定します。 - `api_version`は、使用する API のバージョンです。執筆時点での最新バージョンは`2023-05-15`です。 - `api_base` は API のエンドポイントです。これは、Azure Portal の API キーの下側に記載されています。 @@ -146,7 +146,7 @@ print(completion.choices[0].text) ### Chat completions 上記では、`Completion` クラスを使用してテキストを生成する方法を見てきました。 -しかし、チャット・ボットには、より適した `ChatCompletion` という別のクラスが用意されています。下記にサンプルを記述しています。 +しかし、チャット・ボット用には、より適した `ChatCompletion` という別のクラスが用意されています。下記にサンプルを記述しています。 ```python import openai @@ -157,11 +157,11 @@ completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"rol print(completion.choices[0].message.content) ``` -この機能の詳細は、次の章で説明します。 +この機能の詳細は、次の章で詳しく説明します。 ## エクササイズ - 初めてのテキスト生成アプリ -OpenAI のセットアップと設定方法を学んだので、次に初めてのテキスト生成アプリを実装してみましょう。アプリの実装は、下記の手順で行なってください: +OpenAI のセットアップと設定方法を学んだので、次に初めてのテキスト生成アプリを実装してみましょう。アプリの実装は、下記の手順で行ないます: 1. 仮想環境を作成し、OpenAI をインストールします: @@ -175,7 +175,7 @@ pip install openai > Windows 環境で行う場合は、`source venv/bin/activate` の代わりに`venv\Scripts\activate` を入力してください。 > [!NOTE] -> Azure OpenAI キーは、[https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-yoterada) に移動し、`OpenAI` を検索し、`OpenAI Resource` を選択し、その後 `Keys and Endpoint` を選択し、`Key 1` の値をコピーてください。 +> Azure OpenAI キーは、[https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-yoterada) から `OpenAI` を検索し、`OpenAI Resource` を選択してください。その後 `Keys and Endpoint` を選択し、`Key 1` の値をコピーてください。 1. *app.py* ファイルを作成し、下記のコードを記述してください: @@ -207,24 +207,24 @@ print(completion.choices[0].text) ```output おじいさんとおばあさんが住んでいました。 -(※ 上記の回答内容は、訳者が日本語で実行した場合にあわせて変更しました。英語で実行した場合と異なる結果が得られます。) +(※ 上記の回答内容は、訳者が日本語環境での実行にあわせて変更しました。英語で実行した場合と異なる結果が得られます。) ``` ## さまざまな種類のプロンプト、さまざまな用途 -これまで、プロンプトを使用してテキストを生成する方法を見てきました。色々な種類のテキストを生成するために、動作しているプログラムを変更・修正することも可能です。 +これまで、プロンプトを使用してテキストを生成する方法を見てきました。色々な種類のテキストを生成するため、今動いているアプリケーションに対して変更・修正を加えテキスト生成機能を追加できます。 プロンプトは様々なタスクに使用できます。例えば: -- **様々なテキストを生成** 詩やクイズの質問などを生成することができます +- **様々なテキストを生成** 詩やクイズの質問などを生成できます - **情報の検索** 「Web 開発における CORS の意味は何ですか?」のような情報を検索するためにプロンプトを使用できます -- **コード生成** 電子メール・アドレスの検証に使用する正規表現を作成したり、Web アプリケーションのようなプログラム全体のコードを生成するためにプロンプトを使用することも可能です。 +- **コード生成** 電子メール・アドレスの検証に使用する正規表現を作成したり、Web アプリケーションのようなプログラム全体のコードを生成するためにプロンプトを使用できます。 ## より実用的な使用例: 料理レシピの作成 家に食材があって、何か料理を作りたい場合を想像してください。そのためにレシピが必要です。適切なレシピを見つける方法の一つに検索エンジンがありますが、LLM(大規模言語モデル)を使ってレシピを探すこともできます。 -たとえば、下記のようなプロンプトを記述することができます: +たとえば、下記のようなプロンプトを記述できます: > 「鶏肉、じゃがいも、にんじん」を使った料理のレシピを 5 つ教えてください。レシピごとに使用する全ての食材をリストしてください。 @@ -292,7 +292,7 @@ print(completion.choices[0].text) - ドライオレガノ小さじ1 ``` -この結果は素晴らしいですね、どのような料理を作れるかがわかりました。ここで役に立つ、改善点2つをご覧ください: +この結果は素晴らしいですね、食材からどのような料理を作れるかがわかりました。ここで役に立つ、改善点2つをご覧ください: - 好きでない食材やアレルギーのある食材を除外する - 家に全ての食材がない場合に備え、買い物リストを作成する @@ -368,7 +368,7 @@ print(completion.choices[0].text) - 胡椒 ``` -以上が、5 つのレシピで、ニンニクは記載されておらず、家にすでにあるものを考慮し、買い物リストも記載されてます。 +以上が新しい、5 つのレシピで、ニンニクは記載されておらず、家にすでにあるものを考慮し、買い物リストも記載されてます。 ## 演習 - レシピ作成を構築する @@ -397,9 +397,9 @@ prompt = f"鶏肉、じゃがいも、にんじんを使った料理のレシピ > 注意: LLM は非決定的(非確実)なので、プログラムを実行するたびに上記とは異なる結果が得られるかもしれません。 -さて、どうすれば改善できるか見てみましょう。改善するために、コードに柔軟性を持たせて、材料やレシピの数を変更できるようにします。 +さてそれでは、どうすれば改善できるのかを見てみましょう。改善するために、コードに柔軟性を持たせ、材料やレシピの数を変更できるようにします。 -1. 以下のようにコードを変更してください。 +1. 以下のようにコードを修正してください。 ```python no_recipes = input("レシピの数を入力してください(例:5): ") @@ -410,7 +410,7 @@ ingredients = input("食材のリストを入力してください(例:鶏 prompt = f"{ingredients} を使った料理のレシピを {no_recipes} つ教えてください。レシピごとに、使用するすべての食材をリストしてください" ``` -このコードをテスト実行すると、下記のような結果が得られます。 +このコードを実行すると、下記のような結果が得られます。 ```output レシピの数を入力してください(例:5): 3 @@ -423,7 +423,7 @@ prompt = f"{ingredients} を使った料理のレシピを {no_recipes} つ教 ### フィルターと買い物リストを追加して改善する -上記で、入力に基づいてレシピを生成し、その数や使用する食材を柔軟に変更できるアプリが完成しています。 +上記で、入力に基づいてレシピを生成し、その数や使用する食材を柔軟に変更できるアプリが完成しました。 さらに改善するために、下記の機能を追加したいと思います。 @@ -435,7 +435,7 @@ filter = input("フィルター(例:ベジタリアン、ビーガン、グ prompt = f"{ingredients} を使った料理のレシピを {no_recipes} つ教えてください。レシピごとに、使用するすべての食材をリストしてください。ただし、{filter}は除外してください。" ``` -上記では、プロンプトの最後に `{filter}` を追加し、ユーザーからフィルター値も取得しています。 +上記では、プロンプトの最後に `{filter}` を追加し、ユーザーからフィルターの値も取得しています。 プログラムを実行すると、下記のような入出力結果が得られます。 @@ -495,13 +495,13 @@ prompt = f"{ingredients} を使った料理のレシピを {no_recipes} つ教 5. スープに加えてさらに5分間煮ます、またはスープがとろみを帯びるまで。 ``` -ご覧頂いたの通り、ミルクを含むレシピは全てフィルタリングされています。しかし、もし乳製品を摂取すると体調が悪くなる方であれば、チーズを含むレシピもフィルタリングしたいとお考えでしょう。その場合は、明確化にフィルタリングで指示する必要があります。 +ご覧頂いたの通り、ミルクを含むレシピは全てフィルタリングされています。しかし、もし乳製品を摂取すると体調が悪くなる方であれば、チーズを含むレシピもフィルタリングしたいとお考えになるでしょう。その場合は、明確化にフィルタリングで指示する必要があります。 -- **買い物リストを作成** 我々は、家にすでにあるものを考慮して、買い物リストを作成したいと考えています。 +- **買い物リストを作成** 次に、家にすでにあるものを考慮して、買い物リストを作成したいと考えています。 -この機能は、一つのプロンプトで全てを解決する事もできますし、二つのプロンプトに分けて実装する事もできます。ここでは後者の二つに分けるアプローチを採用します。ここでは、追加のプロンプトを提案していますが、それを機能させるためには、前のプロンプトの結果を後ろのプロンプトのコンテキストに追加する必要があります。 +この機能は、一つのプロンプト内に全てを記述できますし、二つのプロンプトに分けて記述する事もできます。ここでは後者の二つに分けるアプローチを採用します。ここでは、追加のプロンプトを提案していますが、それを機能させるためには、前のプロンプトの結果を後ろのプロンプトのコンテキストに追加する必要があります。 -最初のプロンプトの結果を出力するコードの部分を見つけ、下記のコードを追加します: +最初のプロンプトの結果を出力するコードを見つけ、下記のコードを追加します: ```python old_prompt_result = completion.choices[0].text @@ -523,7 +523,7 @@ print(completion.choices[0].text) new_prompt = f"{old_prompt_result} {prompt}" ``` -1. 新しいリクエストを作成しますが、最初のプロンプトで要求したトークンの数も考慮に入れて、今回は `max_tokens` を1200とします。 +1. 新しいリクエストを作成しますが、最初のプロンプトで要求したトークン数も考慮に入れて、今回は `max_tokens` を1200とします。 ```python completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) @@ -548,9 +548,9 @@ completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, ## セットアップを改善しましょう -現状で、動作するコードがありますが、さらに改善するためにはいくつかの調整が必要です。以下に、改善すべき点をいくつか挙げてみます。 +現状で、動作するコードができていますが、さらに改善するためにはいくつかの調整が必要です。以下に、改善すべき点をいくつか挙げてみます。 -- **API キーの機密情報をコードから分離する** 機密情報はコードに含めるべきではなく、安全な場所に保存すべきです。機密情報をコードから分離するために、環境変数や `python-dotenv` のようなライブラリを使ってファイルから読み込むことができます。コード上での実装は以下のようになります: +- **API キーの機密情報をコードから分離する** 機密情報はコードに含めるべきではなく、安全な場所に保存すべきです。機密情報をコードから分離するために、環境変数や `python-dotenv` のようなライブラリを使ってファイルから読み込めます。実装は下記のようになります: 1. 下記の内容を含む `.env` ファイルを作成します: @@ -566,7 +566,7 @@ OPENAI_API_VERSION=2023-05-15 OPENAI_API_BASE= ``` -コード上では、以下のように記述して環境変数から読み込む事ができます: +コード上では、下記のように記述し環境変数から読み込めます: ```python from dotenv import load_dotenv @@ -576,7 +576,7 @@ load_dotenv() openai.api_key = os.environ["OPENAI_API_KEY"] ``` -- **トークンの長さ** 生成するテキストに必要なトークン数を考慮すべきです。トークンは増えれば増えるほどお金がかかるため、可能な限りトークンの数を節約するようにしましょう。例えば、プロンプトをどのように表現すればトークンを少なくできるかご検討ください。 +- **トークンの長さ** 生成するテキストに必要なトークン数を考慮してください。トークンは増えれば増えるほど費用がかかるため、可能な限りトークン数を節約するようにしましょう。例えば、プロンプトをどのように表現すればトークンを少なくできるかご検討ください。 扱うトークン数を変更するには、`max_tokens` パラメータを使用します。例えば、100 トークンを使用したい場合は、以下のようにします: @@ -584,7 +584,7 @@ openai.api_key = os.environ["OPENAI_API_KEY"] completion = openai.Completion.create(model="davinci-002", prompt=prompt, max_tokens=100) ``` -- **温度 (Temperature)** これまで触れていなかった温度ですが、プログラムの実行結果に大きな影響を与えます。温度値が高いほど、出力はランダムになります。逆に、温度値が低いほど、出力は予測可能になります。出力にバリエーションが必要かどうかを考えてみてください。 +- **温度 (Temperature)** これまで触れていなかった温度ですが、プログラムの実行結果に大きな影響を与えます。温度が高いほど(値が 1 に近いほど)、出力はランダムになります。逆に、温度値が低いほど(値が 0 に近いほど)、出力結果は予測可能になります。ご自身のアプリで出力にバリエーションが必要かどうかを考えてください。 温度を変更するには、`temperature` パラメータを使用します。例えば、温度を0.5に設定したい場合は、以下のようにします: @@ -597,11 +597,11 @@ completion = openai.Completion.create(model="davinci-002", prompt=prompt, temper ## 課題 この課題で何を作るかは任意です。 - -下記にいくつかの例を挙げてみます: + +下記にいくつかの例を挙げます: - レシピ生成アプリを微調整してさらに改善しましょう。温度の値やプロンプトを変えて、どのような結果が得られるかお試しください。 -- 「勉強仲間」を作ってみましょう。このアプリは、例えば Python に関する質問に対して答えることができます。「Python の "特定のトピック" は何ですか?」といったプロンプトを設けたり、「"特定のトピック" に関するコードを教えてください」といったプロンプトを設けることもできます。 +- 「勉強仲間」を作ってみましょう。このアプリは、例えば Python に関する質問に対して答えます。「Python の "特定のトピック" は何ですか?」といったプロンプトを受け付けたり、「"特定のトピック" に関するコードを教えてください」といったプロンプトを受け付けられます。 - 「歴史ボット」を作って、歴史を鮮やかに再現してみましょう。ボットに特定の歴史的人物を演じさせ、その人物の生涯やその時代について質問してみましょう。 ## 解決 @@ -613,7 +613,7 @@ completion = openai.Completion.create(model="davinci-002", prompt=prompt, temper ```text - "あなたは Python 言語のエキスパートです -下記の形式で Python の初心者向けレッスンを提案してください: +下記の形式で Python の初心者用レッスンを提案してください: 形式: - 概念: @@ -623,13 +623,13 @@ completion = openai.Completion.create(model="davinci-002", prompt=prompt, temper ### 歴史ボット -ここでは、使用できるプロンプトをいくつか紹介します。 +ここで、使用できるプロンプトをいくつか紹介します。 ```text -- "あなたはエイブラハム・リンカーンです。あなた自身について 3 つの文章を使って教えてください、そしてエイブラハムが使ったであろう文法と言葉を使って答えてください" +- "あなたはエイブラハム・リンカーンです。あなたご自身について 3 つの文章を使って教えてください、そしてエイブラハムが使ったであろう文法と言葉を使って答えてください" - "あなたはエイブラハム・リンカーンです。エイブラハムが使ったであろう文法と言葉を使って答えてください: - あなたの最大の功績について、300語で教えてください" + あなたの最大の功績について、300文字で教えてください" ``` ## 知識チェック @@ -642,7 +642,7 @@ completion = openai.Completion.create(model="davinci-002", prompt=prompt, temper ## 🚀 チャレンジ -課題に取り組む際、温度を 0、0.5、1 に変えて設定してみてください。0 が最も変化が少なく、1 が最も大きいことを覚えておいてください、アプリに最適な値はどれですか? +課題に取り組む際、温度を 0、0.5、1 に変えて設定してみてください。0 が最も変化が少なく、1 が最も大きくなります。ぜひ覚えておいてください、皆様のアプリにとって最適な値は何ですか? ## お疲れ様でした! 学習を続ける