0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qwen3-VL-8B を LM Studio + OpenAI互換の API で使う(Node.js で実装): M4 MacBook Air でローカルLLM

Last updated at Posted at 2025-10-22

はじめに

直近で「Instruct、Thinking」のモデルがリリースされた、Qwen3-VLシリーズの「Qwen3-VL-8B」を使った、ローカルLLM のお試しに関する記事です。今回、LM Studio でサーバーをたてて、そのサーバーとのやりとりを OpenAI互換の API を使って行います(※ Node.js による実装)。

●QwenLM/Qwen3-VL: Qwen3-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.
 https://github.com/QwenLM/Qwen3-VL

2025-10-22_19-51-39.jpg

ちなみに、直近で Qwen3-VL-8B以外には、Qwen3-VL-2B・Qwen3-VL-4B・Qwen3-VL-32B もリリースされているようです。

なお、今回のローカルLLM を試す環境は、過去に使ってきた 3つ(M4 Mac mini、M4 MacBook Air、EVO-X2)の中の「M4 の MacBook Air」です。

●「ローカルLLM user:youtoy」の検索結果 - Qiita
 https://qiita.com/search?q=%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%ABLLM%20user%3Ayoutoy&sort=created

さっそく試す

さっそく試していきます。

LM Studio関連の準備

今回使う Qwen3-VL-8B を LM Studio でダウンロードします。

LM Studio上で検索をして、以下のように MLX版のモデルを見つけることができました。このモデルのサイズは 5.78 GB になるようです。

qwen3-vl-8b__2025-10-22_10-06-51のコピー.jpg

以下は、モデルのダウンロードが完了した後の状態です。

2025-10-22_10-27-08.jpg

VRAM

自分の M4 の MacBook Air は、デフォルト設定の状態で VRAM を「11.84 GB」使えるので、先ほどの 6 GB弱のサイズのモデルは利用可能です。

2025-10-22_20-01-46.jpg

サーバーの機能を有効化する

モデルがダウンロードできたら、LM Studio のサーバーの機能を有効化します。以前書いた記事で、その手順を示しているので、よろしければご参照ください。

その手順を進めた後は、以下のように http://127.0.0.1:1234 でサーバーが立ち上がった状態になりました。

2025-10-22_10-23-56のコピー.jpg

また、Qwen3-VL-8B のモデルをロードした状態だと、画面上にモデルを呼び出す時の名称を確認できます。具体的には、「qwen/qwen3-vl-8b」というモデル名になるようです。

サーバーの機能の動作確認

ここで、LM Studio のサーバーの動作確認を行います。GETメソッドで確認ができる(ブラウザからアクセスして確認できる)「 http://localhost:1234/v1/models 」という URL へのアクセスで確認をします。

その URL にアクセスして、ブラウザ上で JSON の情報が出てきていたら、動作確認は完了です。

curl で簡単な動作確認

まずは curl での動作確認を行ってみます。その際、以下の OpenAI互換の API のエンドポイントの「Responses」を使ってみます。

●Responses | LM Studio Docs
 https://lmstudio.ai/docs/developer/openai-compat/responses

2025-10-22_20-11-27.jpg

実行するコマンドは、以下の通りです。

curl http://localhost:1234/v1/responses \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen/qwen3-vl-8b",
    "input": "あなたは誰?",
    "reasoning": { "effort": "low" }
  }'

上記のコマンドを実行した結果、以下のようにレスポンスを得られました。

2025-10-22_20-14-59.jpg

2025-10-22_20-15-13.jpg

OpenAI互換の API を使ったやりとり

最後に OpenAI互換の API を使ったやりとりを試します。

パッケージのインストール

Node.js を使うのですが、その際に以下の OpenAI公式のパッケージを用います。

●openai - npm
 https://www.npmjs.com/package/openai

パッケージを、以下のコマンドでインストールします。

npm i openai

コードと実行結果

あとはコードを書いて、処理を実行してみます。

今回のお試し用のコードは、以下のとおりです。

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "lm-studio",
  baseURL: "http://localhost:1234/v1",
});

const MODEL = "qwen/qwen3-vl-8b";

const res = await client.responses.create({
  model: MODEL,
  instructions: "日本語で簡潔に答えてください",
  input: "あなたは誰?",
});

console.log(res.output_text);

上記を実行した結果、以下のレスポンスを得られました。

2025-10-22_20-28-51.jpg

とりあえず、Node.js で API を使ったやりとりを行えました。

その他: モデル一覧の取得

今回、OpenAI互換の API でモデルの一覧の取得も試したので、コードを紹介してみます。

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "lm-studio",
  baseURL: "http://localhost:1234/v1",
});

const list = await client.models.list();
for (const m of list.data) console.log(m.id);
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?