Spring Boot 集成 LangChain4j 示例

文章目录

    • 概述
    • 一、DeepSeek API Key 获取
    • 二、Spring Boot 集成 LangChain4j 示例
    • 三、拓展建议

概述

LangChain4j 是 LangChain 在 Java 生态下的实现,它是一个开源库,帮助你更方便地在 Spring Boot 应用中集成大语言模型(如 OpenAI 的 GPT-4)来构建智能应用,比如智能问答、聊天机器人、RAG(检索增强生成)系统、Agent、多轮对话等。

一、DeepSeek API Key 获取

注册并登录 DeepSeek 官网: https://api-docs.deepseek.com/zh-cn/

  • API Key
  • Base URLhttps://api.deepseek.com/v1

二、Spring Boot 集成 LangChain4j 示例

1、引入依赖
pom.xml 中添加 langchain4jopenai4j 依赖:

<dependencies><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId><version>0.29.0</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>0.29.0</version></dependency>
</dependencies>

2、配置文件 application.yml

langchain4j:openai:api-key: sk-58344173c5984cf787996d13160e38ec  # 写自己的model-name: deepseek-chat      # 使用的模型名称base-url: https://api.deepseek.com/v1  # DeepSeek API 的 endpoint

3、配置类 LangChain4jConfig.java

@Configuration
public class LangChain4jConfig {@Value("${langchain4j.openai.api-key}")private String apiKey;@Value("${langchain4j.openai.model-name}")private String modelName;@Value("${langchain4j.openai.base-url}")private String baseUrl;@Beanpublic OpenAiChatModel deepSeekModel() {return OpenAiChatModel.builder().apiKey(apiKey).modelName(modelName).baseUrl(baseUrl).build();}
}

⚠️ 注意:虽然这里用的是 OpenAiChatModel,但 DeepSeek 支持 OpenAI 协议,可以无缝替换。


4、控制器 DeepSeekChatController.java

@RestController
@RequestMapping("/api/deepseek")
public class DeepSeekChatController {private final OpenAiChatModel model;@Autowired  // 明确标注依赖注入public DeepSeekChatController(OpenAiChatModel model) {this.model = model;}@GetMappingpublic String chat(@RequestParam(value = "message", defaultValue = "你好") String message) {// 底层就是依赖okHttpClient进行网络请求return model.generate(message);}
}

测试结果:
游览器:
在这里插入图片描述

postman:
在这里插入图片描述

三、拓展建议

  • 将模型调用封装成通用服务,支持多模型切换
  • 加入缓存、上下文对话支持
  • 与 Embedding 向量库联动,实现“知识增强问答(RAG)”
  • 构建对话历史上下文链

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85523.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据差异的iOS性能调试:设备日志导出和iOS文件管理

在复杂iOS项目中&#xff0c;尤其是集成多个第三方服务、使用混合数据源&#xff08;本地远程缓存&#xff09;的系统里&#xff0c;“数据不一致”类问题极具迷惑性。一方面&#xff0c;数据看似可用&#xff0c;逻辑层也没有明显错误&#xff1b;另一方面&#xff0c;用户层面…

二进制与生活:从数字世界到人生哲理

二进制与生活&#xff1a;从数字世界到人生哲理 最近重温《少年谢尔顿》&#xff0c;被剧中谢尔顿与二进制对话的场景深深打动。这让我思考&#xff1a;二进制这个看似冰冷的数字系统&#xff0c;其实与我们的生活有着千丝万缕的联系。今天&#xff0c;让我们一起走进二进制的世…

基于SMB协议的内网存活主机探测技术研究

一、 技术背景 SMB(Server Message Block)协议是Windows环境中广泛使用的网络文件共享协议&#xff0c;默认开放于445端口。由于其在Windows系统中的核心地位&#xff0c;SMB协议常被用作内网探测的重要切入点。本文系统介绍多种基于SMB的存活主机探测技术&#xff0c;帮助安全…

IDEA21中文乱码解决办法

我改了很多&#xff0c;可能也改了一些没用的 1.在VM options中添加-Dstdout.encodingUTF-8 -Dstderr.encodingUTF-8 2.IDEA 控制台输出设置为 UTF-8 打开 IDEA → File → Settings&#xff08;或 CtrlAltS&#xff09; 搜索 "Encoding" 设置 Project Encoding 和…

时序数据库概念及IoTDB特性详解

一、数据库管理系统概述 数据&#xff0c;如同空气般普遍存在于我们的数字生活中&#xff0c;每一次点击手机都可能产生并记录数据。这些数据被存储在数据库中&#xff0c;而数据库实质上是“数据的集合”。数据库管理系统&#xff08;DBMS&#xff09;则负责这些“数据容器”…

leetcode:263. 丑数(python3解法,数学相关算法题)

难度&#xff1a;简单 丑数 就是只包含质因数 2、3 和 5 的 正 整数。 给你一个整数 n &#xff0c;请你判断 n 是否为 丑数 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;n 6 输出&#xff1a;true 解释&am…

RK3568笔记八十五:LVGL播放AVI视频

