目次

1.はじめに
 環境情報
2.セットアップについて
3.OpenAI 互換APIサーバーの実行
 OpenAI 互換APIエンドポイントの動作確認
 OpenAI SDKからGemma 4へ接続してみる
4.おわりに

1.はじめに

LiteRT-LM とは Google が公開しているエッジデバイス(スマートフォン、PC、IoT機器など)向けの LLM 実行環境です。

バージョン0.13が公開され、特記事項は以下の4点です。(LiteRT-LM の README から抜粋)

これらの中から本記事では OpenAI API Compatible server の部分に焦点を当て、Lite-RT LM CLI を利用するためのセットアップから OpenAI 互換 API サーバーの実行、活用例について紹介します。

※ Gemma 4 12B について、こちらは2026年6月3日に公開された Gemma 4 の新サイズモデルです。
こちらについては本記事では触れませんので、興味のある方は Google for Developers の Bringing Gemma 4 12B to your Laptop: Unlocking Local, Agentic Workflows with Google AI Edge を参照ください。

環境情報

  • macOS:Tahoe 26.5
  • チップ:Apple M4
  • メモリ:16GB
  • uv:0.11.19

2.セットアップについて

LiteRT-LM CLI 公式ドキュメントをベースに進めていきます。

Lite-RT LM CLI の利用にあたりバイナリをインストールします。

$ uv tool install litert-lm
Resolved 31 packages in 9ms
Installed 31 packages in 16ms
 + absl-py==2.4.0
 + annotated-doc==0.0.4
 + anyio==4.13.0
 + certifi==2026.5.20
 + click==8.4.1
 + filelock==3.29.1
 + flatbuffers==25.12.19
 + fsspec==2026.4.0
 + h11==0.16.0
 + hf-xet==1.5.0
 + httpcore==1.0.9
 + httpx==0.28.1
 + huggingface-hub==1.18.0
 + idna==3.18
 + litert-lm==0.13.1
 + litert-lm-api==0.13.1
 + litert-lm-builder==0.13.0
 + markdown-it-py==4.2.0
 + mdurl==0.1.2
 + packaging==26.2
 + prompt-toolkit==3.0.52
 + protobuf==7.35.0
 + pygments==2.20.0
 + pyyaml==6.0.3
 + rich==15.0.0
 + shellingham==1.5.4
 + tomli==2.4.1
 + tqdm==4.68.1
 + typer==0.25.1
 + typing-extensions==4.15.0
 + wcwidth==0.8.0
Installed 1 executable: litert-lm

続いてモデルをインポートします。(Gemma4 E4B(gemma-4-E4B-it-litert-lm)を使用しています)

litert-lm import \
    --from-huggingface-repo litert-community/gemma-4-E4B-it-litert-lm \
    gemma-4-E4B-it.litertlm \
    gemma4-e4b

上記コマンドの実行が完了したら、list コマンドでモデルがインポートできていることを確認しておきます。

$ litert-lm list
Listing models in: /Users/xxx/.litert-lm/models
ID                          SIZE            MODIFIED
gemma4-e4b                  3.4 GB          2026-06-07 10:58:26

3.OpenAI 互換APIサーバーの実行

OpenAI 互換APIエンドポイントの動作確認

LiteRT-LM CLI をローカル HTTP サーバーとして起動します。
以下のコマンドを実行します。

litert-lm serve

実行すると OpenAI 互換の API サーバーがポート9379で立ち上がります。

$ litert-lm serve
Starting OpenAI-compatible API server on 0.0.0.0:9379...

サーバーを立ち上げたのでアクセスしてみます。

アクセス先(エンドポイント)ですが、2つ実行してみます。
サポートされているエンドポイントについて、公式ドキュメント(Supported Endpoints)より以下の2つが明記されています。

利用可能なモデル一覧を取得するエンドポイントとチャット形式でモデルに問い合わせができるエンドポイントとなります。

では、モデル一覧の取得から実行してみます。

litert-lm serve を実行したのとは別のターミナルを立ち上げ、そこで下記コマンドを実行します。

curl http://localhost:9379/v1/models

実行結果は以下で、利用可能なモデル ID として gemma4-e4b と gemma4-e4b,gpu が出力されました。

$ curl http://localhost:9379/v1/models
{"object": "list", "data": [{"id": "gemma4-e4b", "object": "model", "created": 1780797506, "owned_by": "litert-lm"}, {"id": "gemma4-e4b,gpu", "object": "model", "created": 1780797506, "owned_by": "litert-lm"}]}

続いてもう一方のエンドポイントにアクセスしてみます。
Hello と入力し、あいさつが返ってくるかを見てみます。

curl http://localhost:9379/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma4-e4b",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

実行結果は以下の通り、”Hello! How can I help you today?”との応答が確認できました。

