一切福田,不離方寸,從心而覓,感無不通。

使用SpringBoot快速集成LangChain4j, 实现AI的丝滑调用

1. 简介

前几章简单测试了一下LangChain4J的特性, 本章使用SpringBoot快速集成LangChain4J, 实现丝滑调用大模型, 往期内容传送门

  1. LangChain4j 初识,想使用Java开发AI应用?
  2. LangChain4j-AIServices,原来调用AI这么简单?
  3. LangChain4j-RAG,实现简单的text-sql功能

LangChain4J官方提供了SpringBoot Starter, 本章就使用Starter进行快速集成.

2. 环境信息

使用SDK版本信息如下:

3. Maven


 

4. 配置信息

4.1 application.yml

通过在配置文件中声明模型信息 即可实现对应模型的自动注入

4.2 配置类

主要声明了

  1. 聊天记忆提供类, 关联了记忆存储对象
  2. 向量存储对象,这里使用的是pgvector
  3. 内容检索器(RAG-检索实现)

4.3 聊天记忆持久化

实现了ChatMemoryStore接口, 这里测试使用的是map存储的, 生产环境中可以持久化到数据库中

chat过程中消息会通过ChatMemory调用ChatMemoryStore对聊天内容进行持久化/获取

4.4 tools

5. 核心源码

5.1 Ai Services

@AiService 将实现AiService的自动注入

​ wiringMode = EXPLICIT: 用户自己指定相关的bean

​ 缺省:wiringMode = AUTOMATIC: 项目启动时自动在环境中找对应的对象实现注入,如果有多个(比如:chatModel),启动报错

这里举了几种典型的场景 如

  1. 普通聊天 chat()
  2. 聊天记忆&流式输出 chatWithStream()
  3. 提取指定内容并将结果结构化 extractPerson()
  4. 提示词占位替换 mockUsername()
  5. rag text-sql chatWithSql()

5.2 Controller

6. 测试

6.1 测试chat

6.2 测试tool

6.3 测试流式&聊天记忆

第一次会话:

后端日志如下

第二次会话:

6.4 测试抽取用户信息

6.5 测试mock

6.6 测试embedding

数据库中信息如下:

6.7 测试text2sql

7. 小结

本章通过使用SpringBoot实现快速集成LangChain4J, 通过简单的配置实现了AI的调用, 总体使用感受还不错, 虽然是刚发布的正式版但是整体的集成、方法调用都挺丝滑的, 到这里这关于LangChain4J的全部内容已经完结了, 后续会出个SpringAI正式版的体验对比,感兴趣的可以关注下.

8. 源码

测试过程中的代码已全部上传至github, 欢迎点赞收藏 仓库地址: https://github.com/ludangxin/langchain4j-test

PGVector


 

 from:https://www.cnblogs.com/ludangxin/p/18937440