Amazon Bedrockの活用例：Anthropic - Claudeを使ったサンプルアプリケーション（後編）

本記事は [Amazon Bedrock Advent Calendar 2023 by ナレコム](https://qiita.com/advent-calendar/2023/bedrock-knowledgecommunication) の19日目の記事です。

Amazon Bedrock Advent Calendar 2023 by ナレコム ではAmazon Bedrockの基本的な概要から具体的な各モデルの作り方や事例紹介などを行っていきます。

### はじめに

Amazon Bedrockは多くのサンプルアプリケーションを提供し、ユーザーがPlayground上で実際に試すことができるように設計されています。

今回は2023年12月現在33個公開されているExamplesの内、 **Anthropic - Claude** を使った10個の中の5個を後編として紹介します。記事では、これらの例のプロンプトとレスポンスをわかりやすく日本語で紹介します。

| モデル名                          | 概要・特徴 |
|-----------------------------------|------------|
| Claude (Anthropic)               | 高度なテキスト理解と生成に特化した言語モデル。幅広いテキストベースのアプリケーションに対応。 |


###### 前編5個の紹介はこちら

https://qiita.com/akiraokusawa/items/499f145a38a7d1db6676


### 例６）文章の編集

既存のテキストを新しい形式やスタイルに変換するためのプロンプトの例。

:::note info
**プロンプト**
人間: 以下の段落を次のバージョン指示に従って書き換えてください。各指示に対して一つのバージョンを作成し、各バージョンを<version1>や<version2>などの番号付きバージョンタグで囲んでください。

以下が書き換える段落です:
"1758年、スウェーデンの植物学者兼動物学者であるカール・リンネは彼の「自然体系」において、種の2語命名法（二名法）を発表しました。Canisとはラテン語で「犬」を意味し、この属の下には家犬、オオカミ、ゴールデンジャッカルを挙げています。"

こちらがバージョン指示です:

- より詳細を減らす
- 5年生にも理解できるように

アシスタント:
:::

:::note warn
**レスポンス**
\<version1>
1758年に、カール・リンネという植物学者が動物や植物の種を2つの言葉で名付けるシステムを紹介する本を出版しました。例えば、「イヌ」は「Canis」という言葉で始まり、このグループには家庭犬、オオカミ、ジャッカルが含まれています。
\</version1>
\<version2>
1758年、カール・リンネという科学者が、動物に2つの部分からなる名前をつける本を書きました。たとえばオオカミには「カニス・ルプス」と名付けました。「カニス」とはラテン語で「イヌ」を意味します。彼はオオカミ、イヌ、ジャッカルに「カニス」という言葉を使いました。この2つの言葉を使って動物に名前をつける方法は、今でも使われています。
\</version2>
:::

### 例７）情報抽出

会議記録からの要約と重要ポイントの抽出に関するプロンプトの例。

:::note info
**プロンプト**
人間: 会議の記録を渡すので、その要約をしてください。
以下が記録です：

\<transcript>
ジェームズ: サラ、マックスウェルアカウントのマーケティングプロジェクトの状況を確認しましょうか？
サラ: いいですね。今日の議題は何ですか？

**（公式サンプルでは全文ありますが長いため略）**

ジェームズ: それでは、また話しましょう。
サラ: ありがとうございます、ジェームズ。さようなら！
\</transcript>

あなたのタスクはその記録を要約し、以下の質問に箇条書き形式で答えることです：

- 会議に誰が出席していましたか？
- 彼らの職務は何でしたか？
- 会議の内容は何でしたか？
- その会議からの重要ポイントやアップデートは何ですか？
- 重要なポイントと次のステップ、各タスクが誰に割り当てられているか、そしてこれらのタスクのタイムラインは何ですか？

アシスタント：
:::

:::note warn
**レスポンス**

会議記録からの主要ポイントの要約は以下の通りです：

- 会議に出席していたのは？
    - ジェームズとサラ
- 彼らの職務は？
    - ジェームズはウェブサイト開発とSEO最適化を監督
    - サラはブランディングとパッケージデザインをリード
- 会議の内容は？
    - マックスウェルアカウントのマーケティングプロジェクトの状況確認
- 重要なポイントとアップデート：
    - フォーカスグループはブランディングコンセプトに関して良いフィードバックを提供
    - 製品サンプルが遅れたため、計画通りの活動ができなかった
    - サラは2週間後にフォローアップのフォーカスグループを予定
    - ウェブサイト開発は順調で3月15日のローンチに向けて進行中
    - サラは来週初めにブランディングアセットをジェームズに送信予定
- 重要なポイントと次のステップ：
    - サラが月半ばまでに2回目のフォーカスグループセッションを予約（期限：3月中旬）
    - サラが来週初めにブランディングガイドラインをジェームズに送信（期限：3月初旬）
    - ジェームズとサラが次の木曜日に再会し、フォーカスグループの結果とローンチタイムラインを詳しく確認予定
:::

### 例８）JSON出力

複数の俳句をJSON形式で生成するプロンプトの例。

:::note info
**プロンプト**
人間: 猫についての俳句を2つ書いてください。各俳句の「first_line」、「second_line」、「third_line」というキーを使ってJSON形式で表現してください。
:::

:::note warn
**レスポンス**

アシスタント:
以下は、猫についての二つの俳句をJSON形式で表したものです：

```json
{
  "first_haiku": {
    "first_line": "Lazy cat napping",  
    "second_line": "In the warm sunshine",
    "third_line": "On the soft couch"
  },
  "second_haiku": {
    "first_line": "Playful kitten pouncing",
    "second_line": "Chasing string across floor",  
    "third_line": "Ears perked, eyes bright"
  }
}
```
:::

上の俳句を日本語にすると以下のような感じですかね。
```
怠けて昼寝
暖かな日差しの中
柔らかソファで
```
```
遊ぶ子猫
床で糸を追いかけ
耳ピーン、目輝く
```

### 例９）複数選択の分類

メールを分類するためのプロンプトの例。

:::note info
**プロンプト**
人: あなたは、顧客サービス担当者として、メールを種類別に分類する仕事をしています。回答を出力してから、その分類の理由を説明してください。このメールはどのように分類しますか？

\<email>
Mixmaster 4000を塗料を混ぜるのに使えますか、それとも食品を混ぜるためだけのものですか？
\</email>

カテゴリーは以下の通りです：
(A) 購入前の質問
(B) 故障または不良品
(C) 請求に関する質問
(D) その他（説明してください）
:::

:::note warn
**レスポンス**
アシスタント：
このメールは次のように分類します：

D) その他（製品使用に関する質問）

