EmacsでchatGPTやgemini,ollama(ローカルLLM)を扱うためのパッケージgptelについて紹介する。
試しにollamaを操作してみる。
ollamaはインストール済みでgpt-oss:20bのモデルをpullまたはrunしており、ローカルLAN向けにサーバが動いているものとする。
gptelをインストール後、Emacsの設定ファイルに以下を追記。
(setq
gptel-model 'gpt-oss:20b
gptel-backend (gptel-make-ollama "Ollama"
:host "ollamaサーバのIPアドレス:11434"
:stream t
:models '(gpt-oss:20b)))
M-x gptel
すれば別バッファで会話が可能。
なお、以下の設定をしておくとorg-modeで開かれる(デフォルトはmarkdown mode)
(setq gptel-default-mode 'org-mode)
Emacsで作業しているときにそのバッファでプロンプトを記載して、プロンプトの下に回答を追記してもらうことも可能。
その場合は M-x gptel-send
を使う。
範囲が選択されていればその範囲がプロンプトとして送られる。
何も選択せずにgptel-sendを実行するとバッファ全体が送られるので注意。
右側のバッファが会話用のバッファでやりとりしている例で、
そのあとに左側のバッファでバッファ内で範囲指定してプロンプトを投げて回答をもらった例。
会話用バッファは C-RET
が gptel-send
に割り当てられており、
デフォルトはバッファ全体がプロンプトとして送られるので過去の会話内容をふまえた返答が可能。
左側はグプトスについて聞いているが単発で聞いているのでモデルは知らないと素直に回答。
M-x gptel-menu
から会話の前提条件を指定することもできる。
以下のとおり指定してみた。
あなたは関西弁で話す陽気な人です。ボケを混ぜつつ日本語30文字程度で返答して。






かなり陽気な感じになってしまった。
Emacsをエディタと言いきってしまっているが陽気だからなのかハルシネーションなのかボケなのかわからなくなってしまった。
まとめると、Emacsの操作感で生成AI(LLM)が扱えて便利。
使いこなせば複数のLLMの切り替えもすぐにできるし、前提条件の切り替えもできてさらに便利なはず。