はじめに
過去にローカルLLM を試していた際には、MLX LM、MLX-VLM ばかり使っていましたが、最近、以下の記事に書いた Ollama + Mac mini の組み合わせを試しました。
●M4 の Mac mini で ローカルLLM: Ollama で Gemma 3 を軽く試す(テキスト入力、画像も入力するマルチモーダル) - Qiita
https://qiita.com/youtoy/items/d921bfa19794e328c7e1
今回の内容はその続きで、「REST API」と「ollama-js」を試した話です。
REST API
https://github.com/ollama/ollama?tab=readme-ov-file#rest-api
ollama-js
https://github.com/ollama/ollama?tab=readme-ov-file#libraries
●ollama/ollama-js: Ollama JavaScript library
https://github.com/ollama/ollama-js
お試し1: REST API を使う
まずは REST API を使った話です。
試したコマンドと実行結果
Ollama が起動している状態だと、HTTPリクエストでレスポンスを得られる状態に既になっているようです。
以下に、公式の情報を参考にして試したコマンドと、その実行結果を掲載します(※ 2通り試しています)。
curl http://localhost:11434/api/generate -d '{
"model": "gemma3:12b-it-q8_0",
"prompt":"なぜ空は青い?"
}'
curl http://localhost:11434/api/chat -d '{
"model": "gemma3:12b-it-q8_0",
"messages": [
{ "role": "user", "content": "なぜ空は青い?" }
]
}'
どちらもストリーミングで結果を得ることができました(付加情報ごと出てきているので、かなり見づらいですが...)。
お試し2: ollama-js を使う
次に ollama-js を使った話です。
●ollama/ollama-js: Ollama JavaScript library
https://github.com/ollama/ollama-js
試した手順などと実行結果
以下、試した手順などと実行結果です。
まずはライブラリのインストールです。
npm i ollama
そして、以下の内容を実装して、nodeコマンドで実行しました。
import ollama from "ollama";
const message = { role: "user", content: "なぜ空は青い?" };
const response = await ollama.chat({
model: "gemma3:12b-it-q8_0",
messages: [message],
stream: true,
});
for await (const part of response) {
process.stdout.write(part.message.content);
}
以下が実行結果です(※ 途中を省略してます)。
前回の記事と同様に、ストリーミングの応答を得ることができました。
おわりに
引き続き Ollama を使ったローカルLLM のお試しをやっていこうと思います。