御覧いただきありがとうございます。

ガジェットスキーです。

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上のとして使えるようになりました。

 


4. 次回予告

次はHermes agentの環境構築について解説していきます。