跳到主要内容

开始

Node.js运行的大语言模型LLaMA。

这个项目处于早期阶段,nodejs的API可能会在未来发生变化,请谨慎使用。


前置要求

  • Node.js 16 或更高

  • (可选) Typescript:当你需要静态类型的时候

  • (可选) Python 3:当你需要把pth模型转换到ggml格式的时候

  • (可选) Rust/C++ 编译工具链:当你需要自行构建二进制的时候

    • Rust 构建Rust到Nodejs API

    • CMake 构建llama.cpp依赖项目

    • Clang/GNU/MSVC C++ 编译器用于编译二进制绑定,你可以根据系统选择以下工具:


跨平台

当前支持平台:

  • darwin-x64
  • darwin-arm64
  • linux-x64-gnu (glibc >= 2.31)
  • linux-x64-musl
  • win32-x64-msvc

安装

  • 安装 llama-node npm 包
npm install llama-node
  • 安装任意一个推理后端 (至少一个)

    • llama.cpp
    npm install @llama-node/llama-cpp
    • 或者 llm-rs
    npm install @llama-node/core

获取模型

llama-node底层调用llm-rs或llama.cpp,它使用的模型格式源自llama.cpp。由于meta发布模型仅用于研究机构测试,本项目不提供模型下载。如果你获取到了 .pth 原始模型,请阅读 该文档 并使用llama.cpp提供的convert工具进行转化。


第一个例子

以下是使用llama.cpp作为推理后端的第一个例子, 请确认你已经安装了 @llama-node/llama-cpp NPM依赖.

// index.mjs
import { LLama } from "llama-node";
import { LLamaCpp } from "llama-node/dist/llm/llama-cpp.js";
import path from "path";

const model = path.resolve(process.cwd(), "../ggml-vic7b-q5_1.bin");
const llama = new LLama(LLamaCpp);
const config = {
modelPath: model,
enableLogging: true,
nCtx: 1024,
seed: 0,
f16Kv: false,
logitsAll: false,
vocabOnly: false,
useMlock: false,
embedding: false,
useMmap: true,
};
llama.load(config);

const template = `How are you?`;
const prompt = `### Human:
${template}
### Assistant:`;

llama.createCompletion({
nThreads: 4,
nTokPredict: 2048,
topK: 40,
topP: 0.1,
temp: 0.2,
repeatPenalty: 1,
stopSequence: "### Human",
prompt,
}, (response) => {
process.stdout.write(response.token);
});

运行该例子,请在bash输入

node index.mjs

更多例子

请访问我们的Github仓库目录,在这里