Blog

生成AIで営業の工数削減!「議事録パックン」のアーキテクチャ紹介

2024/09/03

こんにちは! KDDIアジャイル開発センターでエンジニアをしております大坪(tubone)と申します。

先日、弊社プレスにてAmazon Bedrockを活用した営業支援ツールの実証実験を実施しました という内容で公開されました「議事録パックン」について、エンジニアの視点からその裏側をご紹介いたします。

議事録パックンとは

「議事録パックン」は、営業チームの効率を大幅に向上させるために開発されたツールです。このツールは、会議の録音やトランスクリプトデータを基に、短時間で高精度な議事録を自動生成することができます。さらに、生成された議事録から提案資料の骨子作成や日報・週報の自動作成も可能で、日々の業務負担を軽減します。

詳細はこちらのプレスリリースをご確認ください。

議事録書き出し

「議事録パックン」の最も重要な機能は、「議事録書き出し」です。この機能では、会議の録音・録画ファイルや、Teamsなどの会議ツールが出力するトランスクリプトデータを使って、高精度かつ読みやすい議事録を自動的に作成します。

Transcribeの話者識別機能とClaude3 Opusの日本語生成精度が高いことから、営業担当者から「自分が記載する議事録と遜色ない」というフィードバックを頂いており、非常に好評です。

Bedrockbiz-議事録

提案資料骨子作成

議事録書き出し機能で作成された議事録を元に、営業提案資料の骨子を自動生成する機能です。これにより、提案作成の初期段階が効率化され、より迅速な営業活動が可能となります。

この機能にはReACTエージェントを活用し、さらにRetrieverを使って必要な情報を効率よく取り込む構成としています。RetrieverにはBedrockのナレッジベースを採用し、社内文書をS3に配置して取り込みました。

Bedrock-biz-提案資料骨子

日報週報作成

日報や週報の作成も「議事録パックン」にお任せください。議事録をベースに自動的に作成されるため、営業活動の報告書作成がスムーズに行えます。

bedrock-biz-日報週報

システムアーキテクチャ

次に議事録パックンのシステムアーキテクチャを見ていきましょう。

このツールは、構想から開発までの期間が3ヶ月足らず、実際の開発期間は1ヶ月未満という短期間で作成されたため、シンプルな構成となっています。

議事録パックン構成図

アプリケーションはLangChain + Streamlit

まず、フロントエンド・バックエンド合わせて、アプリケーションとしてご説明させていただきます。 アプリケーションは、LangChainとStreamlitの組み合わせで開発されました。短期間で効果検証を行うため、フロントエンドとバックエンドを統合して開発できるStreamlitと、強力な自然言語処理を提供するLangChainが非常に効果的でした。

またLangChainは、Streamlitとの統合により、以下のような便利な機能を提供しています。

LangChainには、BedrockChatをモデルとしてサポートしており、Bedrockとの接続に関しては特に追加実装不要でした。また、Claude3 Opusが会話履歴やAgent scratchpadを正しく認識できるよう、独自のメモリー機能も開発しました。

LLMのObservabilityはLangfuseで実施

次にLangfuseについてお話します。 皆様、LLMのObservavilityはどうやって収集・評価しておりますでしょうか? 議事録パックンではLangfuseを導入し、活用しております。

このプロジェクトの成功には、LLMのObservabilityツールとしてLangfuseをSelf-hostedで導入したことが大きく貢献しました。これにより、コードを変更することなくリアルタイムでプロンプトを調整し、ReACTエージェントが実行される際にLLMがなぜその最終回答を選んだのかを後追いで確認することができました。

Langfuse

文字起こしはAmazon Transcribe、議事録生成はClaude3 Opus

「議事録書き出し」の要となる機能では、AWSのマネージドサービスであるAmazon Transcribeを使用し、短期間で高品質な文字起こしと議事録生成が可能となりました。Transcribeの話者識別機能を使い、会話に話者ラベルをつけたデータを生成し、そのままOpusのモデルに投げ込むことで、生成された議事録に話者ラベルが自動的に反映されます。

OpenSearch Serverlessを使ったハイブリッド検索RAG

次に議事録パックンのRAG的な動きをサポートする仕組みをご紹介します。 「議事録パックン」の一部機能では、OpenSearch ServerlessをVectorデータベースとして使用し、ナレッジベースを活用して効果的なハイブリッド検索を実現しました。これにより、必要な情報を迅速かつ的確に検索し、ユーザーのニーズに応えることが可能となっています。Claude3 Opusが扱いやすいretrieverの結果に加工するため、こちらも独自で開発しております。

アプリケーション開発におけるBedrockの優位点

このプロジェクトでは、AWS Bedrockを活用して開発が進められました。Bedrockは、LLMの運用を非常に容易にし、短期間での効果検証を実現するのに大いに役立ちました。特にAnthropic社のClaude3モデルをサポートしている点が大きな利点です。また、アプリケーションの実行環境、Vector store、LLMモデルまでAWSで完結して構築できる点も大きな強みでした。

開発において難しかった点

開発初期のプロトタイプ開発で大いに役立ったStreamlitですが、要件が複雑になるにつれ、Session stateの管理がシビアになり、開発が難しくなる場面もありました。 ちょっとしたUIの操作のたびに、Session Stateが更新されることによるちらつきや、値の取り回しによる意図しないリフレッシュ、更新が反映されない場合のやむを得ないst.rerunなどを実施してました。 これにより、パフォーマンスやUXの向上に苦心してしまったことが反省点です。

今後の開発においては、

  • Streamlitはプロト作成まで
  • UI/UXの大枠が固まったら機能追加や要望が出てくるタイミングでStreamlitのコードからFastAPIなどのFWを活用し、API切り出し

という開発が望ましいように感じました。

おわりに

「議事録パックン」の開発は、短期間でのスピーディーな構築を求められる中で、多くの課題を乗り越えつつも、営業チームにとって非常に有用なツールとして完成しました。AWS Bedrockをはじめとする最新技術を駆使し、営業活動を支援する強力なツールを提供することができました。このプロジェクトを通じて得た知見は、今後の開発にも活かしていきたいと考えています。

今後もさらに多くの技術を取り入れ、ユーザーのニーズに応えられるプロダクト開発を続けていきます。KDDIアジャイル開発センターとして、引き続き業務の効率化をサポートするツールの提供に尽力していく所存です。どうぞご期待ください。