ローカルLLM利用時の小技などの話①【ollama】
はじめに
本記事では、筆者が日常的に利用しているローカルLLM(ollama利用)の設定や小技などを紹介したいと思います。
※ ollama + OpenWebUIを利用しています
システムプロンプトの工夫
LLM(大規模言語モデル)では、モデルごとに振る舞いや役割・制約をあらかじめ定義する指示文があります。一般に、用途を指定するための「あなたは〜の専門家です」などを記述する事が多いと思います。

自分専用のローカル利用であれば、安全性ポリシーのようなものは必要ないかもしれませんが、さまざまな工夫を行うことで、回答品質や性能を上げる事ができます。
暴走や繰返しを低減する
ローカルLLMはよく暴走します。(繰返しを防ぐ)パラメータを極端に調整すると性能も大きく落ちるので、システムプロンプトでの工夫の方が良い事が多いと思います。
大事な事なので2回言いました
プロンプトを単純に繰り返すと性能が上がるという手法がありますが、システムプロンプトでも意外と効果があります。※ 特にリーズニングのないinstructモデルで効果がありました

パラメータをシステムプロンプトに記述する
AIらしい指定ですが、アルゴリズムとしてAIに指定するのではなく、ollamaとは何であるか、そのパラメータの意味を理解している最近のモデルであれば、同じ値を明示的に記述する事で効果がでます。

Ollamaモデルファイルを作る
ollama WebUIのみを利用するのであれば、WebUI付属のGUIのモデルカスタマイズ機能だけで事足りますが、ollamaはバックエンドとして動作するソフトウェアなので、WebUI以外のollamaクライアントを利用する場合に、サーバーとしてのollama基本モデルを設定しておけば、個別設定の手間が省けます。
特に回答時の日本語設定を個別のソフトウェアで行うのは大変です。
例えば、ollamaクライアントのellama(Emacsの機能拡張)の場合は、指示プロンプトが英語なので、モデルによっては、ellamaの変数ellama-languageを"Japanese"にしても、回答のすべてが英語になってしまう事が多々あります。

すべての指示変数を日本語に変えたり、「in Japanese」を追加するのは現実的ではないので、利用するモデルのシステムプロンプトに日本語の強制を記述しておきます。
モデルファイルのデフォルト値を書き出す
ollama show devstral-small-2:latest > devstral-small-2.modelfile書き出したファイルを編集

冗長であっても、挫けずに何度も指示すると言うことを聞くようになります
モデルを作成
ollama create 55-devstral-small-2 -f devstral-small-2.modelfile「55-devstral-small-2」という名前のモデルがollamaに追加されるので、EllamaやOpenWebUI等のollamaクライアントから利用できます
# 登録されているか確認
ollama list | grep -i 55-dev
55-devstral-small-2:latest
# コマンドラインで利用
ollama run 55-devstral-small-2 "フィボナッチ数列を生成するコードを作って"
以下は、Pythonでフィボナッチ数列を生成するコードです。コードには日本語のコメントを追加しています。
```python
def fibonacci(n):
"""
フィボナッチ数列の最初のn項を生成します。
:FirefoxやChromeの機能拡張で、WebページのCopilot機能として利用できる「Page Assist」でも、個別の設定で再度指定する事なく、英語や中国語で回答してしまう問題を低減する事ができます。

まとめ
AIは、動物の脳神経細胞に似た仕組みで動作し、かつ気紛れなので、数理モデルに裏付けされた原理や直接的なアルゴリズムの設定が必ずしも正しいとは言えず、人間のように口煩く繰り返したり、パワハラプロンプトが効果を出すという性質が、既存の工学やIT系技術と大きく異なる事なのかもしれません。
以下、関連する記事の【PR】です。
