【技术专题】LangChain4j 开发Java Agent智能体 - 整合SpringBoot4

大家好,我是锋哥。最近连载更新《LangChain4j 视频教程,开发Java Agent智能体》技术专题。

本课程主要介绍和讲解 LangChain4j 简介,阿里云百炼大模型平台接入,Ollama简介以及安装和使用,HelloWorld 实现,日志配置,集成SpringBoot,Ai Service 使用,对话与提示词工程(Prompt),结构化输出,会话记忆,工具调用(Function Calling),嵌入模型与向量数据库,RAG(检索增强生成),MCP(模型上下文协议),多模态支持。同时也配套视频教程 《2027版本 LangChain4j 视频教程,开发Java Agent智能体》

SLF4J日志配置

LangChain4j 使用SLF4J进行日志记录,允许您插入任何您喜欢的日志后端,例如LogbackLog4j

(SLF4J是一套日志规范,类似JDBC规范,具体实现又厂家或者开源组织去实现)

前面我们运行的代码,都会有警告提示,没找到SLF4J的提供者。

我们可以pom.xml加下Logback依赖:

xml 复制代码
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.5.8</version>
</dependency>

可以通过在创建模型实例时进行设置.logRequests(true)来启用对 LLM 的每个请求和响应的日志记录 :.logResponses(true)

代码实现:

arduino 复制代码
package com.java1234;
​
import dev.langchain4j.model.openai.OpenAiChatModel;
​
/**
 * Hello world!
 */
public class App {
    public static void main(String[] args) {
        // 创建模型
        OpenAiChatModel model = OpenAiChatModel.builder()
                .logRequests(true) // 打印请求日志
                .logResponses(true) // 打印响应日志
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1") // 模型地址
                .modelName("qwen3.6-plus") // 模型名称
                .apiKey(System.getenv("OPENAI_API_KEY")) // 密钥
                .build(); // 构建模型
​
        String answer = model.chat("你是谁?"); // 提问
        System.out.println(answer);
    }
}

运行输出:

整合SpringBoot4(使用百炼云平台接口)

我现在把LangChain4j整合到SpringBoot4里面去。

首先新建项目langchain4j_test,选Maven构建,jdk版本选17

继续Next下一步,选SpringBoot版本4.0.6,以及选择Spring Web依赖。

根据官方文档,pom.xml加下LangChain4j依赖:

xml 复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai-spring-boot4-starter</artifactId>
    <version>1.15.0-beta25</version>
</dependency>

application.yml里配置上模型参数,以及日志和日志级别:

yaml 复制代码
langchain4j:
  open-ai:
    chat-model:
      api-key: ${OPENAI_API_KEY}
      model-name: qwen3.6-plus
      base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
      temperature: 0.7 # 是控制大语言模型(LLM)生成文本随机性或创造性的超参数。 它的值越高,模型越随机,越创造性。 范围是0-1
      log-requests: true
      log-responses: true
​
logging:
  level:
    dev.langchain4j: debug

再新建一个MyChatController来测试下:

kotlin 复制代码
package com.java1234.controller;
​
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
​
@RestController
public class MyChatController {
​
    @Autowired
    private OpenAiChatModel chatModel;
​
    @RequestMapping("/chat")
    public String chat(String question) {
        return chatModel.chat(question);
    }
​
}

我们启动项目,浏览器输入测试:http://localhost:8080/chat?question=你是谁?

浏览器返回:

整合SpringBoot4(使用Ollama)

LangChain4j专门开发了适配Ollama的库,pom.xml里加下:

xml 复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-ollama-spring-boot4-starter</artifactId>
    <version>1.15.0-beta25</version>
</dependency>

application.yml里配置ollama模型参数:

yaml 复制代码
langchain4j:
  ollama:
    chat-model:
      model-name: qwen3:4b
      base-url: http://localhost:11434
      temperature: 0.7 # 是控制大语言模型(LLM)生成文本随机性或创造性的超参数。 它的值越高,模型越随机,越创造性。 范围是0-1
      log-requests: true
      log-responses: true
  open-ai:
    chat-model:
      api-key: ${OPENAI_API_KEY}
      model-name: qwen3.6-plus
      base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
      temperature: 0.7 # 是控制大语言模型(LLM)生成文本随机性或创造性的超参数。 它的值越高,模型越随机,越创造性。 范围是0-1
      log-requests: true
      log-responses: true
​
​
logging:
  level:
    dev.langchain4j: debug

MyChatController里注入OllamaChatModel,以及实现chat2方法

kotlin 复制代码
package com.java1234.controller;
​
import dev.langchain4j.model.ollama.OllamaChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
​
@RestController
public class MyChatController {
​
    @Autowired
    private OpenAiChatModel chatModel;
​
    @Autowired
    private OllamaChatModel ollamaChatModel;
​
    @RequestMapping("/chat")
    public String chat(String question) {
        return chatModel.chat(question);
    }
​
    @RequestMapping("/chat2")
    public String chat2(String question) {
        return ollamaChatModel.chat(question);
    }
​
}

启动项目,浏览器输入测试:http://localhost:8080/chat2?question=你是谁?

浏览器返回内容:

相关推荐
阿瑞IT1 小时前
AI Agent 从 Demo 到生产:被低估的四个工程问题
人工智能
MemOS1 小时前
产品更新 |MemOS CLI 上线:让能跑命令行的 Agent 更轻量接入长期记忆
人工智能
独秀不如众秀1 小时前
AI Coding 的最大问题不是写错代码,而是反复犯同一个错
人工智能
CV实验室1 小时前
Remote Sensing 29个SITS基准数据集综述:多模态遥感分类的新起点
人工智能·深度学习·计算机视觉·音视频
m0_466525291 小时前
锚定场景深耕数据 东软探索城市全域数字化新路径
大数据·人工智能
Data-Miner1 小时前
智慧城市数据中台建设方案深度解析PPT解读
人工智能·智慧城市
喵了几个咪1 小时前
AI重构软件开发范式:框架与脚手架为何仍是生产级开发的刚需?
vue.js·人工智能·react.js·重构·golang·ai编程
星辰AI1 小时前
告别翻译腔:用 AI Agent 自动化构建开源项目的多语言技术文档
人工智能·ai·语言模型
KJ_BioMed1 小时前
突破“不可成药”靶点:科晶生物AI互作蛋白与纳米抗体设计技术解析
人工智能·抗体药物·多肽药物·多肽设计·抗体设计