LangChain4j炸裂!Java开发者打造AI应用从未如此简单

news/2024/9/19 13:32:59/文章来源:https://www.cnblogs.com/JavaEdge/p/18420406

LangChain4j 的目标是简化将大语言模型(LLM)集成到 Java 应用程序中的过程。

1 实现方式

1.1 标准化 API

LLM 提供商(如 OpenAI 或 Google Vertex AI)和向量嵌入存储(如 Pinecone 或 Milvus)使用专有 API。LangChain4j 提供了标准化 API,避免了每次都需要学习和实现特定 API 的麻烦。要试验不同的 LLM 或嵌入存储,可以轻松切换而无需重写代码。LangChain4j 目前支持 15+ 个主流 LLM 提供商和 15+ 个嵌入存储。

1.2 综合工具箱

过去的一年里,社区开发了许多由 LLM 驱动的应用程序,识别了常见的抽象、模式和技术。LangChain4j 已将这些精炼成一个现成的包。我们的工具箱涵盖从低级的提示词模板、聊天记忆模块管理、输出解析到高级模式如 AI 服务和 RAG 的工具。对于每个抽象层次,我们提供了一个接口,并基于常见技术提供了多个现成的实现。不论您是在构建聊天机器人,还是在开发一个从数据导入到检索的完整 RAG 管道,LangChain4j 提供了广泛的选择。

1.3 大量示例

这些 示例 展示了如何开始创建各种由 LLM 驱动的应用程序,提供了灵感并让您能够快速开始构建。

LangChain4j 于 2023 年初在 ChatGPT 热潮中开始开发。但发现Java 领域缺乏与 Python 和 JavaScript 类似的 LLM 库和框架,便决定解决这一问题!虽然名字包含“LangChain”,但该项目融合了 LangChain、Haystack、LlamaIndex 及更广泛社区的理念,并加入自己的创新。

我们积极关注社区的最新进展,致力于快速整合新技术和集成,确保您始终保持最新状态。该库仍在积极开发中,虽然某些功能尚在开发,但核心功能已经就绪,您可以立即开始构建基于 LLM 的应用程序!

为便于集成,LangChain4j 还包括与 Quarkus 和 Spring Boot 集成。

2 LangChain4j 的功能

  • 与 15+ 个 LLM 提供商 的集成

  • 与 15+ 个向量嵌入存储 的集成

  • 与 10+ 个嵌入模型 的集成

  • 与 4 个云端和本地图像生成模型 的集成

  • 与 2 个评分(重新排序)模型 的集成

  • 与 OpenAI 的一个审核模型的集成

  • 支持文本和图像输入(多模态)

  • AI 服务(高级 LLM API)

  • 提示词模板

  • 持久化和内存中的 聊天记忆模块 算法实现:消息窗口和 token 窗口

  • LLM 响应流式传输

  • 常见 Java 数据类型和自定义 POJO 的输出解析器

  • 工具(功能调用)

  • 动态工具(执行动态生成的 LLM 代码)

  • RAG(检索增强生成):

    • 数据导入:
      • 从多个来源(文件系统、URL、GitHub、Azure Blob Storage、Amazon S3 等)导入各种类型的文档(TXT、PDF、DOC、PPT、XLS 等)
      • 使用多种分割算法将文档切分成更小的片段
      • 对文档和片段进行后处理
      • 使用嵌入模型对片段进行嵌入
      • 将嵌入存储在向量嵌入存储中
    • 检索(简单和高级):
      • 查询转换(扩展、压缩)
      • 查询路由
      • 从向量存储和/或任何自定义来源进行检索
      • 重新排序
      • 倒数排名融合
      • RAG 流程中每个步骤的自定义
  • 文本分类

  • Token 切分和 Token 计数估算工具

3 两个抽象层次

LangChain4j 在两个抽象层次上运行:

  • 低级。这层,您拥有最大自由,可以访问所有底层组件,如 ChatLanguageModelUserMessageAiMessageEmbeddingStoreEmbedding 等。这些是 LLM 应用程序的“原语”。您可以完全控制如何组合它们,但您需要编写更多的代码。
  • 高级。这层,您通过高级 API(如 AiServices)与 LLM 进行交互,这些 API 屏蔽了所有复杂性和样板代码。您仍然可以灵活地调整和微调行为,但这是以声明的方式完成的。

img

4 LangChain4j 库结构

LangChain4j 具有模块化设计,包括:

  • langchain4j-core 模块,定义了核心抽象(如 ChatLanguageModelEmbeddingStore)及其 API。
  • langchain4j 模块,包含了诸如 ChatMemoryOutputParser 等有用工具,以及如 AiServices 这样的高级功能。
  • 各种 langchain4j-{integration} 模块,每个模块提供与各种 LLM 提供商和嵌入存储的集成。您可以单独使用 langchain4j-{integration} 模块。对于额外的功能,只需导入主 langchain4j 依赖项。

5 LangChain4j 代码库

  • 主代码库
  • Quarkus 扩展
  • Spring Boot 集成
  • 示例
  • 社区资源
  • 内嵌嵌入

6 使用案例

我为什么需要这些功能?一些使用场景:

