4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

社内チャットボットを作るにあたって考えたこと ~①チャットボットの形態~

Last updated at Posted at 2024-12-04

はじめに

2024年8月頃からAWS上でBedrockを使って社内向け生成AIチャットボットを作っています。
初めて生成AIを使ってみたところで色々考える点があったので、メモとして残しておくことにしました。

生成AI技術が日々すごいスピードで進歩しているので既に古い技術になっていそうなのと、そもそも初心者が書いておりますで、あまり技術的な参考にはならないと思いますが、ポエム的な感じ?でお読みいただけたら幸いです。

作りたいもの

よくあるシンプルなQAチャットボットです。
社内のよくある質問をQAデータとして読み込ませて、社員からの質問にQAデータから生成AIに回答させるというものです。構成としてはざっくり以下のようなイメージです。

image.png

考えたこと① チャットボットの形態

考えたことの1つ目は、チャットボットのインターフェース部分です。

image.png

今回の目的は生成AIを使ってみるという意図が大きかったので、できるだけ早く簡単に作りたい。チャットボットはWEBアプリが分かりやすくていいけど、UI開発は大変そうだし、、、
ということで以下の2つの案を考えました。

  • Difyを利用してWEBアプリとして公開する
  • AWSのサービスを駆使してTeams連携させる

Difyを利用してWEBアプリとして公開する(以降Dify版と呼びます)

Difyは結構すごいAI開発プラットフォームみたいだよと社内で聞いてましたので、
ちょこっと調べてみたら、
ノーコードで開発できて簡単にWEBアプリとして提供することができる。
ということで、すぐに採用しました。
(Difyについては多くのサイトで紹介されているので省略します)

構成

Difyのコミュニティ版をEC2にインストールする形としました。
EC2はプライベートVPCに配置し、Bedrock向けにモデルアクセス用のvpcエンドポイントやAPIアクセス用にAPIGW+Lambdaを用意しました。
Difyインストール手順は、下記の記事を参考にさせていただきました。

Dify版の良かった点

  • インストールが簡単
  • チャットフローやLLMへのプロンプト設定などのUIが非常に使い易い
  • 簡単にWEBアプリとして公開できる。想像してる使い方ができる
  • スタジオの複製やDSLのエクスポートなど気軽に環境を複数作れるので色々試しやすい
  • プレビュー機能によりデバッグしやすい
  • 運用系機能が充実している(ログ参照・分析等)

Dify版の課題と感じている点

  • EC2やALB、NATGWなどのランニングコストがかかる(プライベートVPCに配置したから…)
  • 機能追加やバージョンアップが非常に速いので、最新の機能を使いたかったら頻繁に更新確認してアップグレードする必要がある
  • 更新するとすぐ保存されてしまう(バックアップ取ってから作業しないと後悔する)
  • 冗長化や拡張性を持たせた構成にするには?(まだ調べてないだけ…)

AWSのサービスを駆使してTeams連携させる(以降Teams版と呼びます)

Teamsからチャット入力させる案です。
下記の記事にある通りTeamsからAWS Chatbot経由でBedrockエージェントに連携するものです。
※着手当時はまだその機能はなく、workflowsからEメール飛ばしてSESやSNSを使ったらどうか?など、、非常に苦労されてました。(センパイが)

構成

AWS Chatbot + Bedrockの構成になります。
構築手順は下記の記事が参考になると思います。

Teams版の良かった点

  • AWS ChatbotとBedrockという非常にシンプルな構成
  • 普段使い慣れているTeamsから気軽に入力できる
  • ランニングコスト(AWS利用費)が非常に安い
  • AWS ChatbotとBedrockともにマネージドサービスなので非機能要件的な考慮が要らない
  • Bedrockエージェントを利用するのでナレッジベースやガードレールの呼び出しが簡単

Teams版の課題と感じている点

  • Teamsのチャネルへの投稿のためチャネル参加者から見える(そういう使い方としての理解が必要)
  • @aws ask xxx 質問文』みたいな構文のため、入力の手間がかかる 
  • 回答に時間がかかる。(Teams⇔AWS Chatbot間の通信なのか…20~30秒くらい待たされることが多い)
  • ワークフロー的な処理をさせようとすると設定が複雑になる(PromptFlowsを呼び出すとか)
  • 運用機能は作りこみが必要

考えた結果

Dify版もTeams版のどちらも機能として用意しようということで進めましたが、
Teams版の性能面の課題から、今のところはDify版を優先して利用することになりました。
Teams版はTeamsまたはAWS Chatbotのアップデートに期待したいと思います。

image.png

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?