若该文为原创文章,转载请注明原文出处。 最近有个需求,需要播放视频,但使用的框架是LVGL显示,所以了解了下LVGL怎么实现播放视频。 目前了解到的方法有两种: 一、使用ffmpeg方式,此方法适用于大部分视频 二、使用opencv方式,此方法适用于大部分视频 三、使用woshin…

stm32使用定时器PWM

1、定时器TIM PSC-Prescaler-预分频器 CNT-Counter-计数器 ARR-Auto Reload Register-自动重装寄存器 RCR-Repetition Counter Register-重复计数器 1、时钟来源:晶振提供频率,时钟树这些才提供时钟 分频系数 计数 3、实例 上面展示了假设使用外部石英晶振提供32.76…

2.3 Windows Vcpkg+MSVC编译FFmpeg 4.4.1

一、vcpkg安装ffmpeg 4.4.1 vcpkg的使用可以参考之前的文章&#xff1a;vcpkg 使用 1.1 查看vcpkg中的ffmpeg版本 查看库的版本&#xff1a;vcpkg.io 1.2 vcpkg.json文件解析 创建vcpkg.json文件&#xff1a; {"builtin-baseline": "984f9232b2fe0eb94f…

docker -v 之后docker cp报错

问题 我现在在本地已经可以正确运行这个文本纠错接口了&#xff0c;使用了-v 挂载&#xff0c;&#xff0c;当我使用docker cp时&#xff0c;报错了Error response from daemon: unlinkat /app/pycorrector/.git/objects/pack/pack-xxxxxx.pack: device or resource busy&…

10人团队SolidWorks云桌面服务器怎么连接

在当今数字化设计领域&#xff0c;SolidWorks作为主流的三维CAD软件&#xff0c;对硬件性能要求较高。 对于10人团队共享使用场景&#xff0c;云桌面服务器方案能有效解决硬件成本高、协作效率低等问题&#xff0c;这需从硬件选型、网络架构、云桌面平台部署、软件授权管理及用…

从源码角度了解Elasticsaerch(分布式协调排序、深分页问题)

引文 Elasticsearch基于Lucene所以很多系统实现都在其中,所以可以先看看Lucene的实现: https://blog.csdn.net/qq_35040959/article/details/147931034 项目组件 不像Kafka这种顶级项目核心性能组件全自己实现,ELK中有很多引用至第三方开放库; 网络模型-Netty 网络模型多重…

共读AI新圣经-深度学习读书笔记01

提示&#xff1a;本文是我参加datawhale活动的读书笔记&#xff0c;这是第一章的阅读笔记 文章目录 前言一、深度学习能做什么&#xff1f;二、教学案例总结 前言 随着大数据和算力的大幅提升&#xff0c;基于数据学习的解决方案正取代基于人工设计的解决方案 提示&#xff1a…

Android项目资源字符串内容多语言对齐工具 Python

Android项目资源字符串内容多语言对齐工具&#xff1a; #!/usr/bin/env python3import re from dataclasses import dataclass, field from typing import Optional, Dict, List from pathlib import Path import tkinter as tk from tkinter import filedialog, messageboxda…

创客匠人分享:知识变现时代的创始人 IP 打造路径

当知识付费市场规模突破千亿&#xff0c;创始人 IP 已成为知识变现的 “流量引擎”。创客匠人结合陈雷教授的实战经验&#xff0c;拆解创始人 IP 从 0 到 1 的打造路径&#xff0c;为内容创业者提供从流量引流到商业变现的全链路思路。 一、破局认知&#xff1a;IP 打造的核心…

【数据分析五:Feature Engineering】特征工程

一、特征工程定义 在数据预处理以后&#xff08;或者数据预处理过程中&#xff09;&#xff0c;如何从数据中提取有效的特征&#xff0c;使这些特征能够尽可能的表达原始数据中的信息&#xff0c;使得后续建立的数据模型能达到更好的效果&#xff0c;就是特征工程所要做的工作…

标杆确立!永洪科技位于IDC报告Data Analytics领域象限排头位!

近日&#xff0c;全球知名市场研究机构IDC发布的《数据管理分析与生成式AI发展趋势及最佳实践》报告&#xff0c;为正处于数字化转型深水区的企业描绘了清晰的技术演进蓝图。在这幅权威绘制的产业图谱中&#xff0c;“Data Analytics”&#xff08;数据分析&#xff09;作为连接…

启动tomcat控制台日志出现乱码

当我们启动tomcat控制台日志出现乱码怎么办&#xff1f; 解决方案&#xff1a; 在tomcat根目录中config文件夹下将log.properties文件中将默认控制台日志输出编码UTF修改成GBK或者GB2312都可以。 java.util.logging.ConsoleHandler.encoding UTF-8 修改为&#xff1a; j…

【橘子的AI | 每日一课】Day4!机器学习 (ML) 基础

机器学习 (ML) 基础介绍 一、机器学习的定义 从广义上来说&#xff0c;机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说&#xff0c;机器学习是一种通过利用数据&#xff0c;训练出模型&#xff0c;然后使用模型预测的…