Local LLMによるコーディング補完 - foolmacky/DevelopDocs GitHub Wiki

■ llama.cpp + llama.vim

  • local LLMを使ってコード補完機能を使う
  • llama.vim https://github.com/ggml-org/llama.vim
  • llama.cppサーバはmac os のlaunchdの仕組みを使って起動し、ログは結構出力されるので、一旦/dev/nullへ流す
  • ~/Library/LaunchAgents/com.ggml.llama.plistに起動内容を定義
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.ggml.llama</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/bin/llama-server</string>
        <string>--fim-qwen-7b-default</string>
    </array>
    <key>RunAtLoad</key>
    <false/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
	<string>/dev/null</string>
    <key>StandardErrorPath</key>
	<string>/dev/null</string>
</dict>
</plist>
  • ファイルを作成したら、コマンドを打って起動
launchctl load ~/Library/LaunchAgents/com.ggml.llama.plist
  • llama.cppを落とすのはunloadコマンドで
launchctl unload ~/Library/LaunchAgents/com.ggml.llama.plist
  • 一度起動コマンドを打つと、macの「設定」「一般」「ログイン項目と機能拡張」にllama-serverのエントリが自動的に追加される。RunAtLoadをfalseに設定しているのだが、起動すると自動的にロードされているようだ。設定画面でoffにするとプロセスはダウンする
  • 設定に誤りがあったりすると、ファイルを修正しても元の内容が保持されているので、一度removeコマンドを打って、エントリを削除して再度起動コマンドを打つ。removeコマンドを打っても、設定ファイルが削除されるわけではない。
launchctl remove com.ggml.llama
  • デフォルトで統計情報が表示されるので、.vimrcにそれをoffにする設定を入れる
let g:llama_config = { 'show_info': 0 }
  • 自動補完の文字色をカストマイズ ~/.vim/plugged/llama.vim/autoload/llama.vim
highlight default llama_hl_hint guifg=#00fa9a ctermfg=215
//guifgの方が対象
  • llama.cppを使って複数ファイルを編集していたら、初めてmac bookのファンが回った(^^;
⚠️ **GitHub.com Fallback** ⚠️