御覧いただきありがとうございます。
ガジェットスキーです。
2023年11月に一条工務店で家を建てました。
妻、子供2人、義両親の6人で暮らしています。
家での生活を便利にするために奮闘中です。
もしよろしければご覧ください
前回の続きです。
ローカルAI開発環境構築記① | PCなしじゃ生きられない人のブログ
ローカルAI開発環境構築記② | PCなしじゃ生きられない人のブログ
自宅でローカルでAI環境を作りたくなってきたので作った時の内容をまとめています。
【Hermes Agent × LiteLLM × Lemonade】環境構築編③
1. はじめに
前回はLemonadeの環境構築について紹介しました。
今回はLiteLLMの環境構築について解説します。
2. 構成のおさらい
前回のおさらいですが、今回構築する環境は次のようになります。
Hermes Agent 【Docker】
│
▼
LiteLLM 【Docker】
│
▼
Lemonade 【Windows】
│
▼
llama.cpp (Vulkan)【Windows】
│
▼
Qwen3-Coder-30B-A3B【Windows】
まとめると以下になります。
| 項目 | 動作先 |
|---|---|
| Hermes Agent | Docker |
| LiteLLM | Docker |
| Lemonade llama.cpp (Vulkan) Qwen3-Coder-30B-A3B |
Windows |
というように少し変則的です。
前回お話ししたようにLemonadeはDocker DesktopだとAMD系のGPUを認識しないため、Windows環境です。
ではLiteLLMの環境構築の内容に入っていきます。
3. LiteLLM環境構築
3.1 LiteLLMの機能のおさらい
LiteLLMはLLMを共通のAPIで扱うためのツールです。
似たようなものにOpenrouterがありますが、Openrouterはクラウド上のアプリであるのに対し、LiteLLMはローカルでそれを行います。
今回の構成においては
- ローカルLLMの切り替えを可能にする
- ローカルLLMが動かないときのフォールバック(代替モデル)を設定する
という目的で配置しています。
3.2 Docker環境のフォルダ構成
というわけで今回のLiteLLMの構成です。
今回LiteLLMはDockerで起動するため、Docker composeファイルを作成します。
まずフォルダ構成です。今後の説明は以下の構成を前提としてお話します。
{任意のフォルダ}
└─ Infrastructure
└─ Docker
├─ docker-compose.yml
├─ .env ←APIキー配置用
└─ litellm ←Dockerで永続させるボリューム
└─ config.yam ←Dockerで永続させる設定
3.2 LiteLLMのDockerファイル設定
まずDockerファイルです。
各設定についてはコメントで記載しています。
-------------------------------------------------------------
services:
litellm:
#今回使用するLiteLLMにdockerイメージです。stable版を使います。
image: ghcr.io/berriai/litellm:v1.74.3-stable
#コンテナ名です。ぶっちゃけ分ければなんでもよいです。
container_name: litellm
#終了ステータスに関わらず、このコンテナが終了した場合は再起動するようにします
restart: unless-stopped
#dockerのLiteLLMは4000ポートでアクセスできます
#それをWindows上からアクセスできるように設定します
ports:
- "4000:4000"
#Windows上の./litellm/config.yamlをDocker上の/app/config.yamlにマウントします
volumes:
- ./litellm/config.yaml:/app/config.yaml:ro
#Dockerで実行時のコマンドパラメータです。configファイルとポートを指定します。
command:
- "--config"
- "/app/config.yaml"
- "--port"
- "4000"
#Linux環境などでコンテナ内からホスト側のサービスにアクセスするための設定です
extra_hosts:
- "host.docker.internal:host-gateway"
-------------------------------------------------------------
3.2 LiteLLMのconfig設定
次にconfig.yamlの設定です。
同じく各設定についてはコメントで記載しています。
-------------------------------------------------------------
model_list:
#モデル名です。今後のHermes Agentの設定時に使用します
- model_name: lemonade-coder
litellm_params:
#使用するモデルです。今後のHermes Agentの設定時に使用します
model: openai/Qwen3-Coder-30B-A3B-Instruct-GGUF
#モデルのAPIです。今回はLemonadeになるためそのアクセス先を記述します。
api_base: http://host.docker.internal:13305/v1
#モデルのAPIキーです。今回はLemonadeでローカルになるので適当でよいです。
api_key: local
model_info:
#許容するトークンサイズの設定です。今回はまだ適当です。
max_input_tokens: 131072
max_output_tokens: 131072
litellm_settings:
#接続先のLLMが対応していないAPIパラメータをLiteLLM側で削除する設定です。
#エラーになるのを防ぐために入れます
drop_params: true
#reasoning(思考・推論関連の情報)をLiteLLMが削除するかどうかの設定です。
#今回はモデルの過程も把握するため残すように設定します。
drop_reasoning: false
#ログ表示設定です。
#動作確認が終わればfalseにすればよいです。
set_verbose: true
-------------------------------------------------------------
ここまで設定したらdocker-composeファイルがあるパスで、
docker-compose up -d
を実行します。
Dockerコンテナが正しく起動してれば、
curl.exe http://localhost:4000/v1/models
を実行すると
{"data":[{"id":"lemonade-coder","object":"model","created":1677610602,"owned_by":"openai"}],"object":"list"}
のように先ほど作成したモデル名が返ってくれば成功です。
これでLiteLLMからLemonade上のとして使えるようになりました。

