A Node.js wrapper for the BitNet C++ implementation.
We are considering adding a command to help build and convert the model as well as to compile the C++ code, similar to the official BitNet repository.
This project is inspired by and builds upon the work of the Microsoft BitNet team.
npm install node-bitnet-cpp
To build the project from source, follow these steps:
-
Clone the repository:
git clone https://github.com/SouthBridgeAI/node-bitnet-cpp.git cd node-bitnet-cpp
-
Install dependencies:
bun install
-
Build the project:
bun run build
First, ensure you have the BitNet C++ executable and model file available.
import BitNet from 'node-bitnet-cpp';
const bitnet = new BitNet('/path/to/bitnet/executable', '/path/to/model.gguf');
// 1. Awaitable Promise
async function runInference() {
try {
const result = await bitnet.runInference("What is the capital of France?", {
nPredict: 128,
threads: 2,
ctxSize: 2048,
temperature: 0.8
});
console.log(result);
} catch (error) {
console.error('Error:', error);
}
}
// 2. Async Generator
async function streamInference() {
try {
for await (const chunk of bitnet.streamInference("Tell me a story about a robot.")) {
console.log(chunk);
}
} catch (error) {
console.error('Error:', error);
}
}
// 3. Node Stream
function useStream() {
const stream = bitnet.createStream("Explain quantum computing.");
stream.pipe(process.stdout);
}
runInference();
streamInference();
useStream();
Creates a new BitNet instance.
-
execPath
: Path to the BitNet C++ executable -
modelPath
: Path to the BitNet model file
Runs inference and returns the result as a promise.
Runs inference and yields results as they become available.
Creates a readable stream of the inference results.
-
nPredict
: Number of tokens to predict (default: 128) -
threads
: Number of threads to use (default: 2) -
ctxSize
: Context size (default: 2048) -
temperature
: Temperature for sampling (default: 0.8)
Contributions, issues, and feature requests are welcome! Feel free to check issues page if you want to contribute.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.