Langgraph4j - 基础介绍和案例演示(二)

说明和准备工作

在使用 LangChain 或 LlamaIndex 这类线性框架时,一旦涉及死循环重试、多分支决策或人机协同(Human-in-the-Loop),代码往往极易沦为难以维护的 “意大利面条”。LangGraph4j 作为 Java 生态中唯一的 LangGraph 优秀移植版,凭借有向有环图(DAG / Cyclic Graph)架构,正是为优雅化解这些工程痛点而生。

本文将通过实际案例,系统拆解 LangGraph4j 的核心机制:从条件分支与循环控制状态管理与断点续传,到多 Agent 协作与任务并行化,再到主图与子图的模块化设计。我们将通过一系列具体案例,演示如何利用这些特性构建健壮的 Agent。


Langgraph4j - 基础介绍和案例演示(一)

Langgraph4j 介绍

它是什么?

从根本上说,LangGraph4j 的本质是一个有状态、可循环的图式流程编排引擎。它是 Python LangGraph 的 Java 实现,专门用来解决 复杂 Agent 系统中 “怎么走流程、怎么管状态、怎么协作” 的问题。它与 LangChain4j 的不同,可以用一句话类比:

  • LangChain4j 是 “零件箱 + 接口适配层”,负责把大模型、Embedding、Tool、RAG 这些能力接入 Java 应用(像高速公路,从入口到出口基本是一条直线)。
  • LangGraph4j 是 “搭积木的图纸 + 流程引擎”,负责用 StateGraph(状态图)Node(节点)Edge(边) 把多个 Agent/步骤组织成有分支、有循环、有共享状态、可中断恢复的工作流(像城市路网,可以分叉、掉头、并行)。


Spring AI - MCP 用法和基本测试案例

MCP 的核心作用

如果说大模型(LLM)是操作系统的大脑,那么 MCP(Model Context Protocol,模型上下文协议)就是大模型的 “USB 接口”。在 MCP 出现之前,大模型要连接外部世界(查数据库、调企业 API、看本地文件),每个开发者都要自己用 Python/Java 写一套定制的 Tools(Tools Calling)。这导致了严重的碎片化:你给 OpenAI 写的工具,换到 Claude 或本地的 Ollama 上,可能就要重写适配。

Anthropic 推出的 MCP 彻底改变了这一点。它统一了标准:它建立了一个轻量级、双向的开放协议,让任何大模型(Client)都可以通过统一的标准,秒级接入任何数据源和工具生态(Server)。MCP 的作用可以概括为以下三点:

  • Resources(资源):把静态数据(如:日志文件、DB 某一页、ReadMe)以统一格式读给大模型。
  • Prompts(提示词模板):Server 侧提供预设的 Prompt 模板(如:“帮我 review 这段 Java 代码”)。
  • Tools(工具):让大模型可以 “做动作”(如:在百度地图查经纬度、去 GitHub 提个 PR、在 Redis 里删个 Key)。

关于 MCP 的介绍,也可以参考本站之前写的《Langchain4j - MCP 和 Tool Calling 的对比及其具体案例》


Spring AI Alibaba - 基础案例演示

Spring AI Alibaba(SAA)简介

生态对照

Spring AI Alibaba 是阿里云与 Spring 官方团队联合开发的 Spring AI 官方生态分支。它基于 Spring AI 的统一抽象,专门针对中国本土的 AI 生态(主要是阿里云百炼平台通义千问(Qwen)、以及国内部署的 DeepSeek 等大模型)进行了深度适配。它可以一键自动装配百炼 API、原生支持国内开发者常用的流式输出、向量数据库,并推出了配套的 spring-ai-alibaba-agent-framework,让国内开发者能更方便写出复杂的 AI Agent。

Langchain4j - 基于 Qdrant 实现的 RAG 知识问答系统

项目简介

在当今的大模型应用落地中,RAG(检索增强生成,Retrieval-Augmented Generation)已成为解决模型幻觉、打通企业私域数据的核心技术。简单来说,RAG 就像是给大模型配备了一个可以实时查阅的 “外部知识字典”——当用户提出问题时,系统会首先从海量的私域文档中检索出最相关的知识切片,然后将这些黄金上下文与问题一同喂给大模型,从而确保模型的回答基于客观事实,而非凭空捏造。

这里我选择 Qdrant 作为本项目的向量数据库底座。Qdrant 具有极其出色的 gRPC 读写性能、毫秒级的过滤检索响应,以及对动态元数据(Payload)的强大过滤能力,能够完美支撑起高频、低延迟的知识检索诉求,确保知识库的扩展性与检索精准度。

需要向读者说明的是,本项目具有极强的技术探索性质。我的核心目的不仅是为了搭建一个应用,更是为了通过手写代码,由浅入深地拆解 RAG 技术在大模型应用中的落地细节与底层运作机制。

技术参考:Embedding (Vector) StoresEmbedding StoreRAGLangchan4j support for QdrantQdrant