当前位置: 首页 > news >正文

使用Langchain4J整合springboot+流式数据响应示例

一、POM依赖

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.3.8</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>ai.langchain</groupId>
	<artifactId>langcain-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>langcain-demo</name>
	<description>Demo project for Spring Boot</description>
	<url/>
	<licenses>
		<license/>
	</licenses>
	<developers>
		<developer/>
	</developers>
	<scm>
		<connection/>
		<developerConnection/>
		<tag/>
		<url/>
	</scm>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
			<version>1.0.0-beta2</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

二、application.properties

spring.application.name=langcain-demo
server.port=8081
OPENAI_API_KEY=you-api-key
langchain4j.open-ai.streaming-chat-model.api-key=${OPENAI_API_KEY}
# 这里是使用阿里云的qwq-32b模型
langchain4j.open-ai.streaming-chat-model.base-url=https://dashscope.aliyuncs.com/compatible-mode/v1
langchain4j.open-ai.streaming-chat-model.model-name=qwq-32b
langchain4j.open-ai.streaming-chat-model.log-requests=true
langchain4j.open-ai.streaming-chat-model.log-responses=true

三、Controller

@RestController
public class ChatController {

    StreamingChatLanguageModel streamingLanguageModel;

    public ChatController(StreamingChatLanguageModel chatLanguageModel) {
        this.streamingLanguageModel = chatLanguageModel;
    }

    @GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public SseEmitter model(@RequestParam(value = "message", defaultValue = "Hello") String message) {

        SseEmitter emitter = new SseEmitter();
        System.out.println("接收到请求");
        streamingLanguageModel.chat(message, new StreamingChatResponseHandler() {
            @Override
            public void onPartialResponse(String partialResponse) {
                try {
                    emitter.send(partialResponse);
                } catch (IOException e) {
                    emitter.complete();
                }
                System.out.println("partialResponse:" + partialResponse);
            }

            @Override
            public void onCompleteResponse(ChatResponse completeResponse) {
                emitter.complete();
            }

            @Override
            public void onError(Throwable error) {

            }
        });
        return emitter;
    }
http://www.dtcms.com/a/86973.html

相关文章:

  • # Ubuntu 软件包管理:apt、snap 和 Flatpak 如何选择
  • GitHub 上的 Khoj 项目:打造你的专属 AI 第二大脑
  • MySQL 的索引类型有哪些?应该怎么选择?
  • React - LineChart组件编写(用于查看每日流水图表)
  • AI日报 - 2025年3月25日
  • 外观模式 (Facade Pattern)
  • 单片机串口打印调试信息②
  • 数据不外传!通过内网穿透实现绿联NAS远程访问的安全配置方案
  • 基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行步骤
  • 第四天 开始Unity Shader的学习之旅之Unity中的基础光照
  • 专业级 AI 提示生成工具清单
  • 纯文本驱动的数据可视化革命——AI生成图表「图表狐」全场景深度解析
  • 深度拆解:AI Agent发展演练·数字挑战
  • 【蓝桥杯每日一题】3.20
  • AI医疗革命:英伟达GTC 2025医疗健康与生命科学会议全分析
  • “张江引擎 人形启程”,AI 机器人开启上海进化新范式
  • Jackson实现JSON数据的合并
  • python如何提取html中所有的图片链接
  • 第44章:外部配置中心与Kubernetes集成
  • 深入解析 Socket:网络通信的桥梁
  • LangChain组件Tools/Toolkits详解(6)——特殊类型注解Annotations
  • 删除重复数据,防止删除所有数据
  • 在 Ubuntu 下通过 Docker 部署 Mastodon 服务器的详细教程
  • 循环不变量原则——螺旋矩阵
  • 基于Spring Boot的企业内管信息化系统的设计与实现(LW+源码+讲解)
  • 综合章节:游戏网络化、模组化与深度扩展
  • Mysql深分页的解决方案
  • 再次理解 Spring 中的 IOC、DI、AOP 与多态
  • 【CF】Day14——Codeforces Round(Div2) 924 BC + 926 C + 934 C + 922 C
  • k8s的控制应用Helm