最近在深度体验和使用 Spring AI 和 LangChain4j,从开始的满怀期待五五开,但最后极具痛苦的使用 LangChain4j,让我真正体验到了正规军和草台班子的区别。

Spring AI VS LangChain4j

  • Spring AI:使用简单、写法优雅、但功能提供的较少、成熟度稍高;
  • LangChain4j:作为移植大模型著名框架 LangChain 功能稍多、灵活度高、使用复杂、满是 BUG。还有根本找不到关键内容的官方文档,该有的重要内容是一点都不介绍啊,使用和学习成本很高。

1.SDK 问题折腾到半夜

举个例子,我昨天下午到晚上 11 点半都在研究 LangChain4j 将连续对话保存到 MySQL,首先官方并没有提供文档和代码示例,其次网上的资源很少,我按照经验和摸索终于写了一版实现,但从晚上 8 点调试到 11 点半,各种查文档、看源码都没有完全调好,第二次对话时总是莫名其妙报错,且数据库存储的数据量远超于实际执行次数。

然后就是各种尝试、各种折腾,把流式输出换成全量输出;保存数据之前先删除再添加等等。

最终您猜怎么着?原来这个问题竟然和模型 SDK 有关,我把模型从阿里百炼换成 OpenAI 之后,全部问题竟然解决了,害得我折腾到半夜,竟然是源码 BUG。

而且就这还有 BUG,在后期连续对话时,按照 SDK 会把之前聊天的角色从 AI 改完 User,虽然不影响执行结果,但本质上还是有 BUG,这肯定也是源码问题,不纠结了,反正最新的版本也是 beta 版,就先这样吧。

2.错误的官方文档

还有在对接阿里百炼平台时,官方给到文档是这么写的:

其实官方文档中间是少一个“chat-model”,你如果按照他的配置方法,根本没办法完成大模型的自动注入,网上资料千篇一律全是手动创建,但显然不够优雅,无维护性可言。

最后看了源码才发现,如果想自动装配,需要配置一个“chat-model”,源码如下:

官方文档也是无敌了。

3.蹩脚的用法

LangChain4j 的使用也是比较麻烦,在 Spring AI 中使用 ChatModel 就可以操作大模型了,但 LangChain4j 要写成 ChatLanguageModel。

这多不算啥,关于流式输出更有意思,Spring AI 中调用 call 方法是全量输出,调用 stream 就是流式输出,实现相当优雅和简单。

但你猜 LangChain4j 要怎么用,首先要在配置文件中添加 streaming-chat-model 并且配置 api-key 和 model-name 等信息,并且不能使用 ChatLanguageModel 来进行流式输出,还要添加 langchain4j-reactor 依赖,并且使用新对象 StreamingChatLanguageModel 才能操作,真是麻了。

小结

世界是一个巨大的草台班子,所有的优秀背后都是居大的付出和努力。AI 相关技术才刚刚起步,还有很大的发展空间,我们需要宽容一些、给他一点时间。把一切交给时间,只管默默努力和时间一起增值就好。

本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、大模型应用开发各种技术、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型等内容。

