概要

ついにAWSから生成系AIサービス「Amazon Bedrock」が一般公開されました。
使ってみた系の記事はたくさんありますので、私は毎度お馴染み※のLINE botを作ってみました。

※個人で作ったLINE botはさまざまなものがあります。中には実際にイベントの披露宴にも採用されました。
参考:ハピネススカウターをレビューする – Qiita

ということで実際の動作を見ていきたいと思います。

完成品の動作

チャンネル名は「Bedrockくん」としました。スマートフォンもしくはPC版LINEアプリから話しかけるとその応答に合わせて返信します。

もちろん、Amazon Bedrockは日本語にも対応しています。

英語応答をテスト(スマートフォン版)

日本語の応答をテスト(スマートフォン版)

仕組み

今回はLINE APIのMessaging APIを使っています。LINE botが認識するWebhookのURLを使ってAWSと連携します。
AWS上ではLambdaが動作しており、LambdaからbedrockのランタイムAPIをboto3(AWS SDK for Python)で実行しています。
なお、リージョンはus-east-1で構築しています。
具体的な内容についてはブラッシュアップしてから公開したいと思います。

質問をいくつかしてみる

まずは序の口の挨拶と言葉の区別を試してみましょう。それから思いついたものをいくつか質問してみます。

挨拶

英語で「Hello」と入力してみます。

「Hello! Nice to meet you.」と返信がきました。挨拶は問題なさそうです。

「雲とクモ」について聞いてみる。

次は同音異義語を使って質問します。同音異義語とは簡単に述べると「同じ発音となる言葉だけど、意味が違う言葉/語」のことです。
今回はクラウドという意味の「雲」とカタカナの「クモ」を使って質問を投げてみました。

カタカナの場合はスパイダーを意味する「クモ」が答えとして返ってきました。
クラウドという意味を持つ漢字の「雲」については正確な答えが返ってきています。なお、文字数が多いために一度で返信しきれていません。

「くも」について聞いてみる

では、今度はひらがなで「くも」と聞いてみましょう。

「クモ」と同じ内容で返信するようですが、文章が先ほどと比べると短いように見えます。質問によって回答が違うことが伺えます。

新宿駅西口と新宿西口駅は同じですか

「非常に似ているけど、絶妙に違う」みたいな質問を投げてみます。
答えとしては別物です。新宿駅西口は新宿駅の西口を指しますが、新宿西口駅は駅名を指します。

同じものとして認識しました。ただ、人間もよく間違えるので仕方ないですね。ちなみに他の AIについても同じ質問をすると間違えます。

新宿西口駅と新宿駅について – 東京都交通局

歌舞伎町にゴジラはいますか

「実際にいるはずがないけどもオブジェとしては存在するので嘘はついていない」みたいな質問を投げてみます。

歌舞伎町には有名なゴジラの像がありますが、実際のゴジラは存在しません。では歌舞伎町のゴジラについてはどのように認識するのでしょうか。

お見事!歌舞伎町にあるゴジラヘッドのことを返信しました。期待どおりの動作です。

横浜にピカチュウが出現します

今年も開催されましたが、たびたび、横浜のみなとみらいにピカチュウが大量発生します。本物ではないんですが、どのように認識するのでしょうか。

空想上の生き物ですのでフィクションとして処理されました。どうやらイベントの情報は掴んでいないようです。ですが、「横浜にピカチュウが出現したら多くの人が喜ぶ」というのはあながち間違っていないです。

もっと質問してみる

筆者の私が先月の29日で誕生日を迎えたので「30歳になったらやるべきこと」を聞いてみました。
※とはいえ、自分の人生なのでこれは参考程度に見ていきます。

途中で途切れてしまったのでChatGPTでもよく使われる「続けて」をやってみたのですが、LINE botの実装で続けて出力する場合を定義していないため、回答が終わってしまいました。LINE botは改良の余地がありそうです。

まとめ

今回は先月にGAされたAmazon BedrockをLINE botに実装して応答を検証してみました。
botの作りは即興に近いので細かく作り込めていません。
Bedrockから返信は取得できていますが、文字数の多い返信になるとメッセージが途切れてしまうので実装を見直す必要があると思いました。

具体的な作り方は実装をブラッシュアップして、弊社主催のイベント「雲勉」で公開したいと思います。