☰
如何在Java项目里用LangChain4j接上AI对话与智能体
2026/10/23 8:34:27 网站建设 项目流程

如何在Java项目里用LangChain4j接上AI对话与智能体

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

想给一个现成的 Java 服务加上"AI 助手",最先卡住你的往往不是提示词,而是供应商碎片化:OpenAI、Gemini、本地的 Ollama,各家 SDK 写法不一,代码一改供应商就得重写。langchain4j-examples 是 LangChain4j 库的官方示例集,把最小对话调用、多智能体编排、RAG(检索增强生成:先从文档库里检索,再让大模型基于检索结果作答)拆成一个个可以直接运行的 Java 类。仓库可以这样克隆:

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

Java 调 LLM 的第一段对话

tutorials/ 模块从最朴素的调用开始,_00_HelloWorld.java全部逻辑就是几行 builder:

ChatModel model = OpenAiChatModel.builder().apiKey(key).modelName(GPT_4_O_MINI).build();

之后model.chat("Say Hello World")即可拿到回复。同目录还按编号覆盖了模型参数、流式输出、少样本提示、工具调用等主题。这里的关键点是:换用 Gemini、Azure 或 Ollama 时,只有 builder 这段要动,其余业务代码不变——各家供应商都被收敛到同一个ChatModel接口后面,这是整个示例集想让你先建立的认知。

把对话、工具、记忆包装成 AI 服务接口

裸调chat()的表达力有限。LangChain4j 的AiServices允许你用 Java 接口声明 AI 能力,由框架在运行时填充实现。other-examples/下的ServiceWithToolsExample.java给出了最短路径:

Assistant a = AiServices.builder(Assistant.class).chatModel(model).tools(new Calculator()).build();

Calculator的方法上标注@Tool后,模型在对话中会自己判断何时调用这些方法。customer-support-agent-example/模块把它做成了完整服务:@AiService标注的CustomerSupportAgent接口,配合@MemoryId隔离不同用户的对话历史,再叠加 Spring Boot 的依赖注入,就是一个能查预订、取消订单的租车客服机器人,接口上的@SystemMessage直接写了业务规则。同样的思路在javafx-example/模块里被搬进了桌面窗口:

让多步智能体工作流跑起来

单轮对话撑不起"先生成简历、再让多个评审打分、最后给出录用建议"这类业务。agentic-tutorial/是一个围绕简历生成与评审场景的完整智能体教程,单个智能体只需一行:

CvGenerator agent = AgenticServices.agentBuilder(CvGenerator.class).chatModel(model).build();

模块内的 README 按编号排布,从基础智能体一路讲到 supervisor 编排,覆盖六类拓扑:顺序(sequenceBuilder)、带退出条件的循环、并行(parallelBuilder)、条件分支、组合嵌套、人类参与。以并行为例,三个评审智能体(HR、经理、团队成员视角)同时读同一份简历:

var review = AgenticServices.parallelBuilder().subAgents(hr, manager, team).executor(pool).build();

output回调里从共享状态读出三份CvReview,平均出总分并合并评语。流程中需要人来拍板时,humanInTheLoopBuilder()可以像普通步骤一样插进工作流,阻塞等人工确认后继续——这在录用决策这类场景里基本是必选项。

修复文档问答里的追问问题

第一版 RAG 常在同一个地方翻车:用户追问"他是什么时候出生的?",这句话里没有实体,直接拿去做向量检索大概率检索不到。rag-examples/的_3_advanced/目录从"查询压缩"讲起:

QueryTransformer qt = new CompressingQueryTransformer(chatModel);

CompressingQueryTransformer会先把当前问题和上文对话压缩成一个自包含的查询(改写为"John Doe 何时出生"之类),再交给EmbeddingStoreContentRetriever检索。同目录还有重排序、元数据过滤、多个检索器组合等技巧,每种技巧都是独立示例类,可以按需单独运行;向量库则能换成 pgvector、Chroma、Qdrant 等*-example模块里演示的任意一种。

从单个示例到可运行服务

上手顺序可以直接跟着模块走:先在tutorials/里跑通一类供应商的模型调用,确认 key 和网络没问题;再到other-examples/看工具调用如何被触发;业务涉及多步任务时,按数字顺序读agentic-tutorial/。整个仓库是 Maven 多模块工程,每个模块有独立的pom.xml,只取某个场景时单独打开对应模块即可,不必整仓构建。

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

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

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

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

立即咨询