LAN の llama.cpp でチャットする
自分のネットワークで動く llama.cpp(llama-server)を、compose / native / docker の配備のチャットのエンジン(llm)として使わせます。
画像の ComfyUI と同じ形で、セッションは Control Plane を通して使います。
| あなたがやること | 起きること |
|---|---|
| GPU のあるマシンで llama-server を起動する | OpenAI 互換の API がポートで待ち受ける |
AF_LLM_URL(と鍵)を設定して Control Plane を再起動する |
Control Plane が外部管理の llm の行を 1 本作り、セッションのチャットをそこへ中継する |
| 推論エンジンの画面でモデルを登録する | メンバーがそのモデルでセッションを起動できる |
llama-server はあなたのもののままです。Control Plane は起動も停止もせず、費用も付けません。 使用量はこれまでどおり記録されます。Control Plane のゲートウェイが答えのトークン数を読み、メンバーの使用量に書きます。ストリーミングでも同じです。
llama-server を起動する
Section titled “llama-server を起動する”ここのコマンドは LAN のマシンで実行します。ワークスペースの中ではありません。
| 入手のしかた | Linux | Windows |
|---|---|---|
| コンテナ | ghcr.io/ggml-org/llama.cpp:server-cuda(この配備が使うものと同じイメージ) |
— |
| パッケージ | winget install llama.cpp |
同じ |
| 配布物 | llama-bNNNNN-bin-ubuntu-cuda-*.tar.gz |
llama-bNNNNN-bin-win-cuda-*.zip と cudart-*.zip(CUDA ランタイムは別の配布物) |
CUDA 対応の Linux の配布物は、新しいビルド(b11065 以降)にしかありません。NVIDIA の GPU なら、コンテナがいちばん確実です。
起動コマンドの形:
llama-server -hf <repo>:<quant> --alias <モデルの id> -c <窓> -ngl 99 --jinja \ --host 0.0.0.0 --port 8080 --api-key <鍵>| 引数 | 理由 |
|---|---|
--alias |
/v1/models に出る名前になります。付けないと -hf / -m のパスがそのまま出て、起動メニューや記録に読めない名前が残ります。1 つのモデルを出すときは、要求の model が合っていなくても答えます。複数のモデルを出す router モードでは、名前が合わないと届きません |
-c |
登録するモデルの context_tokens 以上にします。目安は 8192 以上です |
--host 0.0.0.0 |
付けないと loopback にしか応答しません |
--port |
明示します。llama.cpp は既定のポートを変える予定を告知しています |
--api-key |
付けないと、LAN に認証なしで開きます |
--jinja |
既定でオンですが、古いビルドのために明示します |
- gated な Hugging Face のリポジトリには
HF_TOKEN=...(または-hft <token>)が要ります --sleep-idle-seconds <N>で、使われていないときにモデルを降ろして VRAM を返せます- 動作を確かめたファミリーは Qwen3・GPT-OSS・Gemma です。
llama-3.1は tool call が通らないので、ツールを使わない用途に限ってください
Control Plane に場所を教える
Section titled “Control Plane に場所を教える”Control Plane が起動のときに 1 回だけ読みます。変えたら Control Plane を再起動します。
| 変数 | 意味 |
|---|---|
AF_LLM_URL |
ポートまで含めた URL を、Control Plane から見た形で書きます(例: http://192.168.1.20:8080)。設定すると llm の行ができます |
AF_ENGINE_API_KEY_LLM |
任意。Authorization: Bearer として送ります。llama-server の --api-key と同じ値にします |
| 形態 | 置き場所 |
|---|---|
| compose / docker | compose ファイルの隣の .env |
| native | af start の環境、または systemd unit の Environment=(native の手順書) |
AF_LLM_URLは近道です。AF_ENGINES_JSON(AWS ならエンジンのスタックの表)にlifecycle: "external"のllm行を自分で書いても同じになります- 鍵はどちらの書き方でも
AF_ENGINE_API_KEY_LLMから読みます。AF_LLM_API_KEYという変数はありません
モデルを登録する
Section titled “モデルを登録する”別の配備のエンジンを借りている間は、llm のモデルを登録できません。 必ず次の順にします。
AF_LLM_URL(とAF_ENGINE_API_KEY_LLM)を設定して、Control Plane を再起動します。- 管理 → 「推論エンジン」で、
llmの行にモデルを登録します。id は--aliasに渡した名前にします。
ファイルを取り込む仕組みはありません。id・base_model・窓(context_tokens)を、llama-server の起動コマンドと合うように書きます。登録の画面は 推論エンジンにモデルを取り込む にあります。
借りていたエンジンから切り替えるとき
Section titled “借りていたエンジンから切り替えるとき”別のデプロイのエンジンを借りる から切り替えると、次のことが変わります。
| 借りていたとき | LAN の llama.cpp | |
|---|---|---|
| 認証 | メンバーシップごとのトークン。メンバーシップを消せば止まる | 共有の bearer 1 本。1 人だけを締め出す方法はなく、回転させると全員が締め出される |
| 止まっているとき | 冷間起動を待つ。遅いがつながる | 待たない。すぐに 503 engine_unavailable で失敗する |
チャットがすぐに失敗する
Section titled “チャットがすぐに失敗する”Control Plane は自分が持っていないエンジンを待ちません。llama-server が答えないと、要求はすぐに 503 engine_unavailable で断られます。本文には試した URL と health のパス(/health)が入ります。
- そのマシンで llama-server が動いているか
- Control Plane のマシンから、そのアドレスとポートに届くか
AF_ENGINE_API_KEY_LLMが--api-keyと同じか
パネルに出るもの・出ないもの
Section titled “パネルに出るもの・出ないもの”| 項目 | 表示 |
|---|---|
| warm | パネルを開いたときの生存確認です。/models を見ます(/health はモデルを読み込んでいなくても ok を返すため) |
| 稼働の履歴 | 出ません。外部管理の行には、履歴を取る制御ループがありません |
| 費用 | 付きません |
メンバーが自分の llama-server につなぐとき
Section titled “メンバーが自分の llama-server につなぐとき”ここまでは配備全体の設定です。これとは別に、メンバーは設定 → エージェント → llama.cpp の「自分の接続先」で、自分の llama-server に直接つなげます(lcpp を使う)。
- 設定すると、そのメンバーのセッションでは配備の
llmエンジンより優先されます - Control Plane を通らないので、テナント管理者がチャットの推論をオフにしていても止められません。メンバーが自分のネットワークのサーバーにほかのツールを向けるのを止められないのと同じで、意図した動作です
エージェント向け
この指示をエージェントに送ると、このページを読ませられます。
https://agent-fleet.org/docs/ja/operate/engines/llama-cpp/index.md を読んで