被LangChain4j坑惨了!的更多相关文章

  1. 实现数组类(C++ 拷贝构造函数、拷贝函数)要判断赋值左右对象不相等,坑惨了

    #include <iostream> using namespace std; class ArrayIndexOutOfBoundsException{ // 异常类 public: ...

  2. 把我坑惨的一个MySQL双引号!

    来源:For DBA www.fordba.com/mysql-double-quotation-marks-accident.html 一.前言 最近经常碰到开发误删除误更新数据,这不,他们又给我找 ...

  3. 一个MySQL双引号把我坑惨了!

    一.前言 最近经常碰到开发误删除误更新数据,这不,他们又给我找了个麻烦,我们来看下整个过程,把我坑得够惨. 二.过程 由于开发需要在生产环节中修复数据,需要执行120条SQL语句,需要将数据进行更新, ...

  4. hdu 1203(01背包)被初始化坑惨了

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  5. 我这三年被kafka坑惨了

    前言 我的上家公司是做餐饮系统的,每天中午和晚上用餐高峰期,系统的并发量不容小觑.为了保险起见,公司规定各部门都要在吃饭的时间轮流值班,防止出现线上问题时能够及时处理. 我当时在后厨显示系统团队,该系 ...

  6. 被Unity5坑惨了

    各种不明所以的crash,导致crash率从0.5%瞬间暴涨到10%. Unity5还是非常不稳定,慎入慎入...

  7. 把我坑惨的一个update语句

    最近好几次有开发同学在问我,比如下图: 问题归纳起来就是:在MySQL里面update一条记录,语法都正确的,但记录并没有被更新... 刚遇到这个问题的时候,我拿到这条语句直接在测试库里面执行了一把, ...

  8. C语言指针的那些坑

    那些年把我们坑惨的指针 一.引言 当我们使用c语言的时候,不可避免的就得用到指针,然后对于刚刚接触C语言的猿兄们,可能会有点不适应,特别是刚刚从python等离硬件很远的语言转过来的. 下面我为大家总 ...

  9. mybatis关于Criteria的一点小坑。。。

    目录 在用Criteria时,相关代码如下: final RolePermissionExample example = new RolePermissionExample(); example.cr ...

  10. 听说,99% 的 Go 程序员都被 defer 坑过

    原文链接: 听说,99% 的 Go 程序员都被 defer 坑过 先声明:我被坑过. 之前写 Go 专栏时,写过一篇文章:Go 专栏|错误处理:defer,panic 和 recover.有小伙伴留言 ...

随机推荐

  1. TensorFlow2入门与实践--CNN

    卷积神经网络CNN CNN原理 关于CNN的原理本文使用代码的方式来直观理解卷积中各个操作过程. 卷积 卷积层是CNN的核心组件,通过可学习的卷积核在输入特征图上进行滑动窗口操作.每个位置上,卷积核与 ...

  2. 第10章 LINQ to XML

    第10章 LINQ to XML 10.1 架构概述--DOM 和 LINQ to XML 的 DOM XML 文档可以用一棵对象树完整的表示,这称为"文档对象模型(document obj ...

  3. [python]png转webp的命令行工具

    前言 网页上使用webp格式的图片更加省网络流量和存储空间,但本地图片一般是png格式的,所以考虑用python的pillow库将png格式的图片转换为webp格式. 需求: 可以在系统任意地方调用. ...

  4. 玩转云端|天翼云边缘安全加速平台AccessOne实用窍门之让办公访问安全、高效又稳定

    本文分享自天翼云开发者社区<玩转云端|天翼云边缘安全加速平台AccessOne实用窍门之让办公访问安全.高效又稳定>,作者:天翼云社区官方账号 随着社会信息化程度不断提高,远程办公已经成为 ...

  5. 天翼云存储资源盘活系统HBlock,全面释放企业数据价值

    9月6日,天翼云与科技媒体InfoQ联合举办的以"存储难题新解法,揭秘极/致易用的HBlock"为主题的线上技术分享会圆满落幕.天翼云国际业务事业部研发专家武志民与存储产品线总监魏 ...

  6. 《Vue2 框架第二课:组件结构与模板语法详解》

    写在开头:Vue.js 是一个流行的前端框架,广泛应用于构建用户界面和单页应用(SPA).然而,需要注意的是,Vue2 已经于 2023 年底 正式停止维护.这意味着官方团队将不再为 Vue2 提供功 ...

  7. 几乎全平台的C语言JSON解析工具cJSON[转载]

    最近在做一个外设管理平台,用PYTHON写了一个连接管理,兼容串口和套接字的连接,然后抽象为设备统一管理.使用套接字时JSON是一种很好的数据封装类型,假设我需要远程操控一个设备,发送一个JSON的数 ...

  8. 职场软素质&算法工程师的硬素质--卓越的职场人需要的42种能力

    经过自己在实际的工作中摸爬滚打,个人觉得一些方面的能力是非常重要的,可以让自己在职场中快速的脱颖而出,因此,从硬实力,软实力两个方面进行总结如下: 软实力: (1)解决问题的能力 (2)预估风险的能力 ...

  9. hbase - [04] java访问hbase

    需要导入jar包 $HBASE_HOME/lib下的所有jar包 $HADOOP_HOME/share/hadoop/common的所有jar包 package com.harley.hbase.te ...

  10. 【渗透测试】Vulnhub Corrosion 1

    渗透环境 攻击机:   IP: 192.168.226.129(Kali) 靶机:     IP:192.168.226.128 靶机下载地址:https://www.vulnhub.com/entr ...