☰
从一个 HelloWorld 到 49 个示例模块:LangChain4j 在 Java LLM 应用开发中的完整实践路径
2026/10/23 5:56:43 网站建设 项目流程

从一个 HelloWorld 到 49 个示例模块:LangChain4j 在 Java LLM 应用开发中的完整实践路径

【免费下载链接】langchain4j-examples项目地址: https://gitcode.com/GitHub_Trending/la/langchain4j-examples

langchain4j-examples 是 LangChain4j 框架的官方示例仓库,把"在 Java 项目里接入大语言模型"这件事拆成了 49 个可直接运行的示例模块:从几十行的 HelloWorld,到带记忆和工具调用的客户支持 Agent,再到 RAG 的十种进阶技巧和多 Agent 编排工作流。如果你打算给现有 Java 系统接 LLM 能力,或者第一次接触 Java 生态的 LLM 开发框架,这个仓库几乎覆盖了你会遇到的每一类落地问题,而且每个问题都有对应的可运行代码。

克隆仓库并理解示例的运行方式

先克隆仓库:

git clone https://gitcode.com/GitHub_Trending/la/langchain4j-examples

整个仓库是一个 Maven 多模块工程,根目录的 pom.xml 聚合了所有子模块。每个示例模块都是独立可编译的工程,大多数示例只需要在 tutorials/src/main/java/ApiKeys.java 这类文件里配置好模型服务的 API Key,就能在 IDE 里直接运行 main 方法。

tutorials/README.md 还给出了一条进阶路线:用 complete profile 打一个带全部依赖的 jar,把示例作为普通 Java 程序运行;同一套代码也支持 GraalVM native-image 编译成原生可执行文件。也就是说,你在这里看到的调用方式,和最终部署到生产环境的形态是一致的。

跑通第一个示例:从 _00_HelloWorld 开始的编号教程

建议的起点是 tutorials/ 模块。它按_00到_12的数字编号递进,每个文件对应一个概念,难度曲线很平缓:_00_HelloWorld.java 只做一件事——用 builder 构建一个 OpenAiChatModel,调一次 chat 方法,把回答打印出来。看完它你就知道 LangChain4j 最底层的模型调用长什么样。

往后编号推进,内容依次覆盖模型参数、提示词模板(_03_PromptTemplate.java)、流式输出(_04_Streaming.java)、对话记忆(_05_Memory.java)、few-shot 示例,以及 AI Service 的几种形态(_08_AIServiceExamples.java)。这里的 AI Service 是 LangChain4j 的核心抽象:你只定义一个 Java 接口并加上注解,框架用动态代理提供实现,模型、消息拼装、记忆、输出解析这些细节全部被隐藏。这个模式在仓库后面的 RAG、Agent 示例里会反复出现,先把 _00_HelloWorld.java 跑通,后面读代码会快很多。

49 个示例模块的目录分工:按需求快速定位

跑通入门之后,值得花十分钟把顶层目录的分工看一遍,后面找示例就不用翻找。整体可以分成五类:

  • 教程类:tutorials/ 的编号教程、other-examples/ 的功能点合集,适合逐个啃读。
  • 专题类:rag-examples/ 专攻检索增强生成,agentic-tutorial/ 专攻多 Agent 工作流,customer-support-agent-example/ 是一个完整的综合案例。
  • 模型接入类:open-ai-examples、anthropic-examples、azure-open-ai-examples、google-ai-gemini-examples、vertex-ai-gemini-examples、mistral-ai-examples、bedrock-examples、ollama-examples、jlama-examples、ovh-ai-examples、watsonx-ai-examples 等,覆盖各家云端和本地推理模型,换供应商时来这里抄调用姿势。
  • 向量数据库类:qdrant、chroma、pgvector、milvus、redis、weaviate、neo4j、elasticsearch、opensearch、hibernate、infinispan、oracle、couchbase、google-alloydb、vespa、jvector、yugabytedb、s3-vectors 等每个目录都是一个 EmbeddingStore 的接入示例,RAG 落地到存储层时直接对号入座。
  • 框架集成类:spring-boot-example、spring-boot4-example、javafx-example、helidon-examples、quarkus-example、wildfly-example、jakartaee-microprofile-example、payara-micro-example,演示 LangChain4j 如何嵌进不同的 Java 应用形态。

另外 mcp-example/ 和 mcp-github-example/ 展示了通过 MCP 协议挂载外部工具服务(stdio 与 HTTP 两种方式),属于工具生态的延伸用法。

给 Java 系统接入 LLM:Spring Boot 与服务端框架的集成方式

如果你的目标是 Web 服务,首选看 spring-boot-example/。它的结构很标准:Assistant.java 是一个标注了 @AiService 的接口,AssistantConfiguration.java 负责装配 ChatModel 和 Memory Bean,AssistantController.java 暴露 REST 端点。同目录还有 StreamingAssistant 演示流式接口,lowlevel 包里的 ChatModelController 则展示了不经过 AI Service、直接操作 ChatModel 的写法。MyChatModelListener 演示了模型调用的可观测钩子。需要跟进 Spring Boot 4 的,可以对照 spring-boot4-example/,两者代码几乎同构。

桌面端和传统企业容器也有覆盖:

  • javafx-example/ 用 JavaFX 绑定把模型的流式回答实时渲染进界面,并保存完整对话记忆,是构建 LLM 桌面应用的现成骨架(运行需要带 JavaFX 的 JDK,比如 Zulu 21.fx)。
  • helidon-examples/ 分别提供 MicroProfile 和 SE 两种风格的咖啡点单助手,展示了把菜单 JSON 摄取成 RAG 语料库再回答点餐问题的微服务形态。
  • wildfly-example/ 通过 SseResource 把流式响应以 SSE 推给浏览器;quarkus-example/ 演示了带评估环节的 PR 分诊服务。