想要实现一个具有自定义行为并能访问您数据的 AI 聊天机器人:

  • 客户支持聊天机器人可以:
    • 礼貌地回答客户问题
    • 接收/修改/取消订单
  • 教育助手可以:
    • 教授各种学科
    • 解释不清楚的部分
    • 评估用户的理解/知识

希望处理大量非结构化数据(文件、网页等),并从中提取结构化信息。如:

  • 从客户评论和支持聊天记录中提取见解
  • 从竞争对手的网站中提取有趣的信息
  • 从求职者的简历中提取见解

希望生成信息,如:

  • 针对每位客户定制的电子邮件
  • 为您的应用程序/网站生成内容:
    • 博客文章
    • 故事

希望转换信息,如:

  • 摘要
  • 校对和重写
  • 翻译

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建设
  • 交易平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
  • LLM Agent应用开发
  • 区块链应用开发
  • 大数据开发挖掘经验
  • 推荐系统项目

目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

  • 编程严选网

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799835.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这些Salesforce开发领域的术语,你知道多少?(业内术语之系列五)

Salesforce开发人员一直都是生态系统内的主力军,其工作内容也比较广泛,职责范围从基于代码的任务到需要一定商业敏锐度的工作。 毋庸置疑,在Salesforce Developer领域存在着大量行业术语,并且使用范围广,使用频率高,一起来先睹为快吧! Developer领域的术语 SFDX 全称:S…

Camstar建模数据太多,打开很慢,默认只查前200行

此处举例:Product产品建模。(其他:思路一致) Oracle 版本:where ROWNUM<200 SQLServer 版本:select top 200😘宝子:除非不再醒来,除非太阳不再升起,不然都请你好好生活,挣扎着前进,开心的笑。(●◡●)

升讯威在线客服系统如何高性能同时支持 MySQL 和 SQL Server

详细介绍升讯威在线客服系统是如何高性能同时支持 MySQL 和 SQL Server 的,经过实践验证,可在低配服务器上无压力支持超 2000 人同时在线。升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放、开源、共享。努力打造 .net 社区的一款优秀…

易优eyoucms网站留言验证码怎么调用

前台留言模型的图形验证码标签调用 比如需要在留言表单里加入图形验证码,复制下方黄色代码在留言标签中 {eyou:guestbookform}{eyou:guestbookform type=default}<form method="POST" enctype="multipart/form-data" action="{$field.action}&quo…

易优eyoucms网站留言增加验证码功能

<!-- 验证码开始 -->{eyou:notempty name=$field.IsVertify}<div><input type="text" name="vertify" autocomplete="off" placeholder="图片验证码"/><img {$field.VertifyData} title="看不清?点击更换验…

易优eyoucms网站系统报错:unserialize(): Error at offset 0 of 1571 bytes

遇到“unserialize(): Error at offset 0 of 1571 bytes”这类错误,通常是因为缓存文件损坏或格式不正确。针对EyouCMS 1.5.1版本,可以采取以下步骤来解决这个问题: 解决方案一:清除缓存文件通过FTP访问服务器:使用FTP客户端(如FileZilla、WinSCP等)连接到服务器。 导航…

易优eyoucms网站表单留言增加验证码怎么做

前台留言模型的图形验证码标签调用 比如需要在留言表单里加入图形验证码,复制下方黄色代码在留言标签中 {eyou:guestbookform}{eyou:guestbookform type=default}<form method="POST" enctype="multipart/form-data" action="{$field.action}&quo…

洛谷 P5569 石子合并——题解

洛谷P5569题解传送锚点摸鱼环节 [SDOI2008] 石子合并 题目描述 在一个操场上摆放着一排 \(N\) 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的 \(2\) 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个算法,计算出将 \(N\) 堆石子合并成…

VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 ESXi 8.0U3 集成驱动版,在个人电脑上运行企业级工作负载 请访问原文链接:…

【日记】书荒了(337 字)

正文几乎玩了一周之后上班的第一天。确实有些惫懒。基本都在解决一些之前代班同事留下来的遗留工作。整理了一下,发现工作清单上好多任务都没什么意义。今天打印准考证,发现考试地点在市里…… 本来还想着,考完去找灵玩儿,这下不行了。而且一天考两科。这我是真没想到。所以…

“DLL load failed: 找不到指定的模块。”的一种解法

问题来源: 本身在Al studio的环境训练是没问题的,由于某些问题在平台不好弄,于是copy了项目,anconda建立了paddle-gpu的虚拟环境也搭建了,但是在跑项目的时候出现了如下错误:网上了查看了许多方法,参考着试了不少 测试方法一:缺少的dll文件补上了,失败告终 测试方法二…

py3.7+win10的cv2.xfeatures2d_SIFT.create()函数不存在问题

python3.7 环境window10 64位 cv2包问题。问题 做图片处理用opencv-python做模板匹配的时候会用个sift模型,就会用到cv2.xfeatures2d_SIFT.create()这个函数,在我正要用它增加自己知识,巴拉巴啦....的时候,咦?!这是个什么鬼哦,没有这个函数呢。 百度发现需要什么卸载原版…