これまでのプログラムを変更してOllamaに対応させた。これでローカルllmが使用できるようになった。
ただ、選択できるモデルが増えたことでどれを選べばいいか迷うことになったので簡単な比較プログラムを作った。
Ollamaであらかじめpullして必要なモデルをダウンロードしておく必要がある。
PaintGUIのストリーミング時の動作速度を改善。これまですべての文字の位置計算を再計算していたのを、追加された行の部分だけ計算するように変えた。
すべてのソースをまとめたzipは以下からダウンロード可能
ウィンドの説明

上から順に内容を説明
Number of Modeles to Compare :比較するモデルの数
Enable Warmup 入力されたプロンプトの前 ”こんにちは”のレスポンスを得ることで本来の入力前にVRAMにモデルをダウンロードする。
Modele x settings モデルの設定を行う
LLM Model : LLMのモデルをプルダウンメニューから選択します。Gmenimi flash 1.5はハードコーディングされています。Ollamaのモデルはpullですでにダウンロードされているモデルが表示されます。
Use tools 関数呼び出し機能を使うかどうかのチェックボックスです。チェックをするとtools/command_list.py の関数が表示されます。各関数について使うかどうかのチェックができます。
ユーザーの有力した内容と、それに対するAIの回答の右下にAI回答が終えるまでのTPS(token per sec)が表示されます。トークン数は日本語の場合文字数をトークン数としています。英語の場合、単語数がトークン数になります。
Common input:ユーザーの指示を記入します。すべてのモデルに対して順番に渡されます。
Browse Image :llmに渡す画像を指定します。ドラッグアンドドロップでも設定できます。複数指定するの左側の表示には指定した数が表示されます。
Clear Image : Browse Imageで設定した画像をクリア(設定していない状態に)します。
Send to All Models: Common inputやBrowse Imageで設定したものをllmい送ります。送られてデータは設定されたllmが順番に推論します。
Stop All Models : 推論を強制的に止めます。
Clear All Outpts : 出力内容を消去します。今回は毎回送信するたびに内容がクリアされるので機能的意味はありません。
Global Font Size : ウィンドのフォントサイズを指定します。
Apply Font Size: Global Font Sizeで指定したサイズを適用(反映)します。
画像(イメージ)とtoolの補足
画像をか使えるかどうかはOllama.py の__init__でハードコーディングされている。ここのリストにマッチングしないモデルは、画像が使えないものとして扱われます。
Ollamaでtoolsが使えないモデルでtoolを使おうとするとエラーになり出力が空になります。
tool周りの表示内容は ComparisonGui.py 内の get_tools_from_command_list_module で決まっています。 ここではcommand_list.py のget_tool_listで取得できるリストを使用しています。
主な変更箇所
ComparisonGui.pyを追加。PaintGUI.pyを利用して作られたもの。Aiに大半を作らせた。
PaintGUI.py:ストリーミング時の動作速度を改善。
Agent.py:GeminiLlm.pyとOllamaLlm.pyの切り替え係にすることをイメージして変更、主な処理の一部はLlmBase.pyに移動。
- GUI
- Agents
