Ubuntu Weekly Recipe

第922回GNOME向けのデスクトップAIアシスタント⁠Newelleを活用する

今回は第920回で取り上げたNewelleを、実際に活用する方法を紹介します。

Newelleを活用

第920回ではNewelleを軽く紹介しましたが、その後実際に活用しだしていくつかの知見を得ることができたので今回紹介します。本来は前回紹介しておくべきことも含まれるので、若干申し訳なさもあるのですが。

フォーカスがおかしくなることがある

文字の入力欄で、文字を入力してもそれが表示されないという不具合に、稀に遭遇します。より専門的にはプレエディット(確定前文字列)が表示されなくなるということで、再現条件はよくわかりません。ただ、プレエディットが表示されないということで、幸いすぐに気づきます。このような現象に遭遇したら、すかさず右クリックをするなりしてコンテキストメニューを表示してください。これでプレエディットが表示されるようになります。

内蔵llama.cpp(ローカルモデル)だと遅い

テスト段階ではあまり大したことをしていなかったので恥ずかしながら気づかなかったのですが、第920回で紹介した方法で「ローカルモデル」を選択してllama.cppを使用すると、速度が出ません。別にllama.cppを起動し、⁠OpenAI API」を使用して同じことをさせると、全く同じことをしているはずなのに速いという謎の結果となります。

ひとまずGPU負荷を見てみることにしました。まずは「ローカルモデル」を選択した場合は図1です。

図1 すぐに負荷が下がる

「OpenAI API」を使用した場合は図2です。

図2 負荷がかかりっぱなしとなる。処理が終わっても使い続けているが、一旦それは置いておく

どうやらGPUの能力を引き出せていないようです。

ソースコードを書かせるのに適したモデルは

筆者は現在いくつかのアプリをLLMに書かせています。いろいろ試したところ、現在はQwen 3.6 27Bが最も優れているという感覚です。近々Qwen 3.8 27Bがリリース予定だったり、Meta社からMuse Glimmerなるモデルがリリースされたりと、都度見直しを行う予定で、それが楽しいことだったりするのですが。

しかもQwen 3.6はMTP(Multi Token Prediction)に対応したモデルもリリースされているので、こちらを利用します。

第920回で使用したGeForce RTX 5060 Ti 16G VENTUS 2X OC PLUSにせよ、今回使用している筆者のメインPCに接続されているAMD Radeon RX 9070 XT Challenger 16GBにせよ、VRAMが16GBしかないと望ましいとされるQ4_K_Mで量子化したモデルは少々荷が重いので、Q3_K_Mで量子化したモデルを使用します。Q3_K_Mであれば14GBくらいなので16GBのVRAMに全部乗り、高速に動作することが期待できます。

なお第868回で紹介したRD-RX9060XT-E16GB/DFは、Qwen 3.6 27Bを動作させるには力不足です。

筆者が現在LLMに書かせているアプリのうちの1つは、第570回第620回で紹介されたYubikey(またはその互換)向けのユーティリティです。現在はYubikeyが接続されているかどうかを検出する機能しかありませんが図3、4⁠。

図3 Yubikeyを認識していないとき
図4 Yubikeyを認識しているとき

最初は適当にapt searchして見つけたpython3-yubicoパッケージを使用して開発するように指示しました(図5)

図5 筆者による雑な指示

しかしうまく動かないので原因を探させたところ、使うべきはpython3-yubicoではなくpython3-ykmanであると指摘されました(図6)。もちろん筆者が事前に知っていればよかっただけの話ではありますが、あらためてQwen 3.6 27Bは賢いと思ったものです。

図6 自身でエラーを修正した

ちなみにこのアプリはpython3-ykmanを使っていることから、Python3で書かれているとわかります。GUIはPyGObjectで、GNOMEとの親和性が高いです。PyGObjectはGTK3と4の両対応ですが、GTK4を使用しているにもかかわらずGTK3で書いてしまい、エラーになることが度々あったのには閉口しました。NewelleのREADME.mdによるとClaude互換のSkillsに対応しているとのことで、ミスした箇所をSKILL.mdに書かせようとしたものの、コンテキストが足りなくてうまくいきませんでした。このあたりがVRAM 16GBの限界なのでしょう。

参考までに、実際に使用しているllama.cppのパラメーターは次のとおりです。

./llama-server -m ../../model/Qwen3.6-27B-MTP-GGUF/Qwen3.6-27B-Q3_K_M.gguf -ngl 99 --port 8080 --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.00 --presence_penalty 1.5 --reasoning on --no-warmup --no-mmap --fit on --ctx-size 65536 --reasoning-preserve --spec-type draft-mtp --spec-draft-n-max 2

最適化の余地はまだまだありそうです。実際にこれで起動するとワーニングが表示されるので、修正点があることは確かです。

拡張機能

今回ここまではプログラムを書かせることに注力してきましたが、Newelleはエージェントとして使用するためにいろいろな機能を持っています。そのうちの1つは拡張機能で、後から機能追加できます。その拡張機能も現段階でいろいろ公開されています。

この中で注目したいのはNewelle-Nextcloudです。その名のとおり、NewelleからNextcloudに接続できるようにする拡張機能です。

このプラグインのGitHubのリポジトリからzipファイルをダウンロードし、展開したフォルダーにあるnextcloud.pyを用意します。Newelleの「履歴」右側にあるハンバーガーメニュー(≡のようなアイコン)をクリックし、⁠ファイルから拡張機能をインストール」をクリックし、nextcloud.pyを選択します(図7)

図7 nextcloud.pyを登録したところ

右側の「∧」をクリックすると、Nextcloudサーバーの接続に必要な入力欄が表示されます(図8)

図8 Nextcloudサーバーの接続に必要な情報を入力する

「ファイル」はもちろんのこと、⁠ノート」⁠カレンダー」⁠コンタクト」⁠デッキ」⁠クックブック」と、さまざまなNextcloudのアプリに対応しています。Nextcloudを使用しているのであればエージェントとして役に立ちそうです(図9)

図9 カレンダーにアクセスできるかどうかを確認してもらった。無事にできている

調べさせたことを「ノート」に登録させてみましたが、なかなかに便利であると感じました(図10)

図10 ⁠ノート」に登録してもらったことを第781回で紹介したIotasで表示しているところ

おすすめ記事

記事・ニュース一覧