- 博客(72)
- 收藏
- 关注
原创 spring-ai-alibaba 之 graph 槽点
本文分析了spring-ai-alibaba-graph-core框架在函数式编程实现上的问题。作者指出该框架直接移植Python的langgraph设计,过度使用函数式编程而忽视了Java的面向对象特性,导致代码结构复杂且不符合Java开发习惯。具体表现为:1)需要多层封装来模拟Python的函数特性;2)滥用CompletableFuture却未真正实现异步;3)缺乏统一的抽象模型;4)调用链过深且钩子函数隐蔽。作者建议采用更具Java特色的接口设计,并提出简化异步处理的方案。文章认为当前实现增加了理解
2025-08-03 21:29:05
459
原创 spring-ai-alibaba 学习(二十一)——graph源码流程梳理
本文概述了图计算流程的三个主要阶段:1)定义图结构;2)编译图(包含节点合法性验证、子图处理、并行节点合并等);3)执行图流程。执行阶段通过Java Stream API实现自动迭代,核心逻辑位于AsyncNodeGenerator.next方法,该方法处理开始/结束节点逻辑、中断判断及业务节点执行。关键调用路径展示了从CompiledGraph.invoke到最终业务逻辑执行的完整链路。整个流程实现了图的自动化执行和状态管理。
2025-08-03 13:00:00
415
原创 spring-ai-alibaba 学习(二十)——graph之检查点
本文介绍了graph中的检查点机制,相当于执行进度的存档点。检查点包含ID、节点信息及全局状态,用于恢复执行进度。系统通过threadId区分不同会话的检查点,支持多种存档器实现(内存、文件系统、数据库等)。以MemorySaver为例,其内部使用链表存储检查点,提供保存、获取等基本操作。检查点机制使得graph可以在任意节点中断后继续执行,确保了流程的可靠性和可恢复性。
2025-08-03 08:34:51
838
原创 spring-ai-alibaba 学习(十九)——graph之条件边、并行节点、子图节点
本文介绍了Spring AI Alibaba Graph中的特殊边和节点设计。条件边使用addConditionalEdges方法实现,通过mappings参数映射不同条件结果到目标节点,替代了传统流程图的判定节点设计。并行执行通过ParallelNode实现,自动将同一节点的多个后续节点组合为并行节点,要求并行节点的后续节点必须相同且不能是条件边。子图功能通过addNode方法嵌入,编译时会自动处理节点连接和ID命名空间,但不支持子图以并行节点开始或连接并行节点。
2025-08-02 15:00:00
727
原创 spring-ai-alibaba 接入秘塔AI搜索
摘要:秘塔AI搜索推出API功能,支持通过HTTP接口访问。spring-ai-alibaba已添加对应工具包,即将发布的1.0.0.3版本可通过三步引入:添加依赖、配置API密钥、代码调用。该API支持多模态搜索(网页/文库/学术等)。此外,秘塔MCP也已上线,但目前未发现与带鉴权的MCP连接方法,欢迎开发者提供相关信息。
2025-08-02 10:30:00
224
原创 spring-ai-alibaba 学习(十八)——graph进阶
本文补充了Spring AI Alibaba中Graph流程图的初始化和参数设置细节。初始化方面,介绍了1.0.0.3版本推荐的KeyStrategyFactory替代方案,用于指定全局状态参数的更新策略,包括ReplaceStrategy和AppendStrategy两种实现。参数设置部分,详细说明了编译图时的可选CompileConfig参数(含SaverConfig、生命周期监听器等)和执行图时的RunnableConfig参数(含threadId等),并解释了这些参数在流程图运行过程中的作用机制。
2025-08-02 06:16:49
967
1
原创 spring-ai-alibaba 1.0.0.2 学习(十七)——初识graph
本文介绍了Spring-AI-Alibaba中的Graph模块,这是一个基于有向状态图的工作流编排框架。主要内容包括:1)Graph模块的核心概念(图、节点、边、状态);2)开发中遇到的文档不完整、代码层次不清等困难;3)通过简单示例演示了StateGraph的创建和使用流程;4)详细解析了核心类StateGraph、CompiledGraph及节点、边相关接口的设计。该模块借鉴了LangGraph思想,虽然目前尚不成熟,但为AI工作流编排提供了基础框架,开发者可通过实现NodeAction等接口自定义流程
2025-07-24 10:21:30
679
原创 spring-ai-alibaba 学习资料集合
本文介绍了Spring AI及其Alibaba扩展的相关资源。Spring AI是AI工程应用框架(源码:spring-projects/spring-ai),Spring AI Alibaba是其Java扩展(官网/源码:alibaba/spring-ai-alibaba)。学习建议分两步:先掌握Spring AI(基础框架),再学习Spring AI Alibaba(扩展应用)。实践路径为:官网了解基础→示例代码练习→源码研究→代码贡献。特别指出示例代码比官网更新及时,是掌握新功能的关键。
2025-07-22 11:00:16
187
原创 spring-ai-alibaba 迭代字符分割器
摘要: spring-ai-alibaba新增了RecursiveCharacterTextSplitter文本分割器,通过维护分隔符列表(如中文标点符号)进行迭代分割,比原有TokenTextSplitter更符合中文语义完整性。该分割器优先按指定分隔符(如句号、问号等)分段,若文本仍过大则继续使用下一级分隔符,最后按固定大小分割。默认支持中文标点分割,调用方式简单,但需注意该功能暂未正式发布(版本需>1.0.0.2),需自行编译或等待更新。
2025-07-20 21:51:34
543
原创 spring-ai-alibaba如何上传文件并解析
摘要:本文介绍了如何通过API实现大模型对文档文件的解析功能。针对文字版PDF,阿里云qwen-long系列大模型提供直接上传文件的解决方案,支持多种文本和图片格式。文章详细说明了使用spring-ai-alibaba中的DashScopeDocumentAnalysisAdvisor工具类实现文件上传和对话处理的代码示例,该工具类可自动处理文件上传并将文件信息加入对话上下文,简化了开发流程。目前该功能暂未发布到中央仓库,需自行编译或等待新版本。
2025-07-20 18:50:24
798
原创 架构师职责浅谈
本文揭示了架构师职责的三个认知阶段:从最初简单技术选型的误解,到发现需考虑需求、性能等多维度的复杂决策,最终提炼为两大核心职责——技术选型(含完整技术方案)和模块划分(需求解决方案)。作者以AI技术引入为例,展示了架构师需要综合权衡技术、人力、成本等要素的决策过程,并指出模块划分同样面临微服务设计等复杂考量。文章强调架构师是需全方位综合能力的特殊技术岗位,其职责范围与个人能力和积累密切相关,可能涉及项目管理、团队协调等多重角色,实际职责可随项目需求灵活伸缩。
2025-07-18 10:11:14
387
原创 spring-ai-alibaba 简化版NL2SQL
摘要:文章介绍了一个简化版的自然语言转SQL(nl2sql)工具设计方案。该工具通过模块化组件实现可扩展性,包括表结构检索器、查询转换器、信息增强器等接口。核心流程为:用户输入查询→检索相关表结构→调用大模型生成SQL。提供了两种调用方式:简单调用只需传入基础参数,复杂调用可自定义各处理环节。工具类实现了完整的处理链路,包括查询转换、信息检索、结果后处理等步骤,同时保留了各环节的扩展点,用户可根据需求实现特定组件。该设计在保持实用性的同时提供了足够的灵活性。
2025-07-16 17:10:27
910
原创 spring-ai-alibaba 多模态之音频
摘要:新增了对音频文件(如MP3)的支持,使用需注意:1)在UserMessage metadata中设置AUDIO格式;2)选用支持音频的多模态模型(如qwen-audio-turbo-latest);3)开启withMultiModel(true)开关。目前该功能尚未正式发布,需使用1.0.0.3-SNAPSHOT版本或自行打包。调用时需按指定格式构建Media对象和消息结构。
2025-07-15 20:56:43
181
原创 spring-ai-alibaba 接入腾讯地图查询天气
摘要:spring-ai-alibaba新增腾讯地图工具包,支持三步快速实现天气查询:1)添加依赖;2)配置API key;3)代码调用。如需扩展其他地图功能,提供两种方案:1)自定义Function服务;2)通过MCP调用腾讯地图服务(需配置SSE连接)。当前工具包仅包含天气查询功能,需从主干分支自行构建或等待1.0.0.2+版本发布。MCP方案同样分三步实现,支持更灵活的服务调用。
2025-07-14 17:42:43
332
原创 spring-ai-alibaba 接入Tushare查询股票行情
Spring AI Alibaba新增Tushare支持,使用只需三步:添加依赖、配置token、调用接口。默认支持查询股票日行情,如需扩展其他接口,可自定义Service类实现Function接口。通过修改Request字段、请求参数和接口名称,即可灵活调用Tushare其他API。该功能目前仍在主干分支,需等待后续版本正式发布。
2025-07-14 14:55:45
366
原创 spring-ai-alibaba 1.0.0.2 学习(十六)——多模态
摘要:使用spring-ai-alibaba多模态功能时,需注意:1.调用方式需调整,使用多模态模型(如qwen-vl-max)并开启withMultiModel(true)开关;2.不同模型支持的多模态格式不同(如DashScope支持视频/图片,ZhiPu仅支持图片。
2025-07-13 22:10:49
593
原创 spring-ai-alibaba 记录第一次代码贡献
本文记录了首次为开源项目spring-ai-alibaba贡献代码的全过程。首先介绍了准备工作,包括阅读代码、了解贡献要求和选择开发内容(建议从标记为"help wanted"的issue或熟悉领域入手)。作者选择基于腾讯地图实现天气查询功能进行贡献。具体实施阶段包括:fork代码库、本地修改、单元测试、格式检查、提交到个人仓库并创建Pull Request。最后强调了代码规范检查和提交命名要求,并分享了成功将代码合并到主分支的经验。
2025-07-12 22:55:07
430
原创 spring-ai-alibaba 1.0.0.2 学习(十五)——自然语言生成sql
摘要:本文探讨了应用开发中动态查询需求的挑战,介绍了Spring AI Alibaba的NL2SQL解决方案。该技术通过自然语言处理将用户输入转换为SQL查询,无需用户具备SQL知识。文章分析了其实现原理(类似RAG架构),包含数据预处理、查询转换等流程。同时指出了当前实现存在的代码结构问题(如重复功能、命名冲突),并提出了优化建议:采用Advisor模式解耦核心逻辑、分离配置模块、支持多数据库适配等。最后建议通过接口抽象实现与具体技术的解耦,提升框架的扩展性和灵活性。
2025-07-07 15:35:21
1006
原创 spring-ai-alibaba 1.0.0.2 学习(十四)——提示词动态管理
本文介绍了两种动态管理AI提示词的方案:1. 使用数据库存储提示词;2.通过Nacos配置中心管理。重点阐述了Nacos方案的具体实现步骤:添加依赖、配置Nacos服务、在应用中设置连接参数,以及代码调用方法。文中详细说明了如何通过ConfigurablePromptTemplateFactory实现提示词的动态更新机制,并分析了相关接口和实现类的工作原理。最后提出Nacos能否用于管理大模型参数的思考,指出参数更新未生效的问题有待解决。该方案避免了频繁打包部署,实现了提示词的动态管理。
2025-07-06 15:37:06
1073
原创 spring-ai-alibaba 1.0.0.2 学习(十三)——重排序模型
Spring AI 0.8.0移除了DocumentRanker接口,改为通过DocumentPostProcessor实现重排序。spring-ai-alibaba提供了开箱即用的RetrievalRerankAdvisor方案,需配置开启自动装配(1.0.0.2版本存在配置问题需手动修复)。该方案通过VectorStore检索文档后,使用RerankModel进行重排序和过滤,核心包含RetrievalRerankAdvisor(增强调用流程)、RerankModel(重排序接口)及DashScopeR
2025-07-06 07:44:06
1195
1
原创 spring-ai-alibaba 1.0.0.2 学习(十二)——聊天记忆扩展包
Spring-AI和Spring-AI-Alibaba都提供了JDBC扩展实现ChatMemoryRepository接口,主要区别在于:1) 支持数据库不同,Spring-AI支持HSQL等4种,Alibaba版支持MySQL等5种;2) 实现方式不同,Spring-AI采用组合模式+Dialect,Alibaba版使用抽象类+子类继承;3) Alibaba版会自动建表。使用MySQL时,需添加依赖、配置连接信息,并通过MessageWi
2025-07-05 23:08:30
592
2
原创 spring-ai-alibaba 1.0.0.2 学习(十一)——向量存储扩展包
摘要:Spring AI-Alibaba新增了四种阿里云向量存储(AnalyticDB、OceanBase、OpenSearch、Tair),以OceanBase为例展示了接入流程:1)添加依赖;2)配置数据库连接;3)通过@Autowired注入OceanBaseVectorStore调用add()和similaritySearch()方法。其实现包含配置属性类、自动装配类等核心组件,存储时先向量化文档再入库,查询时通过内置函数计算向量相似度。该扩展弥补了Spring AI对国内云存储支持不足的问题。
2025-07-05 12:30:29
846
原创 spring-ai-alibaba 1.0.0.2 学习(十)——各种工具调用方式对比
本文梳理了Spring AI生态中各类工具调用机制的关系。首先区分了FunctionCallback(1.0.0前)和ToolCallback(1.0.0后)的概念,并说明FunctionToolCallback和MethodToolCallback都是ToolCallback的实现类。接着对比了ToolCallback与MCP的异同,指出MCP被封装为ToolCallback的另一种实现,但采用动态Schema。然后分析spring-ai-alibaba扩展的tool-calling包与MCP的区别,前者
2025-07-04 22:12:19
672
原创 spring-ai-alibaba 1.0.0.2 学习(九)——集成阿里云百炼智能体
摘要:本文介绍了智能体在Spring AI Alibaba中的应用。智能体是一种集成了大模型、提示词、知识库、工具调用和记忆的成熟AI应用,可通过阿里云百炼平台配置并调用。文章展示了智能体的简单调用方法,只需配置应用ID并使用DashScopeAgent的call方法即可。其内部实现主要依靠DashScopeAgent和DashscopeAgentApi完成请求封装、云端通信和结果解析。相比单独集成外部工具,智能体提供了更便捷的解决方案,将复杂流程封装在云端实现。
2025-07-04 17:32:40
419
原创 spring-ai-alibaba 1.0.0.2 学习(八)——接入阿里云信息查询服务
本文介绍了如何在Spring AI项目中集成阿里云信息查询服务(IQS)实现公开文档检索。相比私有知识库方案,IQS无需预先搭建知识库,直接通过云端API检索公开文档。文章详细说明了实现步骤:1)引入阿里云IQS SDK依赖;2)申请API权限并配置密钥;3)通过自定义DocumentRetriever接口封装检索逻辑,包括初始化客户端、构建搜索请求和处理返回结果。该方法简化了文档检索流程,适合需要直接查询公开信息的场景,可作为私有知识库的替代方案。
2025-07-03 20:52:07
400
原创 spring-ai-alibaba 1.0.0.2 学习(七)——集成阿里云百炼平台知识库
摘要:阿里云百炼平台提供云端知识库功能,可通过spring-ai-alibaba直接使用。实现RAG数据存储流程分为三步:1)读取本地文档;2)进行文档切分;3)将文档存储到云端向量库。检索时利用DocumentRetrievalAdvisor封装检索逻辑。
2025-07-03 18:40:48
1477
原创 spring-ai-alibaba 1.0.0.2 学习(六)——DocumentReader与DocumentParser
Spring AI Alibaba提供了多种文档读取工具包,支持从语雀、飞书、Notion等平台读取文档。以Bilibili读取为例,只需三步:引入依赖、配置(部分平台免配置)、调用代码。其架构设计将文档平台接入与格式解析分离,通过DocumentReader接口处理平台访问,DocumentParser接口处理格式转换,实现了解耦和代码复用。这种设计允许不同平台共享相同格式解析器,也支持同一平台处理多种文档格式。
2025-07-02 10:21:20
1148
原创 spring-ai-alibaba 1.0.0.2 学习(五)——集成外部工具(以高德地图为例)
摘要:Spring-AI-Alibaba工具集成简明教程,以高德天气服务为例。只需三步:1)引入starter工具包;2)申请API Key并配置;3)通过toolNames调用。核心原理是将工具封装为Function接口实现,包含自动配置、属性加载和服务实现类。开发者可参考此模式轻松接入其他外部工具,源码结构清晰,主要逻辑集中在Function接口的apply方法实现和API调用。
2025-07-01 14:33:53
1103
原创 spring-ai-alibaba 1.0.0.2 学习(四)——语句切分器、文档检索拦截器
本文对比了spring-ai-alibaba的文本切分工具:SentenceSplitter和原生TokenTextSplitter的区别。TokenTextSplitter仅支持英文分隔符,不适合中文处理;而SentenceSplitter基于OpenNLP模型,能更准确识别中文语句。DocumentRetrievalAdvisor作为VectorStore的上层封装,提供了更灵活的检索功能,允许在检索前后添加自定义操作。
2025-06-30 14:27:04
554
原创 spring-ai-alibaba 1.0.0.2 学习(三)——配置
本文介绍了在Spring-AI-Alibaba中配置大模型的三种方法及其优先级:1)通过配置文件自动装配;2)创建ChatClient时配置;3)调用时实时配置。详细说明了如何查找具体配置项的方法,包括查看Options类、spring-configuration-metadata.json文件以及跟踪自动配置类。同时指出了当前文档不足和API-key配置方面存在的问题,如需要全局配置api-key以及某些模型即使禁用仍需配置api-key等限制。
2025-06-29 21:53:14
1093
原创 spring-ai-alibaba 1.0.0.2 学习(二)——jar包盘点
Spring AI Alibaba 提供丰富的组件包,主要分为:核心包(core、starter-dashscope)、工具调用包(翻译、搜索、地图等20+功能)、文档读取包(B站、GitHub、邮件等20+数据源)、文档解析包(PDF、Markdown等格式处理)、自动化配置包、Nacos相关包、数据存储包(AnalyticDB、OceanBase等)、聊天记忆包及其他功能包。建议使用前查看官方物料清单(BOM)确保版本兼容性,详细组件列表和使用指南可参考阿里云官方文档。
2025-06-29 12:14:00
1014
原创 spring-ai-alibaba 1.0.0.2 学习(一)——概述
SpringAIAlibaba是基于SpringAI框架的扩展,深度集成阿里百炼平台,提供ChatBot、工作流和多智能体开发能力的企业级AI框架。它需要Java17+、SpringAI1.0.0和SpringAIAlibaba1.0.0.2版本支持,通过starter依赖和API密钥即可快速集成。该框架扩展了语义切分、提示词管理、数据存储等功能,并集成了百炼知识库、智能体等阿里云服务,定位为AI智能体开发的高级框架,类比Spring对JDK的扩展作用。后续将重点学习其核心组件和工具集成能力。
2025-06-29 11:33:46
849
原创 spring-ai-alibaba DashScopeCloudStore自动装配问题
摘要:使用spring-ai-alibaba 1.0.0.2版本时,DashScopeCloudStore无法自动装配,原因是相应Bean未提供。该问题在1.0.0-M6.1版本已被报告但未修复。临时解决方案是手动创建DashScopeCloudStore实例。建议官方提供DashScopeApi的自动装配支持,以简化DashScopeCloudStore的创建过程。当前需通过构造方法直接实例化,并传入API Key和知识库名称等参数。
2025-06-28 23:02:46
325
原创 spring-ai 1.0.0 学习(十八)——MCP Server
本文介绍了如何将Spring服务发布为外部工具供调用。主要步骤包括:1)引入spring-ai相关依赖;2)配置application文件定义服务器信息;3)用@Tool注解标记服务方法,并通过ToolCallbackProvider注册。文章还简要说明了HTTP模式下的内部原理:通过McpServerProperties配置创建服务器组件,McpSyncServer处理各类请求,WebMvcSseServerTransportProvider管理会话。
2025-06-27 17:59:38
476
原创 spring-ai 1.0.0 学习(十七)——MCP Client
摘要:文章介绍了Spring-AI的MCP(模型上下文协议)功能,该协议用于调用外部工具(如高德地图、百度搜索等)。通过MCPClient实现外部调用,需引入spring-ai-starter-mcp-client或webflux包,并在配置文件中添加设置。使用时通过ToolCallbackProvider将配置传递给大模型。文章还简述了基于SSE的Http内部实现流程,包括配置加载、通信传输、客户端初始化等步骤,最终将工具定义发送给大模型处理。(149字)
2025-06-27 16:13:57
716
原创 spring-ai 1.0.0 学习(十六)——知识库实战
本文介绍了基于Spring-AI的知识库实战应用。知识库本质上是通过RAG流程将本地知识向量化后存储到向量数据库,再通过问答系统查询。文章总结了知识库涉及的关键技术:向量数据库、数据预处理(DocumentReader/Transformer/Writer)和检索生成(QuestionAnswerAdvisor)。在实施步骤上,需要选择文档加载器(支持多种格式)、向量数据库和嵌入式模型,并介绍了代码实现方案,包括pom依赖配置、application.yml设置以及核心的检索生成和数据预处理代码。最终通过R
2025-06-26 14:31:43
778
原创 spring-ai 1.0.0 学习(十五)——RAG
摘要:Spring-AI中的RAG(检索增强生成)技术通过外挂知识库解决大模型知识局限性问题。其流程分为数据预处理(文档加载、切分、向量化、存储)、检索(向量相似性查找)和生成(结合检索结果生成回答)三个阶段。Spring-AI提供两种实现方式:简单的QuestionAnswerAdvisor和可定制化的RetrievalAugmentationAdvisor,后者支持对各环节(查询转换、文档检索等)进行优化。优化方案包括改进文档切分方式、测试不同嵌入模型、采用分层检索、结果重排序等,以提升回答质量。
2025-06-25 14:59:12
1007
原创 spring-ai 1.0.0 学习(十四)——向量数据库
摘要:本文介绍了AI系统中的向量数据库应用,重点解析了在Spring框架中的实现方法。首先说明了配置过程,包括Embedding模型设置和VectorStore声明。通过示例展示了文档存储和语义搜索的基本使用流程。文章深入探讨了向量数据库的工作原理,包括文本向量化处理和相似度匹配机制,并分析了相关接口和实现类。最后对比了不同向量数据库的选型标准,包括开源性、数据规模支持等特性
2025-06-24 15:40:14
612
原创 spring-ai 1.0.0 学习(十三)——可观测性
摘要:Spring-AI的可观测性模块通过Actuator实现AI应用监控,在不影响功能开发的前提下提供重要监控手段。配置步骤包括添加Actuator依赖和设置采样率、日志输出等参数,访问/actuator/metrics可查看指标。实现原理基于切面编程,通过ObservationRegistry注册处理器,在模型调用前后执行观察操作,记录指标数据。核心接口包括Observation、ObservationRegistry等,支持上下文信息保存和指标提取。
2025-06-23 15:44:15
688
原创 spring-ai 1.0.0 学习(十二)——工具调用
本文介绍了大模型工具调用的实现原理和使用方法。工具调用是通过将代码接口开放给大模型使用,分为声明和注册两个步骤:声明时需用@Tool注解标记工具方法,注册时通过tools方法注册工具类。执行流程包含6个关键步骤:从请求发送、模型判断、工具执行到结果返回。文章还解析了Spring-AI框架的内部实现机制,包括主要接口和实现类的功能分工,以及工具调用的核心处理逻辑。
2025-06-20 16:54:32
1150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人