Closed5

LaVagueを試す

kun432kun432

以下にデモ用notebookがある。

https://colab.research.google.com/github/dhuynh95/LaVague/blob/main/examples/gradio-demo.ipynb

ただし、Colaboratoryで試してみたところ、Chrome/ChromeDriverのインストールが上手くいかずに動作しなかった。自分が見た限りはChrome/ChromeDriverの問題に見えたけど、公式のやつで動いてる人もいるっぽい。

とりあえずは、その辺をすこし自分的に使いやすいように修正+日本語翻訳して動作確認したものを以下に置いておく。

https://gist.github.com/kun432/b61cc15fd318022204fa671f12cd8dc7

あとLaVagueのデモはGradioで立ち上がるのだけど、ColaboratoryでWeb UI立ち上げるのは利用規約的にややリスクがあるかもということを追記しておく。

kun432kun432

昨日は動いていたものが動かなくなっている、と思ったらIssue上がってた。何かのパッケージがアップデートされて、依存関係の問題が起きてるかもとのこと。

https://github.com/lavague-ai/LaVague/issues/29

どうもLlamaIndex側がアップデートしたことで、ストリーミングのレスポンスが壊れている模様でHotfixが入っている。上の日本語notebookも一旦修正しておいた。また修正されるかもしれない。

kun432kun432

とりあえずこんな感じでデモは動くというのをまとめておく。

上記notebbokを上から実行していって、以下のコードでGradioが起動する。

base_url = "https://huggingface.co/"

instructions = ["メニューから、'Models'と'Spaces'の間にある'Datasets'をクリックして下さい。",
                "'Filter by name' と書かれた検索フォームに 'The Stack' と入力してEnterキーを押して下さい",
                "下に500ピクセル分、スクロールダウンして下さい",]

create_demo(base_url, instructions)

GradioのURLにアクセスしてみるとこういう画面が表示される。

URLが入力されているのでENTER。

HuggingFaceのトップページが表示される。ちなみにここはSeleniumでキャプチャした画像が表示される。(なのでクリックとかはできない)

下のフォームに指示を入力する。今回はあらかじめ設定してある例を選んでみる。

選択した例が入力されたらENTER

ページが遷移しているのがわかる。

以下、他の例も試してみると良い。

'Filter by name' と書かれた検索フォームに 'The Stack' と入力してEnterキーを押して下さい

下に500ピクセル分、スクロールダウンして下さい

こんな感じで動作する。

実際に生成・使用されたコードは右側に表示される。

あとデバッグタブを開くと、取得したページのHTMLの構造を解析してllamaindexのnodeとして保持されているようにみえる。

kun432kun432

使用されているプロンプトはこちら。クエリからSeleniumのコードを生成させているのだけど、few shot的にSeleniumでよくやるような操作のコード例を記載している。

https://github.com/lavague-ai/LaVague/blob/c64a0268c16b5b615824ec67f97c8d365413996a/src/lavague/default_prompt.py

で、ざっくりコードを読むと、これプロンプトとかさっきのGradioの部分を除くと、純粋なロジック部分は150行ぐらいのLlamaIndexのコードでできているのだよね。。。。

  • CodeSplitterでHTML解析してベクトルインデックス作成
  • BM25Retrieverでキーワード検索
  • 上記をクエリエンジン経由で検索してコマンド生成

ちなみにデフォルトはHuggingFace Inference APIで"NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO"をつかっているようだけど、ローカルモデルも使えるらしい。その場合のデフォルトは"HuggingFaceH4/zephyr-7b-gemma-v0.1"になるみたいで、ここを自分で使いたいモデルに置き換えることもできるらしい。

そんなに難しいことをやっているわけではないし、SeleniumやGradioとかと組み合わせてるだけなのに、なかなかすごいなー。

コードも少ないし、めちゃめちゃ実装の参考になりそう

このスクラップは2ヶ月前にクローズされました