随着大语言模型(LLM)的蓬勃发展,Java 开发者一直在寻找合适的工具来将 LLM 能力集成到自己的应用中。今天为大家介绍一个重量级开源项目 - Jlama,这是一个专为 Java 设计的现代化 LLM 推理引擎。

Jlama 是什么?

Jlama 是一个开源的大型语言模型推理引擎,专门为 Java 生态系统打造。它允许开发者直接在 Java 应用中运行 LLM 推理,无需依赖外部服务(比如 ollama 、vllm 等)。

核心特点:

  • 支持多种主流模型:Gemma、Llama、Mistral、Mixtral、Qwen2 等
  • 基于 Java 20+ 构建,利用 Vector API 实现高性能推理

快速上手

1. 命令行使用

# 安装 jbang
curl -Ls https://sh.jbang.dev | bash -s - app setup

# 安装 Jlama CLI
jbang app install --force jlama@tjake

# 运行模型(支持 Web UI)
jlama restapi tjake/Llama-3.2-1B-Instruct-JQ4 --auto-download

2. Java 项目集成

pom.xml 中添加依赖

<dependency>
  <groupId>com.github.tjake</groupId>
  <artifactId>jlama-core</artifactId>
  <version>${jlama.version}</version>
</dependency>

<dependency>
  <groupId>com.github.tjake</groupId>
  <artifactId>jlama-native</artifactId>
  <!-- 这里不需要改,自动获取OS 架构 -->
  <classifier>${os.detected.name}-${os.detected.arch}</classifier>
  <version>${jlama.version}</version>
</dependency>

<!-- 本文使用 langchain4j 作为调用框架,所以需要添加以下依赖 -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>1.0.0-beta1</version>
</dependency>

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-jlama</artifactId>
    <version>1.0.0-beta1</version>
</dependency>

代码示例

ChatLanguageModel model = JlamaChatModel.builder()
        .modelName("tjake/Llama-3.2-1B-Instruct-JQ4")
        .temperature(0.7f)
        .build();

ChatResponse response = model.chat(
        UserMessage.from("Help me write a java version of the palindromic algorithm")
);

System.out.println("\n" + response.aiMessage().text());

运行日志分享

INFO  c.g.tjake.jlama.util.HttpSupport - Downloaded file: /Users/lengleng/.jlama/models/tjake_Llama-3.2-1B-Instruct-JQ4/config.json
INFO  c.g.tjake.jlama.util.HttpSupport - Downloading file: /Users/lengleng/.jlama/models/tjake_Llama-3.2-1B-Instruct-JQ4/model.safetensors

WARNING: Using incubator modules: jdk.incubator.vector
INFO  c.g.t.j.t.o.TensorOperationsProvider - Using Native SIMD Operations (OffHeap)
INFO  c.g.tjake.jlama.model.AbstractModel - Model type = Q4, Working memory type = F32, Quantized memory type = I8

Here's a Java implementation of the Palindromic Algorithm:
...

执行过程流程图

特别说明

这里会实时去 huggingface 的下载模型文件,如果下载失败,可以手动下载,然后放到 ~/.jlama/models 目录下。

因为需要 jdk.incubator.vector 模块,所以需要使用 JDK20 及以上版本,并显示启用 jdk.incubator.vector 模块。

--add-modules=jdk.incubator.vector
--enable-native-access=ALL-UNNAMED
--enable-preview

总结

目前 Jlama 虽然提供的都是些小模型,适用于边缘设备应用场景 ,但Jlama 的出现为 Java 开发者提供了一个强大的工具,让在 Java 生态中使用 LLM 变得更加简单和高效。无论是构建企业级应用还是开发创新项目,Jlama 都是一个值得关注的选择。