1.はじめに
2023年4月当時はLLMのAPIは公開されても使いやすいチャットボットは存在していませんでした。
当時、手頃なChatGPT Cloneを探していたところ、Chatbot UI legacyを見つけ、非常に気に入りました。
作者のMckay Wrigley氏は、2023年4月20日に「add Finnish translations #618」を最後にChatbot UI legacyのメンテナンスを終了しました。
長い沈黙の後、2024年1月4日にMckay Wrigley氏の投稿でVersion2.0.0の機能が明らかになりました。
Version2.0.0はBaaS(Backend as a Service)のsupabaseを前提にしていたため、正直、今まで避けていましたが、生成AIがマルチモーダルの時代になってきてマルチモーダルでどの程度の事ができるのかを把握するためにChatbot UI Version2.0.0をWSL2環境で動作させてどの様なファイルに対応しているのかを調べてみました。
2.Chatbot UI Version2.0.0とは
Chatbot UI Version2.0.0とはMckay Wrigley氏によって開発されたChatGPTのクローンツールの最新バージョンです。
Chatbot UIには2023年4月20日にローンチされたlegacy版もありますが、このページでは両者を区別するためにChatbot UI Version2.0.0と記載します。
2023年4月20日からの主な変更点は
主な変更点
- OpenAI/Azure OpenAI以外のAnthropic、Google、Mistral、Perplexity等のLLMに対応
- OllamaのサポートによりローカルLLMをサポート
- BaaS(Backend as a Service)のSupabaseにストレージを移行しユーザー毎の画像のアップロードに対応
- 認証に対応
Version2.0.0のローンチ機能
- ホストされたモデル:OpenAI、Azure OpenAI、Anthropic、Google、Mistral、Perplexity
- ローカルモデル:Ollamaで提供されているマルチモーダルでないもの(マルチモーダルは今後対応予定)
- チャットは画像とファイル機能を含みます。
- OpenAIエンベディングまたはローカルエンベディング。
- 詳細なチャット設定。
- 迅速に選択できるチャット設定プリセットを作成。
- / コマンドを使用したプロンプト。
- @ コマンドを使用したファイル。
- @ コマンドを使用したコレクション(ファイルのグループ化)。
- アシスタント(キャラクターやGPTを考えてください。ツールは近日公開予定)。
- 全てのインポート/エクスポート。
- 共有機能。
- 認証。
- プロフィールとプロフィールコンテキスト。
- カスタム指示付きのワークスペース。
- ローカルで実行するか、ホスティングされた形で展開するか選べます。
- 統合された画像/ファイルストレージ。
Version2.0.0で進行中の機能
- ツール
- 外部データソースと統合
- チームサポート
- チャットの風景に大きな追加となると思うサプライズ
A little under the weather and would like to be 100% for launch as it’ll be fairly demanding, so pushing back a couple days. Friday or Monday - probably the latter. Everything is done though.
Launch includes:
- Hosted Models: OpenAI, Azure OpenAI, Anthropic, Google, Mistral, Perplexity
- Local Models: Anything on Ollama that’s not multi-modal (coming!)
- Chat including both image and file capabilities.
- OpenAI embeddings or local embeddings.
- Granular chat settings.
- Create chat setting presets for quick selection.
- Prompts with / commands.
- Files with @ commands.
- Collections (groupings of files) with @ commands.
- Assistants (think characters/GPTs, tools are on their way).
- Import/export for everything.
- Sharing features.
- Authentication.
- Profiles with profile context.
- Workspaces with custom instructions.
- Run locally or deploy hosted.
- Integrated image/file storage.
In progress:
- Tools
- External Data Sources & Integrations
- Team Support
- Surprise that I think is a huge addition to the chat landscape
As always 100% open-source under MIT license!
Mckay Wrigley氏の2024年1月4日のX投稿から引用
3.対応するLLM
charbot-ui/types/llms.ts(2024年5月26日(日)時点)から抜き出したモデルは以下の通りです
No | 開発元 | LLM | 備考 |
---|---|---|---|
1 | OpenAI | gpt-4o | |
2 | gpt-4-tuebo-preview | ||
3 | gpt-4-vision-preview | ||
4 | gpt-4 | ||
5 | gpt-3.5-turbo | ||
6 | gemini-pro | ||
7 | gemini-pro-vision | ||
8 | Anthropic | claude-2.1 | |
9 | claude-instant-1.2 | ||
10 | claude-3-haiku-20240307 | ||
11 | claude-3-sonnet-20240229 | ||
12 | claude-3-opus-20240229 | ||
13 | Mistral | mistral-tiny | |
14 | mistral-small-latest | ||
15 | mistral-medium-latest | ||
16 | mistral-large-latest | ||
17 | Groq | llama3-8b-8192 | |
18 | llama3-70b-8192 | ||
19 | mixtral-8x7b-32768 | ||
20 | Perplexity | pplx-7b-online | |
21 | pplx-70b-online | ||
22 | pplx-7b-chat | ||
23 | pplx-70b-chat | ||
24 | mixtral-8x7b-instruct | ||
25 | mistral-7b-instruct | ||
26 | llama-2-70b-chat | ||
27 | codellama-34b-instruct | ||
28 | codellama-70b-instruct | ||
29 | sonar-small-chat | ||
30 | sonar-small-online | ||
31 | sonar-medium-chat | ||
32 | sonar-medium-online | ||
33 | Ollama | - | |
34 | OpenRouter | - | |
35 | Custom | - |
4.マルチモーダル
Chatbot UI Version 2.0.0を実際に起動した際に確認できたアップロード可能なファイル形式と、ソースコード上に記載されている形式をまとめます。
charbot-ui/lib/retrieval/processiong/index.ts(2024年5月26日(日)時点)
サポートファイル形式を見る限り、動画や音声ファイルには現時点で対応していなさそうです。
文字起こしを試したかったのですが、残念です。
No | ファイル形式 | 説明 | 備考 |
---|---|---|---|
1 | csv | CSVファイル | |
2 | docx | Microsoft Wordファイル | |
3 | json | jsonファイル | |
4 | md | Markdownファイル | |
5 | PDFファイル | ||
6 | txt | テキストファイル | |
7 | xbm | XBitmapファイル | |
8 | tif | TIFファイル | |
9 | jfif | JFIFファイル | |
10 | ico | アイコンファイル | |
11 | gif | GIFファイル | |
12 | svg | SVGファイル | |
13 | jpeg | jpegファイル | |
14 | svgz | SVGZファイル | |
15 | jpg | jpgファイル | |
16 | webp | webpファイル | |
17 | png | PNGファイル | |
18 | bmp | bitmapファイル | |
19 | pjp | pjpファイル | |
20 | apng | apngファイル | |
21 | pjpeg | pjpegファイル | |
22 | avif | avifファイル |
5.検証環境
Chatbot UI Version 2.0.0はNext.js(Node.js)で開発されたChatbot UIとdocker composeのsupabaseで構成されています。
Chatbot UIとsupabeseの接続はChatbot UIのフォルダ内の.env.localファイル中のNEXT_PUBLIC_SUPABASE_URL、NEXT_PUBLIC_SUPABASE_ANON_KEY
SUPABASE_SERVICE_ROLE_KEYでsupabaseのエンドポイントを指定することで接続がされます。
supabaseは11つのマイクロサービスから形成されるサービスですので、WSL2のDocker環境で動かすのは少し重いと思います。
No | 項目 | 内容 | 備考 |
---|---|---|---|
1 | ホストOS | Windows 11 pro | Homeでも可能と思います |
2 | 仮想環境 | Windows Subsystem for on Linux 2 | git |
3 | ゲストOS | Rocky Linux release 9.3 (Blue Onyx) | 手順は変わってしまいますが、Ubuntuでも動くと思います |
4 | 仮想環境2 | Docker | おそらくsupabaseを動かすのに使用します |
5 | コンパイラ | GNU C Compiler | supabaseのインストール時に必要となりますのでdnf install -y gccでインストールしておきます。 |
6 | 構成管理 | git | |
7 | 言語 | Node.js 20 |
6.構築
WSL2でRocky Linux 9.3がWindows11に導入されており、Rocky Linuxにはgitがインストールされていることをを前提に手順を記載します。
6.1. Node.jsのインストール
Rocky linux 9.3でNode.jsをインストール(dnf install nodejs -y)するとサポート期限切れのVersion16 LTS版が導入されてしまうので、以下のようにVersion 20 LTS版を指定してインストールします。
[root@Ardbeg ~]# dnf module -y reset nodejs
Last metadata expiration check: 0:05:41 ago on Sun May 26 07:56:54 2024.
Dependencies resolved.
Nothing to do.
Complete!
[root@Ardbeg ~]# dnf module -y enable nodejs:20
Last metadata expiration check: 0:06:05 ago on Sun May 26 07:56:54 2024.
Dependencies resolved.
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Enabling module streams:
nodejs 20
Transaction Summary
========================================================================================================================
Complete!
[root@Ardbeg ~]#
[root@Ardbeg ~]# dnf install nodejs -y
Last metadata expiration check: 0:07:26 ago on Sun May 26 07:56:54 2024.
Dependencies resolved.
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Installing:
nodejs x86_64 1:20.12.2-2.module+el9.4.0+20281+a6090b05 appstream 14 M
Installing dependencies:
libbrotli x86_64 1.0.9-6.el9 baseos 313 k
Installing weak dependencies:
nodejs-docs noarch 1:20.12.2-2.module+el9.4.0+20281+a6090b05 appstream 8.1 M
nodejs-full-i18n x86_64 1:20.12.2-2.module+el9.4.0+20281+a6090b05 appstream 8.4 M
npm x86_64 1:10.5.0-1.20.12.2.2.module+el9.4.0+20281+a6090b05 appstream 1.9 M
Transaction Summary
========================================================================================================================
Install 5 Packages
Total download size: 33 M
Installed size: 175 M
Downloading Packages:
(1/5): libbrotli-1.0.9-6.el9.x86_64.rpm 1.5 MB/s | 313 kB 00:00
(2/5): npm-10.5.0-1.20.12.2.2.module+el9.4.0+20281+a6090b05.x86_64.rpm 5.9 MB/s | 1.9 MB 00:00
(3/5): nodejs-docs-20.12.2-2.module+el9.4.0+20281+a6090b05.noarch.rpm 15 MB/s | 8.1 MB 00:00
(4/5): nodejs-20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64.rpm 13 MB/s | 14 MB 00:01
(5/5): nodejs-full-i18n-20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64.rpm 5.1 MB/s | 8.4 MB 00:01
------------------------------------------------------------------------------------------------------------------------
Total 13 MB/s | 33 MB 00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : nodejs-docs-1:20.12.2-2.module+el9.4.0+20281+a6090b05.noarch 1/5
Installing : libbrotli-1.0.9-6.el9.x86_64 2/5
Installing : npm-1:10.5.0-1.20.12.2.2.module+el9.4.0+20281+a6090b05.x86_64 3/5
Installing : nodejs-full-i18n-1:20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64 4/5
Installing : nodejs-1:20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64 5/5
Running scriptlet: nodejs-1:20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64 5/5
/sbin/ldconfig: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
Verifying : libbrotli-1.0.9-6.el9.x86_64 1/5
Verifying : npm-1:10.5.0-1.20.12.2.2.module+el9.4.0+20281+a6090b05.x86_64 2/5
Verifying : nodejs-full-i18n-1:20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64 3/5
Verifying : nodejs-docs-1:20.12.2-2.module+el9.4.0+20281+a6090b05.noarch 4/5
Verifying : nodejs-1:20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64 5/5
Installed:
libbrotli-1.0.9-6.el9.x86_64
nodejs-1:20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64
nodejs-docs-1:20.12.2-2.module+el9.4.0+20281+a6090b05.noarch
nodejs-full-i18n-1:20.12.2-2.module+el9.4.0+20281+a6090b05.x86_64
npm-1:10.5.0-1.20.12.2.2.module+el9.4.0+20281+a6090b05.x86_64
Complete!
[root@Ardbeg ~]# node -v
v20.12.2
[root@Ardbeg ~]#
6.2. Homebrewのインストール
Homebrew(ホームブルー)とはmacIOSまたはLinuxOS用のパッケージマネージャです。
supabaseはnpmでもインストール可能のようですが、mckaywrigley/chatbot-uiページによればLinuxでHomebrewでインストールするように書かれていますので、素直に従います。
WSL2のrockylinuxにrockyというユーザを作成してインストールします。
sudo用ユーザの作成
[root@Ardbeg ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@Ardbeg ~]#
[root@Ardbeg ~]# userdel sudoers
[root@Ardbeg ~]# useradd -m rocky
[root@Ardbeg ~]# passwd rocky
Changing password for user rocky.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@Ardbeg ~]# usermod -aG wheel rocky
[root@Ardbeg ~]# su - rocky
[rocky@Ardbeg ~]$
Homebrewのインストール
[root@Ardbeg ~]# su - rocky
[rocky@Ardbeg ~]$
[rocky@Ardbeg ~]$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
==> Checking for `sudo` access (which may request your password)...
==> This script will install:
/home/linuxbrew/.linuxbrew/bin/brew
/home/linuxbrew/.linuxbrew/share/doc/homebrew
/home/linuxbrew/.linuxbrew/share/man/man1/brew.1
/home/linuxbrew/.linuxbrew/share/zsh/site-functions/_brew
/home/linuxbrew/.linuxbrew/etc/bash_completion.d/brew
/home/linuxbrew/.linuxbrew/Homebrew
==> The following new directories will be created:
/home/linuxbrew/.linuxbrew/bin
/home/linuxbrew/.linuxbrew/etc
/home/linuxbrew/.linuxbrew/include
/home/linuxbrew/.linuxbrew/lib
/home/linuxbrew/.linuxbrew/sbin
/home/linuxbrew/.linuxbrew/share
/home/linuxbrew/.linuxbrew/var
/home/linuxbrew/.linuxbrew/opt
/home/linuxbrew/.linuxbrew/share/zsh
/home/linuxbrew/.linuxbrew/share/zsh/site-functions
/home/linuxbrew/.linuxbrew/var/homebrew
/home/linuxbrew/.linuxbrew/var/homebrew/linked
/home/linuxbrew/.linuxbrew/Cellar
/home/linuxbrew/.linuxbrew/Caskroom
/home/linuxbrew/.linuxbrew/Frameworks
Press RETURN/ENTER to continue or any other key to abort:
==> /usr/bin/sudo /usr/bin/install -d -o rocky -g rocky -m 0755 /home/linuxbrew/.linuxbrew
==> /usr/bin/sudo /bin/mkdir -p /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks
==> /usr/bin/sudo /bin/chmod ug=rwx /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks
==> /usr/bin/sudo /bin/chmod go-w /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions
==> /usr/bin/sudo /bin/chown rocky /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks
==> /usr/bin/sudo /bin/chgrp rocky /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks
==> /usr/bin/sudo /bin/mkdir -p /home/linuxbrew/.linuxbrew/Homebrew
==> /usr/bin/sudo /bin/chown -R rocky:rocky /home/linuxbrew/.linuxbrew/Homebrew
==> Downloading and installing Homebrew...
remote: Enumerating objects: 269703, done.
remote: Counting objects: 100% (1060/1060), done.
remote: Compressing objects: 100% (613/613), done.
remote: Total 269703 (delta 473), reused 910 (delta 384), pack-reused 268643
Receiving objects: 100% (269703/269703), 82.04 MiB | 24.21 MiB/s, done.
Resolving deltas: 100% (194466/194466), done.
From https://github.com/Homebrew/brew
* [new branch] brew_style_actionlint -> origin/brew_style_actionlint
* [new branch] bundle-install-euid -> origin/bundle-install-euid
* [new branch] load-internal-cask-json-v3 -> origin/load-internal-cask-json-v3
* [new branch] master -> origin/master
* [new branch] tapioca-patch -> origin/tapioca-patch
* [new branch] timeout-values -> origin/timeout-values
* [new tag] 0.1 -> 0.1
...
* [new tag] 4.3.0 -> 4.3.0
* [new tag] 4.3.1 -> 4.3.1
remote: Enumerating objects: 33, done.
remote: Counting objects: 100% (20/20), done.
remote: Total 33 (delta 20), reused 20 (delta 20), pack-reused 13
Unpacking objects: 100% (33/33), 5.60 KiB | 637.00 KiB/s, done.
From https://github.com/Homebrew/brew
* [new tag] 4.0.29 -> 4.0.29
* [new tag] 4.1.9 -> 4.1.9
* [new tag] 4.2.14 -> 4.2.14
Switched to a new branch 'stable'
==> Updating Homebrew...
==> Downloading https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:f49956aa43522c8e86127f7f5d377af2651fe35da975f5993eb2d038865c118c
######################################################################## 100.0%
==> Pouring portable-ruby-3.3.1.x86_64_linux.bottle.tar.gz
Warning: /home/linuxbrew/.linuxbrew/bin is not in your PATH.
Instructions on how to configure your shell for Homebrew
can be found in the 'Next steps' section below.
==> Installation successful!
==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics
No analytics data has been sent yet (nor will any be during this install run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
(echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> /home/rocky/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
- Install Homebrew's dependencies if you have sudo access:
sudo yum groupinstall 'Development Tools'
For more information, see:
https://docs.brew.sh/Homebrew-on-Linux
- We recommend that you install GCC:
brew install gcc
- Run brew help to get started
- Further documentation:
https://docs.brew.sh
[rocky@Ardbeg ~]$
[rocky@Ardbeg ~]$ (echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> /home/rocky/.bashrc
[rocky@Ardbeg ~]$ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
[rocky@Ardbeg ~]$ . .bashrc
[rocky@Ardbeg ~]$ brew
WSL2ででrootユーザでHomebrewのインストールは以下のようなエラーが発生します。
[root@Ardbeg ~]# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
==> Checking for `sudo` access (which may request your password)...
Don't run this as root!
[root@Ardbeg ~]#
無理やり突破しても以下の様にrootユーザでは実行できない旨のエラーとなるため、一般ユーザを作成してから作業しましょう。
[root@Ardbeg ~]# brew install hello
Error: Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all
build scripts full access to your system.
6.3. Chatbot UI Version 2.0.0インストール
①git cloneします
[root@Ardbeg ~]# pwd
/root
[root@Ardbeg ~]# git clone https://github.com/mckaywrigley/chatbot-ui.git
Cloning into 'chatbot-ui'...
remote: Enumerating objects: 5091, done.
remote: Counting objects: 100% (39/39), done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 5091 (delta 16), reused 18 (delta 9), pack-reused 5052
Receiving objects: 100% (5091/5091), 3.29 MiB | 6.45 MiB/s, done.
Resolving deltas: 100% (2862/2862), done.
[root@Ardbeg ~]#
②依存関係パッケージをインストールします
[root@Ardbeg ~]# cd chatbot-ui/
[root@Ardbeg chatbot-ui]# npm install
npm WARN deprecated rollup-plugin-terser@7.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated workbox-cacheable-response@6.6.0: workbox-background-sync@6.6.0
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
> chatbot-ui@2.0.0 prepare
> husky install
husky - Git hooks installed
added 1455 packages, and audited 1456 packages in 3m
295 packages are looking for funding
run `npm fund` for details
4 vulnerabilities (2 moderate, 2 high)
To address all issues, run:
npm audit fix
Run `npm audit` for details.
npm notice
npm notice New minor version of npm available! 10.5.0 -> 10.8.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.8.0
npm notice Run npm install -g npm@10.8.0 to update!
npm notice
[root@Ardbeg chatbot-ui]#
③supabaseをインストールします
[root@Ardbeg chatbot-ui]# pwd
/root/chatbot-ui
[root@Ardbeg chatbot-ui]# su rocky
Error: The current working directory must exist to run brew.
[rocky@Ardbeg chatbot-ui]$ brew install supabase/tap/supabase
[rocky@Ardbeg chatbot-ui]$ cd
[rocky@Ardbeg ~]$ brew install supabase/tap/supabase
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Tapping supabase/tap
Cloning into '/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/supabase/homebrew-tap'...
remote: Enumerating objects: 2644, done.
remote: Counting objects: 100% (1348/1348), done.
remote: Compressing objects: 100% (463/463), done.
remote: Total 2644 (delta 905), reused 1311 (delta 880), pack-reused 1296
Receiving objects: 100% (2644/2644), 518.60 KiB | 17.88 MiB/s, done.
Resolving deltas: 100% (916/916), done.
Tapped 3 formulae (16 files, 668.1KB).
==> Fetching dependencies for supabase/tap/supabase: linux-headers@5.15, glibc, gmp, isl, mpfr, libmpc, lz4, xz, zlib, zstd, binutils and gcc
==> Fetching linux-headers@5.15
==> Downloading https://ghcr.io/v2/homebrew/core/linux-headers/5.15/manifests/5.15.160
################################################################################################################# 100.0%
...
Bash completion has been installed to:
/home/linuxbrew/.linuxbrew/etc/bash_completion.d
==> Summary
🍺 /home/linuxbrew/.linuxbrew/Cellar/supabase/1.167.4: 9 files, 32.2MB, built in 1 second
==> Running `brew cleanup supabase`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
[rocky@Ardbeg ~]$
以下のエラーが発生したら、rootで「dnf install -y gcc」を実行後、brew install gccを実行後再度、「brew install supabase/tap/supabase」を実行すうr
Error: The following formula cannot be installed from bottle and must be
built from source.
supabase
Install Clang or run `brew install gcc`.
6.4. supabaseの起動
root権限でsupabaseを起動します。
初回起動はDockerイメージをダウンロードするので少し時間が掛ります。
私のPC(5年くらい前のRyzen7 のマシンでは力不足でかなりもっさりしています。)
[root@Ardbeg chatbot-ui]# supabase start
15.1.1.41: Pulling from supabase/postgres
17d0386c2fff: Downloading [============================> ] 15.72MB/27.51MB
ec8061954605: Download complete
e54d94900333: Download complete
3be4d2664419: Download complete
5d3911bdcee3: Download complete
33719a05f4ef: Downloading [======> ] 1.669MB/13.1MB
cd5341e6fcf9: Waiting
083e9066a8a9: Waiting
15e57519e2e1: Pulling fs layer
c5573b8f6e79: Waiting 8e4d4e9e7ffa: Pulling fs layer
7819f3b4135b: Waiting
bfb56fc535a5: Waiting 8745eb852041: Waiting 90bb658328ea: Waiting
883d9b8ba5fc: Waiting de3891c7e975: Pulling fs layer
4d1c60b79844: Waiting
bc35e3236cd4: Waiting
247f832137f9: Waiting
f8853832fdf5: Waiting
6e9addf2cb83: Waiting
fcd0db09bbd6: Waiting
8e2074a64d8c: Waiting
⣷ Starting database...
4935dfbf201c: Pull complete
f0c12f193db4: Pull complete
Digest: sha256:e50e81ffb9cd22cc28f69ec504e21e8fa2b5f3a9ae3f227e3c730536625b2848
Status: Downloaded newer image for public.ecr.aws/supabase/studio:20240506-2976cd6
Started supabase local development setup.
API URL: http://127.0.0.1:54321
GraphQL URL: http://127.0.0.1:54321/graphql/v1
S3 Storage URL: http://127.0.0.1:54321/storage/v1/s3
DB URL: postgresql://postgres:postgres@127.0.0.1:54322/postgres
Studio URL: http://127.0.0.1:54323
Inbucket URL: http://127.0.0.1:54324
JWT secret: super-secret-jwt-token-with-at-least-32-characters-long
anon key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
service_role key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU
S3 Access Key: 625729a08b95bf1b7ff351a663f3a23c
S3 Secret Key: 850181e4652dd023b7a98c58ae0d2d34bd487ee0cc3254aed6eda37307425907
S3 Region: local
[root@Ardbeg chatbot-ui]#
※supabese起動時に表示される以下の値がChatbot UI Version2.0.0の環境変数に対応付きますので控えておいてください。
No | 環境変数 | supabase起動時の表示 | 値 |
---|---|---|---|
1 | NEXT_PUBLIC_SUPABASE_UR | API URL | http://127.0.0.1:54321 |
2 | NEXT_PUBLIC_SUPABASE_ANON_KEY | anon key | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 |
3 | SUPABASE_SERVICE_ROLE_KEY | service_role key | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU |
[root@Ardbeg chatbot-ui]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c7f4e23efb1 public.ecr.aws/supabase/studio:20240506-2976cd6 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes (healthy) 0.0.0.0:54323->3000/tcp, :::54323->3000/tcp supabase_studio_chatbotui
ab1c9c48e965 public.ecr.aws/supabase/postgres-meta:v0.80.0 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes (healthy) 8080/tcp supabase_pg_meta_chatbotui
17f1e510421f public.ecr.aws/supabase/edge-runtime:v1.49.0 "sh -c 'mkdir -p /ho…" 6 minutes ago Up 6 minutes
8081/tcp supabase_edge_runtime_chatbotui
1ac8887ff7f0 public.ecr.aws/supabase/imgproxy:v3.8.0 "imgproxy" 6 minutes ago Up 6 minutes (healthy) 8080/tcp supabase_imgproxy_chatbotui
dad44ee56533 public.ecr.aws/supabase/storage-api:v1.0.6 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes (healthy) 5000/tcp supabase_storage_chatbotui
4089289a9716 public.ecr.aws/supabase/postgrest:v12.0.1 "/bin/postgrest" 6 minutes ago Up 6 minutes 3000/tcp supabase_rest_chatbotui
fc22778e474e public.ecr.aws/supabase/realtime:v2.28.32 "/usr/bin/tini -s -g…" 6 minutes ago Up 6 minutes (healthy) 4000/tcp supabase_realtime_chatbotui
67b1d0e5870e public.ecr.aws/supabase/inbucket:3.0.3 "/start-inbucket.sh …" 6 minutes ago Up 6 minutes (healthy) 1100/tcp, 2500/tcp, 0.0.0.0:54324->9000/tcp, :::54324->9000/tcp supabase_inbucket_chatbotui
5c25b0969364 public.ecr.aws/supabase/gotrue:v2.149.0 "auth" 7 minutes ago Up 6 minutes (healthy) 9999/tcp supabase_auth_chatbotui
941d7ec4ee85 public.ecr.aws/supabase/kong:2.8.1 "sh -c 'cat <<'EOF' …" 7 minutes ago Up 7 minutes (healthy) 8001/tcp, 8443-8444/tcp, 0.0.0.0:54321->8000/tcp, :::54321->8000/tcp supabase_kong_chatbotui
[root@Ardbeg chatbot-ui]#
[root@Ardbeg chatbot-ui]#
6.5. 環境変数の設定
Chatbot UI Version2.0.0とsupabaseのエンドポイント設定、LLMの設定を.env.localファイルで設定します。
[root@Ardbeg chatbot-ui]# cp .env.local.example .env.local
設定できる環境変数は以下の通りです。
No | 環境変数 | 説明 | 設定値(今回の評価環境) |
---|---|---|---|
1 | NEXT_PUBLIC_SUPABASE_URL | supabaseのエンドポイント | |
2 | NEXT_PUBLIC_SUPABASE_ANON_KEY | supabaseのデータ操作用のAnonnymusキー | |
3 | SUPABASE_SERVICE_ROLE_KEY | supabaseのロールキー | |
4 | NEXT_PUBLIC_OLLAMA_URL | Ollama接続時のエンドポイント | |
5 | OPENAI_API_KEY | OpenAIのAPIキー | |
6 | ANTHROPIC_API_KEY | AnthropicのAPIキー | |
7 | GOOGLE_GEMINI_API_KEY | Google GeminiのAPIキー | |
8 | MISTRAL_API_KEY | MistralのAPIキー | |
9 | GROQ_API_KEY | GroqのAPIキー | |
10 | PERPLEXITY_API_KEY | Perplexity.aiのAPIキー | |
11 | OPENROUTER_API_KEY | OpenRouterのAPIキー | |
12 | NEXT_PUBLIC_OPENAI_ORGANIZATION_ID | OpenAIのOrganization ID | |
13 | AZURE_OPENAI_API_KEY | Azure OpenAIのAPIキー | |
14 | AZURE_OPENAI_ENDPOINT | Azure OpenAIのエンドポイント | |
15 | AZURE_GPT_35_TURBO_NAME | Azure OpenAI Serviceのgpt-35-turboのデプロイ名 | |
16 | AZURE_GPT_45_VISION_NAME | ||
17 | AZURE_GPT_45_TURBO_NAME | ||
18 | AZURE_EMBEDDINGS_NAME | ||
19 | EMAIL_DOMAIN_WHITELIST | ||
20 | EMAIL_WHITELIST | ||
21 | NEXT_PUBLIC_USER_FILE_SIZE_LIMIT | ファイルサイズの上限 |
最低限.env.localのファイルで太字の4つの環境変数を設定します。
# Supabase Public
NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
# Supabase Private
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU
# Ollama
NEXT_PUBLIC_OLLAMA_URL=http://localhost:11434
# API Keys (Optional: Entering an API key here overrides the API keys globally for all users.)
OPENAI_API_KEY=sk-v5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ANTHROPIC_API_KEY=
GOOGLE_GEMINI_API_KEY=
MISTRAL_API_KEY=
GROQ_API_KEY=
PERPLEXITY_API_KEY=
OPENROUTER_API_KEY=
6.6. Chatbot UI Version2.0.0の起動
Chatbot UI Version2.0.0はインストールフォルダ内のpackage.jsonの記述に従い起動しますので、「npm run chat」コマンドで起動します。
[root@Ardbeg chatbot-ui]# npm run chat
> chatbot-ui@2.0.0 chat
> supabase start && npm run db-types && npm run dev
supabase start is already running.
Run supabase status to show status of local Supabase containers.
> chatbot-ui@2.0.0 db-types
> supabase gen types typescript --local > supabase/types.ts
Connecting to db 5432
(node:1) ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
> chatbot-ui@2.0.0 dev
> next dev
▲ Next.js 14.1.0
- Local: http://localhost:3000
- Environments: .env.local
Attention: Next.js now collects completely anonymous telemetry regarding usage.
This information is used to shape Next.js' roadmap and prioritize features.
You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
https://nextjs.org/telemetry
> [PWA] Compile server
> [PWA] Compile server
> [PWA] Compile client (static)
> [PWA] Custom worker found: /root/chatbot-ui/worker/index.js
> [PWA] Build custom worker: /root/chatbot-ui/public/worker-development.js
> [PWA] Auto register service worker with: /root/chatbot-ui/node_modules/next-pwa/register.js
> [PWA] Service worker: /root/chatbot-ui/public/sw.js
> [PWA] url: /sw.js
> [PWA] scope: /
> [PWA] Build in develop mode, cache and precache are mostly disabled. This means offline support is disabled, but you can continue developing other functions in service worker.
✓ Ready in 3.5s
⚠ GenerateSW has been called multiple times, perhaps due to running webpack in --watch mode. The precache manifest generated after the first call may be inaccurate! Please see https://github.com/GoogleChrome/workbox/issues/1790 for more information.
6.7. ブラウザでアクセス
Chatbot UI Version2.0.0の起動時に表示されたURLにアクセスします。
http://localhost:3000/
Start Chattingをクリックするとサインアップ画面が表示されるので、EmailとPasswordを入力して「Sign Up」を押します。
Chat Display Nameを入力して「Next」をクリックします。
.env.localファイルでOpenAIのAPIキーを設定しているので「Next」をクリックします。
しばらくするとChatbot UI Version2.0.0の画面に遷移します。
7.Visionモデルを使ってみる
言語モデルの切り替えは右上の言語モデルをマウスで左クリックしてプルダウンメニューを表示して行います。
.env.localで設定したOPENAI_API_KEYが効いていないときは、左下の人型のアイコンを左クリックして「User Settings」メニューの「API Keys」
タブでAPIキーを設定します。(モデルの切り替えができない場合は試してみてください。)
7.1. GPT-4 Vision
7.2. GPT-4o(Omni)
7.3. GPT-4o(Omni)でMicrosoft Word文章を要約
要約用の元データは「政府CIOポータル」サイトの「オープンデータ基本指針」のdocxファイル(data_shishin.docx:58KB)を使用します。
この文章の全体の概要とセクションごとの要約をまとめてください。
何かが解決できなくてアップロードが終わらないようです。
⚠ metadata.metadataBase is not set for resolving social open graph or twitter images, using "http://localhost:3000". See https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase
⚠ GenerateSW has been called multiple times, perhaps due to running webpack in --watch mode. The precache manifest generated after the first call may be inaccurate! Please see https://github.com/GoogleChrome/workbox/issues/1790 for more information.
⚠ GenerateSW has been called multiple times, perhaps due to running webpack in --watch mode. The precache manifest generated after the first call may be inaccurate! Please see https://github.com/GoogleChrome/workbox/issues/1790 for more information.
7.4. GPT-4o(Omni)でPDF文章を要約
要約用の元データは「政府CIOポータル」サイトの「オープンデータ基本指針」のpdfファイル(data_shishin.docx:505KB)を使用します。
この文章の全体の概要とセクションごとの要約をまとめてください。
以下が全文です。
上手くできているようです。
この文章は、「オープンデータ基本指針」と題された政府文書の要約と詳細なセクションごとの説明を含んでいます。この指針は、政府、地方公共団体、事業者が保有するデータの公開及び活用を促進するための基本方針を定めたものです。
### 全体の概要
文書は、オープンデータの意義、定義、基本的ルール、公開・活用を促す仕組み、推進体制、地方公共団体や事業者におけるオープンデータの取り組み、そして基本指針の見直しについて述べています。オープンデータは、国民誰もが容易に利用できる形で公開されるべき官民データと定義され、その公開と活用が国民参加・官民協働の推進、経済活性化、行政の高度化・効率化、透明性・信頼の向上に寄与するとされています。
### セクションごとの要約
1. **オープンデータの意義**
- オープンデータは、諸課題の解決、経済活性化、行政の効率化、透明性・信頼の向上に貢献する。
2. **オープンデータの定義**
- 国民誰もが容易に利用可能な形で公開された官民データ。
3. **オープンデータに関する基本的ルール**
- 公共データの原則的な公開、二次利用の促進、公開データの形式、未公開データの限定公開、有償データの取扱い、公開済みデータの更新に関する基本ルールが定められている。
4. **オープンデータの公開・活用を促す仕組み**
- オープンデータ・バイ・デザインの推進、利用者ニーズの反映。
5. **推進体制**
- オープンデータに関する相談窓口の設置、推進体制の詳細。
6. **地方公共団体、独立行政法人、事業者におけるオープンデータの取組**
- 地方公共団体と事業者におけるオープンデータの取り組みについての説明。
7. **本基本指針の見直し**
- 技術動向や国際環境の変化に応じた柔軟な見直しの方針。
この文書は、オープンデータの推進を通じて、より透明で利用者に優しいデータ公開環境の構築を目指す政府の方針を示しています。
8.停止方法
Chatbot UI Version2.0.0は、Chatbot UIとSupabaseから構成されています。したがって、最初にChatbot UIをCtrl+cで停止し、次に’supabase stop'コマンドで停止します。
[root@Ardbeg chatbot-ui]# supabase start
supabase start is already running.
Run supabase status to show status of local Supabase containers.
[root@Ardbeg chatbot-ui]# supabase status
Stopped services: [supabase_analytics_chatbotui]
supabase local development setup is running.
API URL: http://127.0.0.1:54321
GraphQL URL: http://127.0.0.1:54321/graphql/v1
S3 Storage URL: http://127.0.0.1:54321/storage/v1/s3
DB URL: postgresql://postgres:postgres@127.0.0.1:54322/postgres
Studio URL: http://127.0.0.1:54323
Inbucket URL: http://127.0.0.1:54324
JWT secret: super-secret-jwt-token-with-at-least-32-characters-long
anon key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
service_role key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU
S3 Access Key: 625729a08b95bf1b7ff351a663f3a23c
S3 Secret Key: 850181e4652dd023b7a98c58ae0d2d34bd487ee0cc3254aed6eda37307425907
S3 Region: local
[root@Ardbeg chatbot-ui]#
[root@Ardbeg chatbot-ui]# supabase stop
Stopped supabase local development setup.
Local data are backed up to docker volume. Use docker to show them: docker volume ls --filter label=com.supabase.cli.project=chatbotui
[root@Ardbeg chatbot-ui]# supabase status
Error response from daemon: No such container: supabase_db_chatbotui
Try rerunning the command with --debug to troubleshoot the error.
[root@Ardbeg chatbot-ui]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Ardbeg chatbot-ui]#