[OSS紹介#41] node-llama-cpp:AIモデルをローカルで手軽に実行する新しい選択肢

この記事について

この記事では、注目のオープンソースソフトウェア「node-llama-cpp」を紹介します。本記事は、前回取り上げた「llama.cpp」についての続編として位置付けられています。前回の内容を踏まえ、今回は特にこのツールが持つ特徴と、その利便性に焦点を当てていきます。

「node-llama-cpp」は、AIモデルをローカルマシンで実行することを可能にするツールであり、開発者の皆さんにとって非常に注目すべき選択肢です。簡単に導入できることに加え、MetalやCUDA、Vulkanに対応しているため、さまざまなハードウェア環境で利用することができます。また、特別な設定を行うことなく、自動的にハードウェアに最適化される点も魅力です。

さらに、CLIを用いることでコーディングなしでモデルと対話できる機能を備えており、開発者が短期間で効果的にAIモデルを活用できる環境を提供します。このような特性から、「node-llama-cpp」は開発者の生産性向上を大いに助ける可能性を秘めています。この記事では、それらの特徴を詳しく探求し、このツールの導入による利点を考えていきます。

リンク:https://github.com/withcatai/node-llama-cpp


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. node-llama-cppでできること

node-llama-cppは、AIモデルをローカルで実行するためのツールです。主な特徴は以下の通りです。

1.1 LLMの実行

このツールを利用することで、ローカル環境で大規模言語モデル(LLM)を実行できます。

1.2 GPUサポート

Metal、CUDA、Vulkanに対応しており、ハードウェアに応じて自動的に最適な設定を行います。特別な設定を行う必要はありません。

1.3 簡単なセットアップ

あらかじめビルドされたバイナリが提供されており、必要に応じてソースからのビルドも可能です。node-gypやPythonは不要です。

1.4 CLIの利用

コードを書くことなく、CLIを通じてモデルと対話できます。これにより、開発者は手軽にAIの機能を試すことができます。

1.5 データ形式の制御

モデルの出力をJSON形式で生成させたり、特定のJSONスキーマに従わせることができます。

1.6 関数呼び出し機能

モデルに対して必要に応じて呼び出すことができる関数を提供できます。これにより、情報の取得やアクションの実行が可能になります。

1.7 セキュリティ対策

特殊なトークンの注入攻撃に対して安全性を確保しています。

2. セットアップ手順

node-llama-cppのインストールは非常に簡単です。以下の手順に従ってください。

2.1 ライセンスと動作環境

このツールはMITライセンスで提供されており、macOS、Linux、Windowsの各プラットフォームで動作します。ビルドされたバイナリが提供されていますが、プラットフォームにバイナリが存在しない場合は、ソースからのビルドが行われます。

2.2 npmでインストール

次のコマンドを実行して、node-llama-cppをインストールします。

npm install node-llama-cpp

このパッケージは、macOS、Linux、Windows 向けに事前ビルドされたバイナリが含まれています。

もしプラットフォームに適したバイナリがない場合、`llama.cpp`のリリースをダウンロードし、ソースから`cmake`を使用してビルドします。

この動作を無効にするには、環境変数`NODE_LLAMA_CPP_SKIP_DOWNLOAD`を`true`に設定してください。

3. 簡単な使い方

node-llama-cppを使用するための基本的なコードは以下の通りです。

3.1 モデルのロード

まず、ライブラリをインポートし、モデルをロードします。

import {fileURLToPath} from "url";
import path from "path";
import {getLlama, LlamaChatSession} from "node-llama-cpp";

const __dirname = path.dirname(fileURLToPath(import.meta.url));

const llama = await getLlama();
const model = await llama.loadModel({
    modelPath: path.join(__dirname, "models", "Meta-Llama-3.1-8B-Instruct.Q4_K_M.gguf")
});

const context = await model.createContext();
const session = new LlamaChatSession({
    contextSequence: context.getSequence()
});

3.2 モデルとの対話

ユーザーからの質問をモデルに入力し、応答を取得します。

const q1 = "Hi there, how are you?";
console.log("User: " + q1);

const a1 = await session.prompt(q1);
console.log("AI: " + a1);

このようにして、簡単にAIモデルとの対話が可能です。

結論

node-llama-cppは、ローカルでAIモデルを実行するための強力なツールです。使いやすさと柔軟性を兼ね備えており、開発者にとって非常に便利なライブラリです。簡単なセットアップで始められ、強力な機能を利用することで、さまざまなプロジェクトに応用できます。興味がある方は、ぜひ試してみてください。