被LangChain4j坑惨了!

最近在深度体验和使用 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、多模态、向量数据库、嵌入模型等内容。

相关推荐
GuWenyue4 小时前
写Agent还要重复封装工具?一套MCP多服务方案,3个能力让AI自动查地图、读写文件、操控浏览器
人工智能·机器学习·开源
GuWenyue4 小时前
90%AI新手不会调参!LangChain双模型流水线实战,一套代码兼顾严谨+创意
人工智能
咩咩啃树皮6 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
光锥智能6 小时前
WAIC亮点|兼具泛化能力与作业效率的极智嘉机器人天团
人工智能·机器人
阳光是sunny6 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
甲维斯6 小时前
Kimi K3 重构10000行单文件屎山代码!
人工智能
灯澜忆梦6 小时前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny6 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
鱟鲥鳚6 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
新知图书6 小时前
11.3 详细实现与核心配置(作业批改智能体开发)
人工智能·agent·ai agent·智能体·扣子