1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Neovim × 生成AI:avante.nvimでシステムプロンプトを活用する方法

Last updated at Posted at 2025-05-05

はじめに

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の出力をより的確かつ実用的に制御できます。
用途や目的に応じて適切な方法を選択し、最大限に活用してみてください!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?