LangChain4j实战之一:准备工作

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):github.com/zq2599/blog...

关于LangChain4j实战系列

  • 《LangChain4j实战系列》是欣宸在AI应用领域的原创,作为一名传统Java后端程序员,在AI时代也应该果断的拥抱新技术,LangChain4j实战系列将带你用 100%可运行的代码走完"入门 → 进阶 → 产线"三级跳,让 AI 真正跑在你的微服务里

关于LangChain4j

  • 官方定位:LangChain 的 Java 实现。

  • 大白话:把"提示模板 → 模型调用 → 结果解析 → 工具链 → 记忆存储"封装成Java接口,让你像写MyBatis Mapper一样实现AI能力。

  • 核心模块说明:

模块 说明 类比
langchain4j-core 统一 API:模型、消息、提示、输出解析器 规范,类似JDBC
langchain4j-openai / langchain4j-zhipu 各家模型"方言"实现 类似mysql的mysql-driver
langchain4j-spring-boot-starter 自动配置 + 配置属性 和spring-boot的各类starter一样的starter
langchain4j-easy-rag 少量代码搞定私域文档索引 类似spring-data-jpa
langchain4j-tools 让模型直接调用你的 @Service 方法 类似FeignClient
langchain4j-memory 对话记忆、窗口缓存、长期存储 类似Spring-Session

为什么需要LangChain4j?

  • 如果您之前使用过OpenAI的SDK,应该会疑惑:官方有SDK呀,我要调用OpenAI服务那就使用官方SDK呗,为啥还要使用LangChain4j呢?
  • 其实,官方 SDK 只解决"调模型",LangChain4j 解决"搭系统",首先就是多模型切换,接入和调试多个模型的SDK费时费力,但是对LangChain4j来说却只是配置的区别,其他差异都被屏蔽了
  • 另外,LangChain4j内置ChatMemory,解决了多轮对话记忆问题,无需自己写代码维护
  • 在私域知识问答方面,LangChain4j也提供了API支持,避免自己实现这个过程:embedding → 存向量库 → 查 TopK → 拼 prompt
  • 在模型调用外部API、生产可观测(用量、延迟、异常等)这些方面,LangChain4j也有现成方案,无需自己动手实现

本篇概览

  • 作为《LangChain4j实战系列》的开篇,咋们先不急着写代码,而是做好准备工作,把后面实战所需的东西都提前备好,主要有这些
  1. 版本,开发设计的各类软件和库的版本对齐,确保您的开发也能顺利运行
  2. 大模型相关信息,选好大模型
  3. 创建工程,整个系列的代码放在一个maven工程中,采用父子结构,本篇把父工程准备好
  • 接下来开始正式的准备工作吧,先从版本开始

准备工作一:版本对齐

  • 实战设计的软件和库,具体版本情况如下:
  1. 电脑系统:macOS Tahoe26.2
  2. JDK:21
  3. springboot:3.3.5
  4. LangChain4j:1.8.0

准备工作二:大模型相关信息(API Key、模型名、调用地址)

  • 实战LangChain4j的过程中,需要有稳定可靠的大模型服务被调用,这里选择了通义千问3-max,主要是申请和使用都方便,您可以按自己需要来选择
  • 打开阿里云百炼主页,在模型广场选择模型
  • 选好模型后,就要去准备代码中用到的三样东西:API Key、模型名、调用地址
  1. API Key在下图红色箭头位置
  1. 模型名在打开模型详情页后可以看到
  1. 模型地址在下图红色箭头位置,点击查看API示例
  1. 在新的页面就会展示调用地址,如下图红色箭头所示(注意选择第一个SDK调用配置的 base_url)

准备工作三:创建maven工程

  • 创建名为langchain4j-totorials的maven工程,pom.xml内容如下
xml 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.bolingcavalry</groupId>
  <artifactId>langchain4j-totorials</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  <dependencyManagement>
    <dependencies>
      <!-- Spring Boot BOM -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>3.3.5</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      
      <!-- LangChain4j BOM (Bill of Materials) -->
      <!-- BOM只负责版本管理,不会实际引入依赖 -->
      <!-- 子模块需要显式声明所需的依赖,但可以省略版本号 -->
      <dependency>
        <groupId>dev.langchain4j</groupId>
        <artifactId>langchain4j-bom</artifactId>
        <version>1.8.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- 日志依赖由Spring Boot BOM自动管理,无需在此指定版本 -->
    </dependencies>
  </dependencyManagement>

  <!-- 子模块列表,后面的实战过程中会逐渐添加 -->
  <modules>
  </modules>
</project>
  • 至此,LangChain4j实战系列的准备工作已经完成,接下来会用丰富的编码实战与大家一同学习和掌握LangChain4j,首先会从一次精简的helloworld开始

源码下载(觉得作者啰嗦的,直接在这里下载)

名称 链接 备注
项目主页 github.com/zq2599/blog... 该项目在GitHub上的主页
git仓库地址(https) github.com/zq2599/blog... 该项目源码的仓库地址,https协议
git仓库地址(ssh) git@github.com:zq2599/blog_demos.git 该项目源码的仓库地址,ssh协议
  • 这个git项目中有多个文件夹,本篇的源码在langchain4j-tutorials文件夹下,如下图红色箭头所示:

欢迎关注掘金:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

相关推荐
jtymyxmz39 分钟前
《JavaEE企业级应用开发教程(Spring+Spring MVC+Mybatis)》3.2 动态代理
java·开发语言
w***48821 小时前
Spring安装和使用(Eclipse环境)
java·spring·eclipse
向葭奔赴♡1 小时前
Android SharedPreferences实战指南
android·java·开发语言
SimonKing1 小时前
学不动了,学不动,根本学不动!SpringBoot4.x又来了!
java·后端·程序员
华仔啊1 小时前
SpringBoot + MQTT 如何实现取货就走的智能售货柜系统
java·后端
Tony__Ferguson1 小时前
在线oj项目测试报告——系统模块测试
java·spring·模块测试
SamDeepThinking1 小时前
基于CompletableFuture的主子任务并行处理架构实战:多渠道账单并发导入性能提升5倍的技术方案
java·后端·excel
期待のcode1 小时前
Springboot整合springmvc的自动装配
java·spring boot·后端
j***51891 小时前
Spring总结(上)
java·spring·rpc