news 2026/2/4 11:13:02

AI 工具调用流式开发,TokenStream 才是正确选择

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI 工具调用流式开发,TokenStream 才是正确选择

在基于LangChain4j + Spring Boot开发AI代码生成平台的过程中,主要想实现Vue项目带工具调用的流式生成能力,比如自动写入项目文件、构建打包,同时通过响应式流向前端推送实时进度。

但是,在前端调试时,出现了以下错误:

抱歉,生成过程中出现了错误,请重试。

原因分析

1. AI服务接口
@SystemMessage(fromResource = "prompt/codegen-vue-project-system-prompt.txt") Flux<String> generateVueProjectCodeStream(@MemoryId long appId, @UserMessage String userMessage);
2. Facade层调度逻辑
case VUE_PROJECT -> { Flux codeStream = aiCodeGeneratorService.generateVueProjectCodeStream(appId, userMessage); yield processCodeStream(codeStream, CodeGenTypeEnum.VUE_PROJECT, appId); }

接口调用直接返回业务异常,前端无任何流式输出,日志无有效业务堆栈,仅提示:抱歉,生成过程中出现了错误,请重试

主要原因是:

  • TokenStream是LangChain4j专为AI流式响应 + 工具调用设计的API,内置onToolRequest/onToolExecuted等完整回调事件,可无缝衔接工具执行流程;
  • Flux<String>是通用响应式流组件,无AI场景专属能力,无法接收、处理工具调用的回调事件。

解决方法

将接口和调度层作如下修改:

// 1. AI接口原生返回值类型 @SystemMessage(fromResource = "prompt/codegen-vue-project-system-prompt.txt") TokenStream generateVueProjectCodeStream(@MemoryId long appId, @UserMessage String userMessage); // 2. Facade层调度逻辑 case VUE_PROJECT -> { TokenStream tokenStream = aiCodeGeneratorService.generateVueProjectCodeStream(appId, userMessage); yield processTokenStream(tokenStream); }

接下来,就恢复正常了。

小贴士

在集成工具调用的LangChain4j AI场景中,TokenStream是官方推荐且唯一能保证全功能正常运行的流式类型,Flux仅适用于无AI业务逻辑的通用流式场景。

在集成第三方框架时,优先使用框架原生提供的组件和API,是保证系统稳定性的最优解。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!​

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示

​因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/4 11:08:42

提升日期处理效率:day.js 实战经验分享

本文简介 点赞 关注 收藏 学会了 本文主要介绍我在工作中使用 day.js 较多的方法。 本文并不能代替 day.js 官方文档&#xff0c;日常工作中该查文档的还是要查文档。 本文是写给刚接触 day.js 的工友&#xff0c;让这部分工友能更顺利上手 day.js。 本文不涉及 day.js …

作者头像 李华
网站建设 2026/2/4 11:03:10

GEO优化崛起:超三成企业布局生成式AI内容策略

生成式人工智能技术迅速普及&#xff0c;一种新的优化概念就是GEO优化&#xff0c;渐渐进入人们视野。2025年有一项行业调查&#xff0c;显示全球已经有超过37%的企业开始关注或者尝试实施GEO优化策略&#xff0c;这个数字和2024年初的12%相比&#xff0c;增长了超过三倍。 生…

作者头像 李华
网站建设 2026/2/4 10:59:13

主流消息队列(MQ)的核心架构、底层原理

一、主流 MQ 架构与核心原理详解1. RabbitMQ&#xff08;1&#xff09;核心架构&#xff08;AMQP 协议 交换机路由&#xff09;基于 Erlang 语言开发&#xff0c;遵循 AMQP&#xff08;高级消息队列协议&#xff09;&#xff0c;核心组件分工明确&#xff1a;组件核心作用Brok…

作者头像 李华
网站建设 2026/2/4 10:53:53

嵌入式之C/C++(四)预处理

嵌入式开发中&#xff0c;C/C 预处理&#xff08;Preprocessor&#xff09; 是非常核心且经常被低估的部分&#xff0c;尤其在资源受限的 MCU 项目中&#xff0c;它直接影响代码体积、可维护性、可移植性、调试难度和最终生成的 .hex / .bin 大小。 下面从嵌入式视角给你一个系…

作者头像 李华
网站建设 2026/2/4 10:53:46

SpringBoot静态资源管理:从默认配置到自定义与WebJars

Spring Boot 静态资源管理详解&#xff08;2026 年视角&#xff0c;基于 Spring Boot 3.x&#xff09; Spring Boot 对静态资源&#xff08;CSS、JS、图片、字体、HTML 等&#xff09;的处理非常友好&#xff0c;默认配置已经覆盖了绝大多数场景&#xff0c;但自定义需求也很常…

作者头像 李华