はじめに
NeovimでChatGPTなどの生成AIと連携するためのプラグイン「avante.nvim」では、システムプロンプトの工夫によって、AIの出力品質を大きく向上させることができます。
この記事では、以下の3つの方法によってプロンプトを柔軟に制御する手法を紹介します。
-
opts.system_prompt
による簡易的な指定 -
*.{mode}.avanterules
ファイルによるモードごとの設定 - templatesディレクトリ内の{mode}.avanterulesを直接編集
対象読者は、すでにNeovimでavante.nvimをすでに導入しており、より実用的な出力を得たいと考えている方です。
動作環境
- Ubuntu 24.04.2 LTS
- Neovim v0.10.2
- lazy.nvim v11.17.1
- avante.nvim v0.0.23(コミット: adae032 時点)
方法①:opts.system_prompt
による簡易的な指定
avante.nvimでは、セットアップ時に opts.system_prompt
を指定することで、システムプロンプトを簡単に設定できます。
{
"yetone/avante.nvim",
event = "VeryLazy",
lazy = false,
version = false, -- 最新の変更を常に取得したい場合に設定
opts = {
system_prompt = "関西弁でお話してください",
-- その他の設定
},
-- その他の設定
}
この方法は手軽にプロンプトを指定できますが、モードごとの切り替えや複雑な挙動を伴う制御には不向きです。
方法②:*.{mode}.avanterules
ファイルによるモード別制御
より細かな制御を行いたい場合は、プロジェクトのルートディレクトリに *.{mode}.avanterules
ファイルを作成することで、各モードに対応したシステムプロンプトを指定できます。
注意点:使用できるモード名について
公式の README.md に記載されたモード名をそのままファイル名に使っても、期待通りに動作しない場合があります。
2025年5月時点では、次の4つの文字列を含むファイル名を対象としているようです(該当コード
agentic
legacy
editing
suggesting
デフォルトテンプレートを読む
templatesディレクトリには、各モードがどのようなプロンプトテンプレートを使用しているかが記述されています。
ベーステンプレート(base.avanterules)に、ツール呼び出しに関する詳細なガイドラインが含まれています。ChatGPTのようなツール連携型エージェントとしての利用を想定した設計になっているようです。
プロンプトの例:hoge.agentic.avanterules
あなたは関西人です。関西弁でしゃべってください。
以下に例を示します。
User request:
{% raw -%}
こんにちは
{%- endraw %}
Your response:
{% raw -%}
まいど!
{%- endraw %}
このように jinja
テンプレート形式で記述できるため、テンプレートの再利用や条件分岐による構造化された出力が可能です。
方法③ :templates/{mode}.avanterulesの直接編集
上記①や②の方法では、既存のデフォルトプロンプトに対して内容が追記される形になります。これは通常のコーディング用途には有効ですが、avante.nvimを「AIツール」としてではなく、まったく別のエージェントとして活用したい場合には不十分かもしれません。
そのような場合は、ソースコード中のavante.nvim/lua/avante/templatesにある{mode}.avanterulesを直接書き換える方法が有効です。
テンプレートを書き換えた後は、生成AIが従来の「ソフトウェア開発支援ツール」としてではなく、任意の役割に基づく応答を行うようになります。
この方法はある種の「プロンプトエンジニアリング」であり、柔軟性の高い運用が可能です。
③の方法に関しては、各方法を試して挙動を比較しながら得た気づきなので、間違っていればご指摘などいただければありがたいです。
まとめ
方法 | 特徴 | 向いている用途 |
---|---|---|
opts.system_prompt | 手軽に設定可能 | シンプルな出力調整 |
各プロジェクトルート/*.{mode}.avanterules | モードごとの柔軟な制御が可能 | モード別の運用 |
ソースコードのtemplates/{mode}.avanterules | デフォルト無視で完全にカスタム可能 | 高度なプロンプト制御・実験的用途 |
avante.nvimのプロンプト機能を活用すれば、Neovim内での生成AIの出力をより的確かつ実用的に制御できます。
用途や目的に応じて適切な方法を選択し、最大限に活用してみてください!