LoginSignup
2
2

Chatbot UI Ver2.0.0をPCで動かす

Last updated at Posted at 2024-05-26

image.png

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 Google 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 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ファイル

cb2_filetypes.png

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/

cb1.png

Start Chattingをクリックするとサインアップ画面が表示されるので、EmailとPasswordを入力して「Sign Up」を押します。

cb2.png

Chat Display Nameを入力して「Next」をクリックします。
cb3.png

.env.localファイルでOpenAIのAPIキーを設定しているので「Next」をクリックします。
cb4.png

しばらくするとChatbot UI Version2.0.0の画面に遷移します。
cb5.png

7.Visionモデルを使ってみる

言語モデルの切り替えは右上の言語モデルをマウスで左クリックしてプルダウンメニューを表示して行います。

.env.localで設定したOPENAI_API_KEYが効いていないときは、左下の人型のアイコンを左クリックして「User Settings」メニューの「API Keys」

タブでAPIキーを設定します。(モデルの切り替えができない場合は試してみてください。)

7.1. GPT-4 Vision

cb2_v1.png

cb2_v2.png

7.2. GPT-4o(Omni)

cb2_o1.png

cb2_o2.png

7.3. GPT-4o(Omni)でMicrosoft Word文章を要約

要約用の元データは「政府CIOポータル」サイトの「オープンデータ基本指針」のdocxファイル(data_shishin.docx:58KB)を使用します。

この文章の全体の概要とセクションごとの要約をまとめてください。

cb2_docx_upload.png

何かが解決できなくてアップロードが終わらないようです。

 ⚠ 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)を使用します。

この文章の全体の概要とセクションごとの要約をまとめてください。

cb2_o_pdf.png

以下が全文です。
上手くできているようです。

この文章は、「オープンデータ基本指針」と題された政府文書の要約と詳細なセクションごとの説明を含んでいます。この指針は、政府、地方公共団体、事業者が保有するデータの公開及び活用を促進するための基本方針を定めたものです。

### 全体の概要
文書は、オープンデータの意義、定義、基本的ルール、公開・活用を促す仕組み、推進体制、地方公共団体や事業者におけるオープンデータの取り組み、そして基本指針の見直しについて述べています。オープンデータは、国民誰もが容易に利用できる形で公開されるべき官民データと定義され、その公開と活用が国民参加・官民協働の推進、経済活性化、行政の高度化・効率化、透明性・信頼の向上に寄与するとされています。

### セクションごとの要約
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]#

9.参考URL

2
2
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
2
2