$ curl http://localhost:9379/v1/chat/completions \
>   -H "Content-Type: application/json" \
>   -d '{
>     "model": "gemma4-e4b",
>     "messages": [
>       {"role": "user", "content": "Hello!"}
>     ]
>   }'
{"id": "chatcmpl_20260607023442369624", "object": "chat.completion", "created": 1780799682, "model": "gemma4-e4b", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Hello! How can I help you today?"}, "finish_reason": "stop"}]}

OpenAI SDKからGemma 4へ接続してみる

公式ドキュメント(OpenAI-Compatible Server)に以下の記載があります。

内容としては、既存アプリやワークフローで OpenAI のエンドポイントを接続先として利用している場合、それを LiteRT-LM に差し替えて利用できるとのことです。

これについて、実際に接続先を差し替えても同じ挙動となるか、簡単な検証となりますが試してみたので紹介します。

内容としては OpenAI Python SDK(利用モデルは OpenAI API の gpt-4.1-mini ) を利用したチャットスクリプトをまずは実行します。
実行結果の確認後、接続先を LiteRT-LM CLI の OpenAI 互換 API のエンドポイント(http://localhost:9379/v1)に変更しても引き続き利用できるかを見てみます。

スクリプトの変更点ですが、base_url、api_key、model の部分を編集し、これで正常に応答が取得できるかを見ます。
正常に応答が取得できれば、LiteRT-LM が OpenAI の Chat Completions と互換性があることを確認できた形となります。

では、進めていきます。

まず事前準備として OpenAI Python SDK をインストールします。

$ pip install openai

続いてスクリプト(test_openai.py)をローカルに用意します。
内容は「HTTPSの標準ポートは?」を AI に質問するものです。(API キーの設定に関しては事前に export OPENAI_API_KEY コマンドを実行しています)

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"]
)

response = client.chat.completions.create(
    model="gpt-4.1-mini",
    messages=[
        {
            "role": "user",
            "content": "HTTPSの標準ポートは?"
        }
    ]
)

print(response.choices[0].message.content)

このスクリプトの実行結果ですが以下の応答が確認できました。

$ python3 test_openai.py
HTTPSの標準ポートは **443番ポート** です。

続いてスクリプトを LiteRT-LM CLI バージョンに編集します。
base_url を明記する形とし litert-lm serve 実行時の OpenAI 互換の API サーバー の URL を設定します。
LiteRT-LM CLI は API キー 不要なので、ここでは dummy の仮値を入れておきます。
model は gpt-4.1-mini から gemma4-e4b とします。 
念の為 unset OPENAI_API_KEY コマンドを実行し、設定していた API キー情報を削除、Open AI のモデルにアクセスできない状態にしておきます。

これでスクリプトを再度実行し、先ほどの実行結果と同様もしくは類似の内容の応答が確認できるかを見てみます。

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:9379/v1",
    api_key="dummy"
)

response = client.chat.completions.create(
    model="gemma4-e4b",
    messages=[
        {
            "role": "user",
            "content": "HTTPSの標準ポートは?"
        }
    ]
)

print(response.choices[0].message.content)

実行結果は以下です。
期待通り標準ポートは443との同じ内容の応答が確認できました。

$ python3 test_openai.py
HTTPSの標準ポートは **443** です。

ちなみに OpenAI 互換 API サーバー側のログでも200が返っており、正常にリクエストが処理されています。

$ litert-lm serve
Starting OpenAI-compatible API server on 0.0.0.0:9379...
〜〜省略〜〜
127.0.0.1 - - [07/Jun/2026 12:52:44] "POST /v1/chat/completions HTTP/1.1" 200 -

4.おわりに

LiteRT-LM CLI の OpenAI 互換 API サーバー機能を使い、ローカル環境でのエンドポイントの動作確認から OpenAI Python SDK での接続まで試してみました。

litert-lm serve コマンドを実行すれば OpenAI 互換 API のローカルエンドポイントが立ち上がり、コード側で接続先を変えればローカル LLM に切り替えられます。

今回の検証では触れていませんが、Bringing Gemma 4 12B to your Laptop: Unlocking Local, Agentic Workflows with Google AI Edge の記事にも OpenAI 互換 API に関係する記載があります。

今回の検証では触れていない部分を取り上げると、OpenAI 互換 API により OpenClaw や Hermes、OpenCode といった AI 系のツールにおいても Lite-RT LM CLI が利用できるようになったとのことです。

利用イメージとしては、例えばこれらのツールにて利用 LLM をローカル LLM とする際、LiteRT-LM CLI の OpenAI 互換 API エンドポイントを指定すれば、そこを経由し LiteRT-LM にてインポートしたモデルをローカル LLM として利用できる形となります。