Y_Yamashitaのブログ

勉強したことのアウトプット・メモが中心。記事の内容は個人の見解であり、所属組織を代表するものではありません。

【Amazon Bedrock】モデルの「長さ」の設定値を変えて、応答の変化を確認してみた

個人ブログに記事を書くのは何と2年半ぶりです。。!! ここ2年間は会社のエンジニアブログにブログを書いていたのですが、転職に伴い、再び個人ブログに記事を書くことにしました。

さて、世間では生成AIが大盛り上がりですが、ブームにかなり乗り遅れつつ、ようやく私も以下の本を読みながら、Amazon Bedrockを使って勉強を開始しました。

https://amzn.asia/d/65IQ63S

そこで、基盤モデルの設定値である「長さ」について学習したので、Bedrockのプレイグラウンドを使って、実際に挙動を確認してみたいと思います。

「長さ」について

基盤モデルの「長さ」は、その名の通り、モデルが返すレスポンスの長さを調整するための設定値です。今回は、以下二つの設定値を取り上げます。

設定値 内容
最大長 生成された応答で返されるトークンの最大長
停止シーケンス モデルがそれ以上トークンを生成しないようにする文字シーケンス

詳細は、以下の公式ドキュメントも参照ください。

docs.aws.amazon.com

実際に挙動を確認してみる

ここからは、実際に長さの設定を変えながら、モデルのレスポンスがどのように変わるか確認してみたいと思います。

まずはデフォルト値で利用してみる

テキストのプレイグラウンドで挙動を確認します。モデルはClaude 3 Haikuを使用します。最大長のデフォルト値は2000で、停止シーケンスにはデフォルトで「Human:」が指定されているようです。

「徳川歴代将軍を古い順に答えてください。」と質問を投げると、15代将軍まで回答してくれました。最後が間違ってるようですが、、w

最大長を縮小してみる

次に、最大長を2000から150に減らして、同じ質問を投げてみました。すると、回答が途中で終わってしまいました。トークンが最大長に達してしまったためです。

停止シーケンスを設定してみる

今度は、改めて最大長を2000に戻したうえで、停止シーケンスに「徳川綱吉」を追加し、同じ質問を投げてみました。すると、「徳川綱」まで出力したところで、回答が終わりました。

確認してみた分かったこと

最大長の指定は、「〇〇文字以内で回答してください」と同等ではない

回答をシンプルにしたい場合、プロンプトで「〇〇文字以内に回答してください」と指定する方法があります。この場合、それなりに高性能なモデルであれば、指定した文字数(あるいはそれに近い文字数)でまとまるように回答するかと思います。

それに対し、最大長を指定しただけでプロンプトで何も指示しないと、回答が途中で途切れてしまいました。モデル自身が最大長を意識しているわけではないので、回答としてキチンと完結させるためには、ユーザー側が最大長を意識しながら、プロンプトで明確に指定する必要があるようです。

停止シーケンスで指定した文字は途中まで出力された

先ほど停止シーケンスに「徳川綱吉」と指定した際には、「徳川綱」まで出力されたところで停止しました。
試しに、停止シーケンスを「吉宗」と指定して再度試してみたところ、今度は「徳川吉」まで出力されたところで停止しました。

サンプルが少ないので断言は出来ませんが、停止シーケンスで指定した文字が全て出力されてから止まるのではなく、見た目上は直前で止まっているように見えました。



以上、モデルの「長さ」に関する動作確認でした。生成AIやBedrockを使い慣れている方からしたら初歩的な内容かもしれませんが、私はこのパラメータについて何も知らなかったので、実際に挙動を確認して理解が深まりました。プレイグラウンドは簡単に確認が出来て便利ですね。
上述のBedrock本はまだ2章までしか進められていないので、3章以降も進めて、気になった点はまた検証等してブログに書きたいと思います。