LangChain4j(2):Chat、流式与文生图模型功能

本文将探讨 LangChain4j 的聊天对话、流式对话以及文生图这三种常见且实用的功能,以及实际代码示例

一、聊天对话(ChatLanguageModel)

在 LangChain4j 中,使用ChatLanguageModel进行基本的聊天对话简单直观。以下是一段示例代码:

ChatLanguageModel model = OpenAiChatModel.builder()
               .apiKey("demo")
               .build();
String result = model.generate("你是谁");
System.out.println(result);

在上述代码中,我们首先通过OpenAiChatModel.builder()构建一个OpenAiChatModel实例,并设置其apiKey。这里的apiKey用于身份验证,以确保我们能够合法地调用 OpenAI 的模型服务。随后,通过调用model.generate("你是谁")方法,向模型发送询问 “你是谁” 的请求,模型会返回相应的回答,并将其赋值给result变量,最后打印输出结果。

二、流式对话(StreamingChatLanguageModel)

为了实现像打字机一样逐个字符输出的效果,以提供更加自然的交互体验,LangChain4j 提供了StreamingChatLanguageModel模型。以下是使用该模型的示例代码:

StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()
               .baseUrl(OPEN_AI_BASE_URL)
               .apiKey(OPEN_AI_API_KEY)
               .build();
model.generate("你好 我是小橘", new StreamingResponseHandler<AiMessage>() {
    @Override
    public void onNext(String token) {
        System.out.println(token);
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void onError(Throwable throwable) {
    }
});

在这段代码中,我们通过OpenAiStreamingChatModel.builder()构建了一个支持流式输出的OpenAiStreamingChatModel实例,并设置了baseUrlapiKeybaseUrl指定了 OpenAI 服务的基础地址,apiKey用于身份验证。接着调用

model.generate("你好 我是小橘", new StreamingResponseHandler<AiMessage>() {... })发送对话请求。

其中,StreamingResponseHandler是一个回调接口,onNext(String token)方法会在模型生成每个新的输出 “片段”(token)时被调用。在这里,我们将每个token打印出来

三、文生图(ImageModel)

LangChain4j 还赋予了我们通过大模型根据文本信息生成对应图片的能力,这一功能由ImageModel实现。以下是具体的示例代码:

ImageModel imageModel = OpenAiImageModel.builder()
               .baseUrl(OPEN_AI_BASE_URL)
               .apiKey(OPEN_AI_API_KEY)
               .build();
Response<Image> response = imageModel.generate("小猫");
System.out.println(response.content().url());

首先通过OpenAiImageModel.builder()构建OpenAiImageModel实例,并设置baseUrlapiKey。然后调用imageModel.generate("小猫")方法,向模型发送生成 “小猫” 图片的请求,模型返回一个Response<Image>对象。通过response.content().url()可以获取生成图片的 URL 地址,并将其打印输出。此外,该响应除了提供图片 URL 外,还提供了 Base64 编码的文件字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值