Skip to content
LangChain4j 文档版本 1.22.0 源快照 f90edf0e 更新于 2026-10-14

Jlama

Jlama 项目

项目搭建

要将 langchain4j 安装到你的项目,添加以下依赖:

Maven 项目的 pom.xml

xml

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>1.22.0</version>
</dependency>

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-jlama</artifactId>
    <version>1.22.0-beta32</version>
</dependency>

<dependency>
    <groupId>com.github.tjake</groupId>
    <artifactId>jlama-native</artifactId>
    <!-- for faster inference. supports linux-x86_64, macos-x86_64/aarch_64, windows-x86_64 
       Use https://github.com/trustin/os-maven-plugin to detect os and arch -->
    <classifier>${os.detected.name}-${os.detected.arch}</classifier>
    <version>${jlama.version}</version> <!-- Version from langchain4j-jlama pom -->
</dependency>

Gradle 项目的 build.gradle

groovy
implementation 'dev.langchain4j:langchain4j:1.22.0'
implementation 'dev.langchain4j:langchain4j-jlama:1.22.0-beta32'

Jlama 使用 Java 21 的预览特性。你可以用以下方式全局启用这些特性:

export JDK_JAVA_OPTIONS="--add-modules jdk.incubator.vector --enable-preview"

或者通过配置 maven compiler 与 failsafe 插件来启用预览特性。

模型选择

你可以使用 HuggingFace 上的大多数 safetensor 模型,并以 owner/model-name 格式指定它们。 Jlama 在 http://huggingface.co/tjake 下维护了一份预量化的流行模型列表。

支持使用以下架构的模型:

  • Gemma 模型
  • Llama 模型
  • Mistral 模型
  • Mixtral 模型
  • GPT-2 模型
  • BERT 模型

聊天补全

聊天模型让你能用一个在对话数据上微调过的模型生成类人的响应。

同步

创建一个类并添加以下代码。

java
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.jlama.JlamaChatModel;

public class HelloWorld {
    public static void main(String[] args) {
        ChatModel model = JlamaChatModel.builder()
                .modelName("tjake/TinyLlama-1.1B-Chat-v1.0-Jlama-Q4")
                .build();

        String response = model.chat("Say 'Hello World'");
        System.out.println(response);
    }
}

运行该程序会生成如下所示输出的一个变体

plaintext
Hello World! How can I assist you today?

流式

创建一个类并添加以下代码。

java
import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;
import dev.langchain4j.model.jlama.JlamaStreamingChatModel;
import dev.langchain4j.model.output.Response;

import java.util.concurrent.CompletableFuture;

public class HelloWorld {
    public static void main(String[] args) {
        StreamingChatModel model = JlamaStreamingChatModel.builder()
                .modelName("tjake/TinyLlama-1.1B-Chat-v1.0-Jlama-Q4")
                .build();

        CompletableFuture<ChatResponse> futureResponse = new CompletableFuture<>();         
        model.chat("Tell me a joke about Java", new StreamingChatResponseHandler() {

            @Override
            public void onPartialResponse(String partialResponse) {
                System.out.print(partialResponse);
            }

            @Override
            public void onCompleteResponse(ChatResponse completeResponse) {
                futureResponse.complete(completeResponse);
            }

            @Override
            public void onError(Throwable error) {
                futureResponse.completeExceptionally(error);
            }    
        });

        futureResponse.join();
    }
}

你会在 onPartialResponse 方法上,随着 LLM 生成逐块(词元)收到文本。

如下所示,输出是实时流式返回的。

plaintext
"Why do Java developers wear glasses? Because they can't C#"

当然,你可以将 Jlama 聊天补全与设置模型参数、聊天记忆等其他特性结合,以获得更准确的响应。

在聊天记忆中,你将学习如何传递你的聊天历史,让 LLM 知道之前说过什么。如果你不传递聊天历史(像这个简单示例那样),LLM 就不会知道之前说过什么,也就无法正确回答第二个问题("我刚才问了什么?")。

许多参数是在幕后设置的,例如超时、模型类型与模型参数。 在设置模型参数中,你将学习如何显式地设置这些参数。

Jlama 有一些你可以设置的特殊模型参数

  • modelCachePath 参数,允许你指定一个目录路径,模型下载后会被缓存在那里。默认为 ~/.jlama。
  • workingDirectory 参数,允许你在磁盘上为某个给定模型实例保持持久的 ChatMemory。这比使用 Chat Memory 更快。
  • quantizeModelAtRuntime 参数,会在运行时对模型量化。当前的量化始终为 Q4。你也可以用 jlama 项目的工具预先量化模型(更多信息参见 Jlama 项目)。

函数调用

Jlama 为支持函数调用的模型(Mistral、Llama-3.1 等)提供函数调用支持。 参见 Jlama 示例

JSON 模式

Jlama 尚不支持 JSON 模式。但你总可以礼貌地要求模型返回 JSON。

示例

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。