AWS Bedrockを活用したAI生成テキスト評価と再生成の実装技法

本記事ではAWS Bedrockを使用した生成AIの開発手法について解説しています。

クラウドサービス事業部の松浦です。

今回はAWS Summit 2024に向けて生成AIを使用したシステムを開発した際に効果的だった手法やコツがありましたのでご紹介いたします。

 

はじめに

みなさんもご存知かもしれませんが、生成AIは要求された入力値に対して学習データを基に確率的に次に続く可能性が高い単語・文章を出力する手法をとっています。

そのため生成AIが不正確または完全に架空の情報を出力してしまう現象があります。この問題は、特に信頼性が求められる分野でのAI活用において、大きなリスクとなります。

これはハルシネーションと呼ばれる現象で、生成AIを扱う際には切り離せない現象となっています。

本記事では評価AIを用いた再生成ロジックを導入することで、生成AIのハルシネーションリスクを軽減する手法について解説します。

この手法により、生成されたテキストが適切かどうかをチェックし、必要に応じて再生成を行うことで、出力結果の精度と信頼性を向上させることができます。

 

使用技術

  • AWS SDK for JavaScript (v3)
  • AWS Lambda (Node 20)
  • AWS Bedrock Claude3 Haiku
  • TypeScript

コードの詳細

全体コード

先に完成形をお見せします。

今回は会話文を要約するようAIにリクエストします。

処理の流れとしてはリクエストされた会話文をBedrockを通して要約した後その出力結果が正しいかBedrockを通して評価させます。評価した結果正しくないと判定された場合要約を再生成し再度評価するようループ処理を3回まで実行させます。

本処理では与えられた会話文をテキスト要約するという単純なロジックなので評価AIを挟まなくとも精度の高いものが得られましたが、インプットしたテキストに記載されていない未知の情報をAIに出力させるような要件の際にこのような評価AIを挟む手法はとても有効でした。

index.ts

 

./constants/bedrock.ts

実際の処理結果

コードの実際の処理結果はこちらです。

リクエストする会話文

要約された結果

フロントUIはAWS Summit用に用意したものですが、バックエンドのロジックは本記事のコードを使用しています。

それでは本コードについて解説します。

必要なインポート

まずは必要なパッケージと定数をインポートします。


定数フォルダには以下のように生成AIのモデルとシステムプロンプトを定義しています。

reviewSummarySystemPromptは評価AIのシステムプロンプトを定義しており、JSON形式で生成するように指示をしています。

XMLタグを使用することで出力の精度を上げています。詳しくはAnthropicのプロンプトエンジニアリング XMLタグを使用するに詳しく書いておりますのでそちらをご参照ください。

また、生成AIにJSON形式で出力させる手法についてはAnthropicの プロンプトエンジニアリング 出力フォーマットの制御 (JSONモード)に詳しく書いておりますのでそちらをご参照ください。

 

クライアントの設定

次に、AWS Bedrockのクライアントを設定します。ここでは、us-east-1リージョンを使用しています。

ハンドラ関数の定義

イベントハンドラ関数では、入力イベントを元に要約を生成し、その要約が正しいかを評価します。評価が失敗した場合、最大3回まで再度要約を生成し評価を行います。

要約生成と評価のループ処理

評価が失敗した場合に再度要約を生成し、評価するループ処理を定義します。

ループ処理には再帰関数を使用しており、無限ループを防ぐため3回までのループと設定しています。。

要約生成関数

ユーザーの入力を元にAWS Bedrockを使用し要約を生成する関数を定義します。

要約評価関数

生成された要約が正しいかを評価する関数を定義します。

レスポンスの生成

最終的なレスポンスを生成する関数を定義します。

終わりに

AWS Bedrockを利用することで、システムの中に生成AIを使用することが容易になります。

しかし、生成AIを使用する場合は生成AIのリスクについても向き合わねばなりません。

本ブログの内容が、皆様の開発に役立つことを願っています。興味のある方は、ぜひAWS Bedrockのドキュメントもご覧ください。

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