当前位置: 首页 > news >正文

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 编码的文件字符串

相关文章:

  • xHCI 上 USB 读写分析
  • Vue3 + TypeScript 的 Hooks 实用示例
  • SpringCloud Alibaba 之分布式全局事务 Seata 原理分析
  • GSO-YOLO:基于全局稳定性优化的建筑工地目标检测算法解析
  • 闭包的理解
  • 算法刷题记录——LeetCode篇(1.9) [第81~90题](持续更新)
  • JavaScript防抖与节流
  • Cloudflare教程:免费优化CDN加速配置,提升网站访问速度 | 域名访问缓存压缩视频图片媒体文件优化配置
  • Payoneer(P卡)会关联吗?如何有效防止P卡关联?
  • 第十四天 - Docker容器管理 - docker-py模块实践 - 练习:容器生命周期管理工具
  • Python中的字典
  • ZYNQ笔记(三):GPIO 中断
  • 3DMAX笔记-UV知识点和烘焙步骤
  • Kotlin 学习-集合
  • Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)
  • 【C++基础-关键字】:extern
  • 深入理解Java Optional:告别NullPointerException的优雅方式
  • PMP 考试以及学习资料
  • 艾尔登法环地图不能使用鼠标移动或点击传送点原因和设置方法
  • 计算机视觉与深度学习 | 视觉里程计(Visual Odometry, VO)学习思路总结