RAG 示例的四个层次:从检索到生成,再到十种进阶技巧

rag-examples/ 是按检索策略分层组织的,读的时候建议按目录顺序来:

_1_easy/ 用最少代码演示"文档切分—向量化—入库—检索—拼 prompt—生成"的完整闭环;_2_naive/ 在此基础上处理了真实语料(文档加载器、元数据)的摄入细节;_3_advanced/ 是精华,十个文件各演示一种进阶手段——查询压缩、查询路由、重排序、元数据过滤、跳过无意义检索、多检索器并行、联网搜索、返回来源标注、SQL 数据库检索器等;_4_low_level/ 则剥开 AI Service 这层封装,展示手动管理检索器和内容注入的全过程,适合想弄清底层发生什么的读者。

每个示例都复用同一个 shared/Assistant.java 接口(只有一个 answer 方法),差别全在实现侧的装配方式上。这个写法本身就是一个值得借鉴的设计:AI 能力被收敛成一个普通 Java 接口,方便作为 Bean 集成、也方便在测试里 mock。

Java 多 Agent 工作流的九级进阶:从单 Agent 到监督者编排

agentic-tutorial/ 是仓库里体系感最强的部分,围绕"招聘筛选简历"这个业务场景(领域模型见 Cv.java),从简单到复杂排了九级:基础 Agent(字符串输出与结构化输出两版)、顺序工作流(无类型与强类型两版)、循环工作流(带退出条件,进阶版含状态跟踪与失败处理)、并行工作流(多个评审 Agent 并发跑再聚合结果)、条件工作流(按评分分支,另有异步非阻塞版本)、组合工作流(嵌套复用子流程)、监督者编排(一个 supervisor 调度下属 Agent,含基础与高级两版)、非 AI Agent(确定性操作混入 Agent 体系),以及人机协同(人工校验环节、带记忆的目标导向聊天机器人)。模块自带的 README.md 列出了每个文件解决的具体问题,比如延迟优化、输出聚合、Agent 使用工具与 RAG 等,可以按图索骥。

工具调用、记忆管理与流式输出:other-examples 的完整演练

tutorials/ 只触及概念,other-examples/ 把每个功能点做成了可运行的完整版本,几组值得重点看:

记忆管理一共四种粒度的对照示例——ServiceWithMemoryExample.java(单个服务内维护对话上下文)、ServiceWithPersistentMemoryExample.java(跨会话持久化)、ServiceWithMemoryForEachUserExample.java(按用户隔离)、ServiceWithPersistentMemoryForEachUserExample.java(持久化加用户隔离的组合),四个文件并排读,MemoryId 机制就清楚了。

工具调用方面,ServiceWithToolsExample.java 演示静态工具集,ServiceWithDynamicToolsExample.java 演示运行时动态增删工具。流式输出有 StreamingExamples.java 这个专门文件,覆盖 StreamingChatModel 与回调处理器的各种组合,ServiceWithStreamingExample.java 则演示流式在 AI Service 接口上的用法。此外还有 ServiceWithAutoModerationExample.java(内容审核拦截)、ChatWithDocumentsExamples.java(文档问答)、ProxyExample.java(模型代理)等,都是生产系统里迟早会碰到的能力点。

综合案例:一个带记忆、工具和测试的客户支持 Agent

想一次性看到"AI Service + 工具 + 记忆 + RAG + 集成测试"如何协作,直接读 customer-support-agent-example/。它模拟租车公司的客服机器人:CustomerSupportAgent.java 用 @SystemMessage 定义了行为规则(查订单前必须确认客户信息、取消订单前必须二次确认、只回答业务相关问题),@MemoryId 参数实现了按会话隔离的记忆;BookingTools.java 提供查询与取消订单的工具方法,背后是 BookingService.java 这类普通业务代码。测试侧的 CustomerSupportAgentIT.java 用了 JudgeModelAssertions——用另一个 LLM 给 Agent 的回答打判定,这是给 LLM 应用写可回归测试的实用思路。azure-open-ai-customer-support-agent-example/ 提供了同一案例的 Azure OpenAI 版本,工具集多了一个"无法取消"异常的处理路径,可对比着看。

可观测性、打包与常见卡点

调试 LLM 应用绕不开日志。agentic-tutorial/src/main/java/util/log/ 提供了一套现成工具:BeautifulLogAppender 把模型 I/O 的美化日志输出到控制台,CustomLogging 与 LogLevels 控制详细程度,LogParser 负责解析——Agent 链路越长,这套东西越省事。

部署层面的两个要点:一是每个示例都能按 tutorials/README.md 说的流程打成 fat jar 或 GraalVM 原生镜像,容器化和冷启动优化都有路径;二是换模型供应商时优先参考对应模块(如 ollama-examples/ 演示了用 Testcontainers 拉起本地模型跑测试),避免把 API Key 和模型名硬编码散落在业务代码里。如果某个功能点没跑通,先确认 API Key 配置在对应模块的 ApiKeys 类里,再对照 open-ai-examples/ 里同功能的写法做减法排查,通常十分钟内能定位。

下一步建议:先跑通 _00_HelloWorld.java,然后按你的目标二选一——做 RAG 应用就从 _1_easy/ 起步,做多 Agent 系统就从 _1_basic_agent/ 起步,其余模块作为遇到问题时的查阅手册即可。

【免费下载链接】langchain4j-examples项目地址: https://gitcode.com/GitHub_Trending/la/langchain4j-examples

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询