祝GA！！Amazon BedrockとチャットができるLINEボットをオープンソースで公開しました - Serverless Application Repositoryから簡単インストール可

AWSの生成系AIのサービスAmazon Bedrockが**ローンチしました** 🎉🎊🎉🎊🎉

https://aws.amazon.com/jp/bedrock/

LINEのチャットでBedrockと会話ができる環境を構築しました。AWS Serverless Application Repositoryにて公開していますので、ソースのクローンやビルドといった作業も不要で、マネジメントコンソールから設定を少し行うだけで利用することが可能です。

---


## AWS Serverless Application Repositoryとは

要約 by Claude V2 (Amazon Bedrock)

> AWS Serverless Application Repositoryは、再利用可能なサーバーレスアプリケーションを共有・保存できるマネージドリポジトリです。ソースコードのクローンやビルド・パッケージ化、デプロイ前の発行が不要で、事前構築済みのアプリケーションをそのまま利用できます。これにより開発効率が上がり、ベストプラクティスの実現と市場投入の加速が期待できます。IAM統合によりリソースレベルのアクセス制御が可能です。構築したアプリケーションはRepositoryに公開することで他者と共有できます。アプリケーションにはSAMテンプレートが含まれ、ソースコードへのリンクも提供されます。Repositoryの利用に追加料金はかかりません。


## アーキテクチャ

システム全体のアーキテクチャはこの様になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/b7039358-af7d-c8ab-f0ce-79b94f0c520b.png)

AWSの構成はAWS LambdaやAmazon DynamoDBといったサーバーレスサービスのみで構成していますので、不要なコストをかけずに試すことが可能です。




## デプロイ手順

### LINE Messaging APIの設定

1. LINE Messaging APIのサイトで`コンソールにログイン`をクリックします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/9089789f-a5e0-24b9-cd6e-0a3f83b2a160.png)

1. ログイン後の画面でプロバイダーを選択し、`新規チャネル作成`をクリックします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2065763b-f966-0e68-1f11-2273d07c543b.png)

1. `Messaging API`を選択します。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/e0d6b7d1-65d0-c4f1-c944-34c9e96e78cc.png)

1. チャネル名などを入力してチャネルを作成します。

1. 作成後のチャネルの画面の下部にあるチャネルシークレットをメモします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/a501b9f1-2283-a9e4-d49e-6deaa2f5a0aa.png)

1. Messaging API設定タブに移動し、画面下部にあるチャネルアクセストークン（長期） の`発行`ボタンをクリックします。表示されるアクセストークンをメモします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/a6e4eb72-f19f-9452-6218-a8b25b86b482.png)

### AWS環境を構築する

:::note
Bedrockが使用できるリージョンで実行してください。
2023/09/28 23:40のGA時点では以下のリージョンのみが対応リージョンです。

* 米国東部 (バージニア北部) us-east-1
* 米国東部 (オハイオ) us-east-2
* 米国西部 (オレゴン) us-west-2
* アジアパシフィック (シンガポール) ap-southeast-1
:::

1. Bedrockの管理画面にて、モデルへのアクセス許可を申請します。申請はすぐに許可されると思います。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/08f39974-2d7a-dcc1-e691-986cc71f718c.png)

1. Serverless Application Repositoryに登録してある**bedrock-line-chat**のページを表示します。

    [bedrock-line-chat](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:ap-northeast-1:781749372177:applications/bedrock-line-chat)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2aa167c1-c6fa-dc6a-245b-41f27c89af85.png)

1. ページ下部のアプリケーションの設定に入力し、`デプロイ`ボタンをクリックします。

    | 項目 | 入力する値 |
    | --- | --- |
    | FoundationModel | 使用する基盤モデルの名称。以下のいづれかを入力します。<br> ・anthropic.claude-v2<br> ・anthropic.claude-v1<br> ・anthropic.claude-instant-v1 |
    | LineChannelAccessToken | LINE Messaging APIのチャネルアクセストークン（長期）  |
    | LineChannelSecret | LINE Messaging APIのチャネルシークレット |
    | NumOfHistory | 会話の履歴の数 |
    | このアプリがカスタム IAM ロールを作成することを承認します。 | チェックを入れる |

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/15a6954a-b6c6-8768-25dc-9d2c2cf643be.png)

1. デプロイには数分かかります。デプロイタブのSAMテンプレートセクションにある、`CloudFormation スタック`のリンクをクリックします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/7edea7f5-f013-70e7-5bb3-e19bfc0832d9.png)

1. CloudFormationの画面で出力タブに表示される`FunctionUrl`の値をメモします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/7c9f39ca-2792-64b8-1914-2d56fce70014.png)

### Webhook URLの設定

1. LINE Messaging APIの管理画面に戻り、Messaging API設定タブのWebhook設定セクションの`Webhook URL`にメモしたFunctionUrlの値をセットします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/da1b6fd8-aa64-716f-351f-d6d5ff8db6f5.png)

1. `検証`ボタンをクリックします。応答までのタイムアウトが設定されているようで、Lambdaの起動に時間がかかる場合はエラーとなりますが、10秒ほど間隔を開けて何度か実行すると成功すると思います。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f7fa6e09-e852-28f1-ffdd-0c99c2f6a3c3.png)

1. `Webhookの利用`チェックボックスを有効にします。

1. LINE公式アカウント機能セクションの応答メッセージ項目の`編集`ボタンをクリックします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/0f8cda8e-aa1b-3935-ad8e-4d922b3ed501.png)

1. 応答機能セクションの`あいさつメッセージ`と`応答メッセージ`をオフにします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/28fd8ea8-fe6b-13b6-3b8a-0ba6e7743c9a.png)

## LINEでチャットをお試し

設定が完了しましたので、Bedrockとチャットしてみましょう。LINE Messaging APIの管理画面のMessaging API設定タブにあるQRコードを読み込み、友だちに追加します。
チャット画面で

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f092169b-0e0c-ab9c-7b02-d4484ba9eb44.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/84a40ace-cf08-3cc7-1f75-e7d9fe9d5b4a.png)

なかなか饒舌です


## ソースコード

https://github.com/moritalous/bedrock-line-chat/