🚀

【RAGapp】GPT-4o&Gemini 1.5 Proで簡単に作れるチャットアプリ作成ガイド

2024/06/04に公開

RAGappとは?

RAGappは、GPT-4やGeminiなどの大規模言語モデルを搭載したチャットWebアプリを簡単に構築できるツールです。
Dockerイメージが公開されており、手軽にデプロイして試すことが出来ます。

https://github.com/ragapp/ragapp.git

UI

UIの構築には内部的に create_llama を使用しているようです。
create_llama は、特定のフレームワークやテンプレート、エンジン、フロントエンド、UIライブラリなどを指定してLlamaアプリケーションの初期設定を自動化してくれます。

そのままRAGappを使うだけであれば、このあたりを直ぐに触る必要はなさそう。

https://www.npmjs.com/package/create-llama

https://github.com/run-llama/LlamaIndexTS

準備

まずはRAGappのリポジトリをclone

git clone https://github.com/ragapp/ragapp.git

ragappディレクトリに移動して、Dockerでコンテナを起動します。

cd ragapp

-it オプションでインタラクティブモードを指定し、--rm オプションで終了時にコンテナを自動的に削除します。この辺りはお好みで変更してください。

ちなみに出来上がったイメージサイズは1.77GBでした。

docker run -it --rm -p 8000:8000 ragapp/ragapp

ビルド&起動が無事に完了すると、以下のメッセージがコンソールに表示されます。

INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

ブラウザで http://0.0.0.0:8000 にアクセスすると、以下のような画面が表示されます。
初回起動時はそのまま初期設定画面が表示されます。

RAGappの設定

モデルの選択

ChatGPT、Geminiなどからモデルの選択が可能で、APIキーの入力もここで設定します。

チャット画面

モデルなどの基本設定後、http://0.0.0.0:8000/ へアクセスすると、チャット画面が表示されます。
メッセージを入力すると、チャットを開始出来ます。

  • ファイル添付
    私が試した際、テキストファイルや画像の送信が出来ませんでした。(2024/05/29時点)

各種設定画面

http://0.0.0.0:8000/admin/ から先ほど初期設定を行った管理画面にアクセスできます。

左側には設定パネルがあり、以下の設定が可能です。

  • プラットフォーム、モデルの変更
  • システムプロンプトの変更
  • 知識ベース用ファイルのアップロード
  • エージェント設定

右側ではOpenAIのPlaygroundのように設定した状態をテストすることができます。

知識ベース

設定画面の「Knowledge」項目から、チャットのコンテキストとして使用したいデータファイルを選択してアップロードすることが出来ます。

今回は試しに以下の様なCSVファイルをアップロードしてみました。

name,age,city,occupation
山田 太郎,30,東京,ソフトウェアエンジニア
佐藤 花子,25,大阪,データサイエンティスト
鈴木 次郎,28,名古屋,プロダクトマネージャー
高橋 美咲,35,福岡,UXデザイナー

試してみる

ファイル登録後、早速Playgroundで試してみます。

Input:「UXデザイナーさんの名前ってなんだっけ?」

Output:

UXデザイナーさんの名前は高橋 美咲です。彼女は35歳で福岡に住んでいます。

別な質問も。

Input:「SEってどこ住み?」

Output:

ソフトウェアエンジニア(SE)の山田 太郎さんは東京に住んでいます。

ちゃんと設定したデータが反映されているようです🙌

API ドキュメント

APIドキュメントも http://0.0.0.0:8000/docs/ にアクセスすると確認できます。

おわりに

RAGappを使うと、基本的な機能をもったチャットアプリを噂通り簡単に構築することが出来ました。
個人的には、社内向けツールや自分向けチャットボット、検証用などに良さそうと思いました。
次はプリプロンプトを工夫したり、知識用データの活用を試してみようと思います。

今後、使う際に検討したいところ。

  1. 最低限の認証レイヤー追加(認証レイヤーが存在しない)
    • 管理画面のアクセス制限
    • ユーザーアクセスの認証
  2. UIのカスタマイズ
  3. プリプロンプトの検証
  4. 知識ベースの活用

Discussion