このメールは、特定の製品（Mixmaster 4000）を特定の目的（塗料の混合）に使用できるかどうかを尋ねています。請求、故障品、または購入前の質問に関するものではありません。むしろ、製品の意図された使用方法と機能について尋ねているため、「その他 - 製品使用に関する質問」として分類します。
:::


### 例１０）個人情報の削除

指定されたテキストから個人を特定できる情報（PII）を削除するためのプロンプトの例。

:::note info
**プロンプト**
人:
\<text>
ジョー: ハンナ、こんにちは！
ハンナ: ジョー、こんにちは！来てるの？
ジョー: うん！あのさ、うっかり住所を忘れちゃって。
ハンナ: 大丈夫だよ！住所は4085 Paco Ln, Los Altos CA 94306だよ。
ジョー: 了解、ありがとう！
\</text>

このテキストからすべての個人を特定できる情報を削除し、"XXX"に置き換えてください。名前、電話番号、メールアドレスがXXXに置き換わることが非常に重要です。

個人情報が削除されたテキストを\<response>\</response> XMLタグで出力してください。
:::

:::note warn
**レスポンス**
アシスタント：
個人を特定できる情報が削除されたテキストは以下の通りです：

\<response>
XXX: こんにちは、XXX！
XXX: XXX、こんにちは！来てるの？
XXX: うん！あのさ、住所を忘れちゃって。
XXX: 大丈夫だよ！住所はXXX。
XXX: 了解、ありがとう！
\</response>
:::

### まとめ

この記事では、Amazon Bedrockが提供するサンプルアプリケーションの一部として、Anthropicの言語モデル「Claude」を使用した10個の例のうち後半の5個を紹介しています。Claudeは、高度なテキスト理解と生成に特化した言語モデルで、幅広いテキストベースのアプリケーションに対応しています。

以下は、紹介された後半5つの例です：

1. **例６ - 文章の編集**: 既存のテキストを異なるスタイルや形式に書き換える例。カール・リンネの二名法に関する文章を、より簡素なものや子供向けに書き換えるタスクが示されています。

2. **例７ - 情報抽出**: 会議記録からの要点を要約し、重要な情報を抽出する例。出席者、彼らの役割、会議の内容、重要なアップデート、次のステップなどが整理されています。

3. **例８ - JSON出力**: 猫についての俳句をJSON形式で表現する例。各俳句の各行がJSONのキーとして設定されています。

4. **例９ - 複数選択の分類**: メールを特定のカテゴリに分類し、その理由を説明する例。製品の使用に関する質問を「その他」のカテゴリで分類しています。

5. **例１０ - 個人情報の削除**: 指定されたテキストから個人を特定できる情報を削除し、XXXに置き換える例。会話文中の名前や住所がXXXで置き換えられています。

これらの例から、Claudeモデルがさまざまなタイプのテキスト処理タスクに対応できることがわかります。記事は、Claudeの応用可能性と柔軟性を理解するための参考になります。

---

また、ナレッジコミュニケーションでは  **「[Musubite](https://recruiting.musubite-job.com/features/company/knowledge-communication)」** というエンジニア同士のカジュアルトークサービスを利用しています！この記事にあるような生成AI 技術を使ったプロジェクトに携わるメンバーと直接話せるサービスですので興味がある方は是非利用を検討してください！

https://recruiting.musubite-job.com/features/company/knowledge-communication