<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[javaqilong的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/javaqilong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; javaqilong]]></copyright><item><title><![CDATA[第 20 章 · AI 流式输出与异步调度：别堵死线程]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/166950304</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/166950304</guid><author>javaqilong</author><pubDate>Thu, 01 Oct 2026 23:13:06 +0800</pubDate><description><![CDATA[节点“慢”分三类：同步阻塞（应避免）、未完成Future、流式生成器（AsyncGenerator），后者可提前推送chunk。stream()返回可取消的AsyncGenerator.Cancellable，chunk来自流式节点内嵌的StreamingOutput，结束帧合并状态。]]></description><category></category></item><item><title><![CDATA[第 19 章 · AI 工具循环与条件路由：管住 recursionLimit]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/166794874</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/166794874</guid><author>javaqilong</author><pubDate>Mon, 28 Sep 2026 21:40:59 +0800</pubDate><description><![CDATA[基于LangGraph4j构建Agent与工具的循环调用结构，通过needTool状态控制条件边跳转，实现ReACT风格的多轮推理。使用rounds限制业务轮次，recursionLimit（默认25）防止无限迭代。轨迹显示2轮工具共5次节点执行，验证了环形拓扑与退出逻辑。强调条件边仅读状态、不解析文本，需确保映射表包含所有返回键，避免超限异常。推荐先用stream调试轨迹，再接入真实模型，确保环路可控、退出明确。]]></description><category></category></item><item><title><![CDATA[第 18 章 · 跑通 AI 图：CompiledGraph 的 compile、invoke、stream]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/166741064</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/166741064</guid><author>javaqilong</author><pubDate>Sun, 27 Sep 2026 22:43:56 +0800</pubDate><description><![CDATA[跑通 AI 图：CompiledGraph 的 compile、invoke、stream]]></description><category></category></item><item><title><![CDATA[第 17 章 · 编排 AI 流程：StateGraph 节点、条件边与意图路由]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/166491495</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/166491495</guid><author>javaqilong</author><pubDate>Wed, 23 Sep 2026 20:12:54 +0800</pubDate><description><![CDATA[基于LangGraph4j，实现一个意图三路分支的StateGraph拓扑图。通过定义状态结构（RouteState），使用addNode添加分类、FAQ、订单、兜底等节点，以addEdge构建直线流程，再用addConditionalEdges实现按意图（faq/order/unknown）的条件路由。]]></description><category></category></item><item><title><![CDATA[第 16 章 · AI Agent 共享状态：AgentState 与 Channels]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/166374554</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/166374554</guid><author>javaqilong</author><pubDate>Tue, 22 Sep 2026 23:32:23 +0800</pubDate><description><![CDATA[LangGraph4j中，通过Channel定义状态键的合并策略：base覆盖、appender追加（可去重）。节点返回部分更新的Map，由AgentState.updateState按Schema中的Channel规则合并。]]></description><category></category></item><item><title><![CDATA[第 15 章 · 第一个 AI 工作流：Hello Graph 从 START 跑到 END]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/166256412</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/166256412</guid><author>javaqilong</author><pubDate>Mon, 21 Sep 2026 22:39:23 +0800</pubDate><description><![CDATA[通过StateGraph定义状态与节点，greet节点返回greeting和logs，利用Channels.base与appenderWithDuplicate实现合并逻辑。输入含name，输出获取最终greeting。]]></description><category></category></item><item><title><![CDATA[第 14 章 · LangGraph4j 入门：AI Agent 什么时候该上状态图]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/166139212</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/166139212</guid><author>javaqilong</author><pubDate>Sun, 20 Sep 2026 19:15:52 +0800</pubDate><description><![CDATA[相比SpringAI聚焦模型与工具调用，LangGraph4j专注流程控制，适用于审批、并行、子图、断点续跑等场景。上图前提：需求涉及多分支、循环或需状态持久化；否则优先稳住SpringAI主链。]]></description><category></category></item><item><title><![CDATA[第 13 章 · AI智能体的可观测性、运维与安全]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/165891465</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/165891465</guid><author>javaqilong</author><pubDate>Fri, 18 Sep 2026 22:58:20 +0800</pubDate><description><![CDATA[基于SpringAI 2.0，系统梳理AI服务上线必备四关：观测（通过Observation+Micrometer聚合指标，脱敏处理敏感数据）、重试与限流（配置合理退避策略，应用层设配额与降级文案）、密钥与鉴权（密钥隔离、Prompt防护、工具调用强制鉴权）、成本与审计（按模型/工具记账，保留摘要日志，发布清单闭环）。强调全程脱敏，关键指标聚焦低基数标签，确保可观测性、稳定性与安全性，达成可生产上线标准。]]></description><category></category></item><item><title><![CDATA[第 12 章 · AI智能体的结构化输出与流式响应]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/165755093</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/165755093</guid><author>javaqilong</author><pubDate>Thu, 17 Sep 2026 18:48:00 +0800</pubDate><description><![CDATA[用 entity(...) 把模型输出变成 Java 对象；用 stream() 推出 token，接到 SSE，并旁路拼完整文本落库。 ]]></description><category></category></item><item><title><![CDATA[第 11 章 · 知识图谱 GraphRAG]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/165631893</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/165631893</guid><author>javaqilong</author><pubDate>Wed, 16 Sep 2026 23:13:45 +0800</pubDate><description><![CDATA[本文基于SpringAI 2.0.1，探索知识图谱与向量RAG的差异与协同。]]></description><category></category></item><item><title><![CDATA[第 10 章 · Embedding、VectorStore 与 RAG]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/165491609</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/165491609</guid><author>javaqilong</author><pubDate>Tue, 15 Sep 2026 22:20:26 +0800</pubDate><description><![CDATA[本文基于Spring AI 2.0.1，实现「文档进库→检索增强生成」最小闭环]]></description><category></category></item><item><title><![CDATA[第 9 章 · Model Context Protocol（MCP）]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/165353473</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/165353473</guid><author>javaqilong</author><pubDate>Mon, 14 Sep 2026 19:50:05 +0800</pubDate><description><![CDATA[在Spring AI的 MCP中，分清 Host / Server，选对 starter 与传输，用注解暴露工具，并把 MCP Tool 桥进 ChatClient。 ]]></description><category></category></item><item><title><![CDATA[第 8 章 · Tool Calling 与 Tool Search]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/165126039</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/165126039</guid><author>javaqilong</author><pubDate>Sat, 12 Sep 2026 22:09:41 +0800</pubDate><description><![CDATA[在Spring AI种，工具如何声明、如何挂到 ChatClient、运行时如何循环执行，以及工具很多时怎样用 Tool Search 做渐进披露。]]></description><category></category></item><item><title><![CDATA[第 7 章 · AI会话中的窗口记忆与长期记忆]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/164881335</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/164881335</guid><author>javaqilong</author><pubDate>Thu, 10 Sep 2026 20:57:36 +0800</pubDate><description><![CDATA[弄清对话为什么要「记住」、记忆分几类，以及窗口、向量长期记忆、用户偏好表怎么接。]]></description><category></category></item><item><title><![CDATA[第 6 章 · Spring AI中的Advisors]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/164757235</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/164757235</guid><author>javaqilong</author><pubDate>Wed, 09 Sep 2026 22:27:40 +0800</pubDate><description><![CDATA[弄明白Spring AI中 ChatClient 上的 Advisor 链——契约、挂法、内置门牌、顺序语义，以及如何自定义。]]></description><category></category></item><item><title><![CDATA[第 5 章 · ChatModel 与 Provider]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/164630728</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/164630728</guid><author>javaqilong</author><pubDate>Tue, 08 Sep 2026 20:33:03 +0800</pubDate><description><![CDATA[弄清 ChatModel 与 ChatClient 的分工：call/stream 契约、Provider 选型，以及用 OpenAI Options 作标本覆盖连接、生成与工具旋钮；并说明多模型注入、兼容网关排查，以及何时该直接用薄调用。]]></description><category></category></item><item><title><![CDATA[第 4 章 · ChatClient：应用层入口]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/164496522</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/164496522</guid><author>javaqilong</author><pubDate>Mon, 07 Sep 2026 20:24:21 +0800</pubDate><description><![CDATA[Spring AI 2.0.1中，ChatClient是核心应用入口，通过Builder或注入prototype创建，支持默认值与单次请求覆盖。调用prompt()组装消息，call()/stream()同步或流式获取结果，entity()实现结构化输出，tools()注册工具。注意请求级tools整组覆盖默认，多轮记忆需Advisor，客户端本身无状态。]]></description><category></category></item><item><title><![CDATA[第 3 章 · Message / Prompt / ChatResponse]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/164431635</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/164431635</guid><author>javaqilong</author><pubDate>Sun, 06 Sep 2026 23:13:44 +0800</pubDate><description><![CDATA[SpringAI 2.0.1中一次模型调用的数据形状由Message、Prompt、ChatOptions与ChatResponse构成。角色消息有System/User/Assistant/Tool，工具调用通过AssistantMessage的toolCalls与ToolResponseMessage衔接。Prompt打包消息与选项，ChatResponse读取文本、工具调用及Usage。]]></description><category></category></item><item><title><![CDATA[第 2 章 · SpringAI环境搭建与 Hello World]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/164402728</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/164402728</guid><author>javaqilong</author><pubDate>Sat, 05 Sep 2026 18:59:15 +0800</pubDate><description><![CDATA[本文介绍了SpringAI 2.0.1与SpringBoot 4.x的快速入门：通过BOM管理版本，添加model-starter（如OpenAI或Ollama），配置API Key与模型参数，即可实现同步调用（ChatClient.call）和流式调用（Flux SSE）。同时提供最小配置示例、工程骨架、多模型区分、测试方法和常见问题排查，帮助开发者用最小成本跑通对话流程。]]></description><category></category></item><item><title><![CDATA[第 1 章 · Spring AI 技术概览]]></title><link>https://blog.youkuaiyun.com/javaqilong/article/details/164366379</link><guid>https://blog.youkuaiyun.com/javaqilong/article/details/164366379</guid><author>javaqilong</author><pubDate>Fri, 04 Sep 2026 12:39:22 +0800</pubDate><description><![CDATA[本文介绍SpringAI 2.0.1在SpringBoot 4.x下的应用框架，核心为三层结构（应用、抽象、提供商）和一次对话请求路径。业务通过ChatClient起步，借助Advisors实现记忆、RAG、工具等能力。]]></description><category></category></item></channel></rss>