LangChainを視覚的に設計できるLangflow
LangChainとは?
Langchain は、話題の GPT-4, GPT-3.5-turbo などの LLM API と、その他の外部リソースと連携させたアプリケーション・サービスの開発を支援する目的で開発されたライブラリ・モジュールです。
その他の外部リソースとはつまり、Google などの検索エンジンの検索結果であったり、複数の LLM であったり、あるいはローカルのデータベースなどです。仕組みとしては、Agent(代理人)とChain(一連の流れを構成する)で処理の流れをコントロールするものです。
LangFlow とは?
LangFlow は、この LangChain の処理の一連の流れを、GUIで繋げて設計しようというツールになります。いわゆる、ノーコードの開発ツールに近いものですね。Unity を触ったことがある方であれば、馴染み深いのではないでしょうか。
Windows では動かない LangFlow
残念なことに、 LangFlow は一部使用しているライブラリが OS 依存であるため、 Windows では動作しません。そこで、広く開発環境の構築にも使われている Docker を用いて、仮想環境でLangFlow を実行します。
ほぼ日刊アップデートのLangChain 本体と比較して、LangFlow のアップデートは遅くなっています。その関係で、依存しているパッケージ・ライブラリについても2023/3/16 現在では大分「古い」バージョンのものとなっています。
GPT-4 の API の waitlist にいる人も多いだろう現在、LangFlow をメインの開発環境に導入することはおすすめできません。Web サーバーとして動作するアプリケーションでもあるので、仮想環境への導入をおすすめします。
Docker Desktop の導入
Windows や MacOS などのGUI 環境であれば、上記URLからDesktop版のDockerの導入がお手軽です。
Windows の場合、 wsl のアップデートを要求されることがありますので、
画面の指示に従って、terminalから
wsl --update
を実行します。Docker Desktop は image の管理などに利用することもありますが、今回は全て CUI から操作するので、インストールが完了した後は閉じてしまって大丈夫です(途中で再起動が必要です)。
Docker コンテナの構築
インストールが完了したら、LangFlow 用のコンテナを構築していきます。
Dockerfile
FROM python:3
USER root
RUN apt-get update
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
RUN pip install -U pip
RUN pip install -U setuptools
RUN pip install -U langchain
RUN pip install -U langflow
Dockerfile は、 FROM python:3 として、公式の Python 3環境をベースに構築します。必須ツール類をインストールとupdateさせれば充分です。
docker-compose.yml
version: '3'
services:
langchain:
restart: always
build: .
container_name: 'langchain'
working_dir: '/root/'
tty: true
volumes:
- ./src:/root/src
ports:
- "127.0.0.1:5003:5003"
command: langflow --host 0.0.0.0
LangFlow は port 5003で起動するので、port forwardingと、langflow の待ち受け host を 0.0.0.0 に設定すれば最低限動作します。src フォルダを volumes でマウントしていますが、特別必要ではありません。
build, 起動
Dockerfile と docker-compose.yml を適切なフォルダ(例:D:\docker\langflow)に格納して、ターミナルでそのフォルダを開きます。
Build しつつ起動
docker compose up -d --build
動作確認
起動したら、ホスト(通常使っているPC)で、 http://127.0.0.1:5003にアクセスして、GUIが表示されれば動作しています。
起動
docker compose up -d
終了
docker-compose down
※ 正式な手順で終了しないと、エラーが出て起動しなくなるので、その場合は以下の強制終了コマンドを試してみる
強制終了
docker-compose down --remove-orphans
実際、どうなの?
冒頭でも述べたように、 LangFlow は LangChain や OpenAI のアップデートに充分追従できている状態ではありません。
そのため、GUIから設定できるモジュールの数は限られており、 OpenAIChat や ChatOpenAI といった GPT-3.5-turbo のラッパーをカバーできていない状態となっています。もちろん、 GPT-4 についても同様です。
その他の Tool や Agent も限定的であり、Export 機能についても json 形式のみであり、Python や JS/TS のソースコードを直接出力することもできないようです。
一方で、 API キーなどを適切に設定しさえすれば、GUI 上で Chatの動作確認ができますので、気軽に動作確認をする、 簡易的なPoCを行うツールとしては可能性が高いように思います。
とはいえ、いずれにしても、LangChain や LLM API のアップデートが一段落し、それにLangFlow が追いついてから、というのが本番ではないでしょうか。