こんにちは!バクラク事業部Platform Engineering部SREグループのtaddy( id:sadayoshi_tada )です。
この記事は LayerX AI Agent ブログリレー 11日目の記事です。前日は島越さんによるAI明細仕訳機能におけるCodeAgentを用いたデータセット作成でした。CodeAgentに特化したフレームワーク「smolagents」の紹介やその実験内容も興味深いのでまだ見ていない方はぜひ見てみてください。
近年、リモートで働く人やオフラインで働く人など様々な労働環境のメンバーとのコラボレーションが増えています。バクラク事業部においても同様で様々なメンバーとコミュニケーションを行います。コミュニケーションの手段は複数あり対面コミュニケーションの他、SlackによるテキストコミュニケーションやGoogle Meet、Gatherでのオンラインミーティングを行っています。
本記事では社内LTで発表した、Slackによるテキストコミュニケーションにおける課題をテーマに、PoCでエージェントを構築してみたのでその模様をまとめます。内容としてネタ要素を多分に含んでいるためその点、ご容赦ください。
テキストコミュニケーションで感じた課題について
弊社に限らず、テキストコミュニケーションにおいて挙げられる課題の1つとして「社内用語」があるかと思います。社内の中で広く使われている用語ではあるものの、一般的な言葉ではなく、新入社員や既存社員でも初見では理解してコミュニケーションがしづらい問題があります。例えば、以下のスクリーンショットの「大感謝ザウルス」という言葉が出てきた時にどういう意味を想像するでしょうか?
この言葉の意図は「大感謝時代を生き抜いた恐竜。絶滅を疑われていたが最近生き残りが見つかった」という意味です。意味を聞いたら言葉の意味を理解できますが、意味を理解できないと多くの人は「大感謝ザウルス」という言葉がどういう意味かを理解してコミュニケーションが難しい可能性があります。
個人的にこういった社内用語は社内のドキュメンテーションに用語のまとめがないかを確認するのですが、例示で示した用語はまとめられていない言葉でした。というのも、これは同僚のconvtoさんが独自に話している言葉で、社内では「convto語(以降もconvto語と呼称します)」と呼称されています。ありがたいことにconvto語はconvtoさん自身のブログで随時解説してくれており、私自身は意味を理解する時の一助にしています。
私はこのconvto語が好きなのですが、言葉と合わせて意味を理解することができれば、更にコミュニケーションが円滑に進めることができるのではと感じていました。こうした状況を鑑みて、私以外にもconvto語がどういう意味かを知りたいけど検索する情報がないという悩みを持つ人に向けて何らか解決手段を提供できないかと検討してみることにしました。
ナレッジエージェントの構成概要
上記の課題に対してどんなアプローチを取るかを検討した際に、Amazon BedrockにAmazon Bedrock Agent(以降、Bedrock Agentと呼称します)とAmazon Bedrock Knowledge Base(以降、Knowlegde Baseと呼称します)を使ったユースケースをドキュメントで確認しました。
私自身がこの記事での取り組みにおいてマネージドサービスを使うことで素早く検証と安価に実行環境を構成したいと考えていました。普段の開発でAWSを利用しており、Bedrock Agent及びKnowledge Baseはボタン数クリックで素早い検証を始めることができると感じたことや、Knowledge BaseはS3 Vectorsと統合可能で安価にベクトルストア構成できると感じたため、これらを採用することにしました。
大まかなシステム構成としては以下のスクリーンショットの通りです。
Knowledge Baseのデータソースにしている、S3にはconvto語の解説記事をPDFにしてアップロードし、S3 Vectorsでベクター化しました。ユーザーがBedrock Agentに質問を送り、既に取り込まれているデータが有ればKnowlegde Baseからconvto語を解説する回答が返り、もしKnowlegde Baseにない言葉であれば、ブログで新規記事にconvto語の解説がないかを見に行くようにしました。
Bedrock Aagent設定概要
Bedrock Agentの設定はドキュメントにもあるようにAWSマネジメントコンソールから数クリックで完了します。以下のスクリーンショットはconvto語解説エージェントの設定画面抜粋です。AIのモデルはClaude Sonnet 4を選択し、Actions groupsにブログ記事を参照しに行くLambdaと、Knowlegde Baseはブログ記事をベクトル化しているデータを検索できるようにしています。
また、Bedrock Agentには以下の指示を与えました。
あなたはconvto語(ふしぎワード)を解説してくれる優秀なAIアシスタントです。 以下の手順で適切な回答を提供してください。 1. ユーザーからのconvto語の解説依頼を慎重に読み、解説可能なconvto語があるかどうかをKnowledge Baseから検索して取得してください。 2. もしKnowlege Baseにない言葉があったらアクショングループで設定した、最新のブログからconvto語解説していないかを調べてください。 3. 1,2のいずれもない場合は、言葉から類推される一般的な意味を解説してください。 以上の手順に従ってユーザーの疑問を明らかにする、convto語解説を提供してください。
この設定でどのような回答結果を得られるかを次項以降で見ていきます。
Bedrock Agentに質問してみた結果
今回はテストのためローカルからStreamlitで質問をしてみます。以下で、質問の意図した回答を得られたケースと、意図しない回答を得られたケースを紹介します。
まずはブログの記事内にあった言葉である、「ワカランテ伯爵」はKnowledge Baseから検索して意図通り解説してくれました。
他方、こちらも記事内にあった「大感謝ザウルス」という言葉ですが、これは記事内の言葉から検索してもらえず意図した回答を得られなかったです。ただ、引けなかったとしてもconvtoさんへの意図を確認しに行くように赤枠のアクションを促せたところはよかったかもしれません。
PoCでざっと作ってみたのでまだまだ改良の余地はありますが、スピーディーにエージェントを構築できる、Amazon Bedrockの利用を今後もユースケースに応じて検討していきたいと感じました。
業務のプロジェクトでの応用について
この記事で書いたBedrock Agent及びKnowledge Baseの構築の経験が一定あったおかげで、以下の記事で紹介されている、サポートサイトやプロダクト仕様をデータソースとするRAGやエージェント作りに経験を活かすことができました。この基盤もBedrock Knowledge BaseとS3 Vectorsを使用しており、スピーディーかつ安価にRAGを構成するのに役立てることができました。
弊社においても、カスタマーサポートや営業の生産性向上が重要な課題であり、サポートサイトやプロダクト仕様をデータソースとするRAG(Retrieval-Augmented Generation)を構築し、お客様からのお問い合わせに対して回答案を自動で生成するエージェントの開発などを進めております
まとめ
社内コミュニケーションにおける課題解決を目指した、ナレッジエージェントをPoCで構築した話をまとめました。このPoCで構築した経験が業務のプロジェクトで応用ができ、経験を活かすことができてよかったです。
最後に改めて、この記事はLayerX AI Agentブログリレーの11日目の記事です。毎日AI Agentに関する知見をお届けします!LayerXテック公式Xを是非フォローして見逃さないようにお願いします!!
バクラク事業部では人々の「働くをラクに。ラクをもっと創造的に。」を目指したプロダクトを開発しており、AIにもフルベットしているためもし興味があればカジュアルにお話しましょう!他にもLayerX Casual Nightといった転職意思にかかわらず参加できるイベントもあるため、こちらも興味あればぜひ応募ください。