Java开发者也能玩转AI:3小时从0到1打造你的第一个智能体(收藏版)

张开发
2026/4/16 10:13:49 15 分钟阅读

分享文章

Java开发者也能玩转AI:3小时从0到1打造你的第一个智能体(收藏版)
本文介绍了如何利用LangChain4j和Spring AI等框架让Java开发者也能在3小时内从零开始构建AI智能体。内容涵盖了环境准备、创建项目、编写第一个Agent、让Agent调用外部工具、构建任务执行Agent以及使用记忆功能等关键步骤并提供了详细的代码示例和测试验证方法。通过学习本文你将能够用Java编写AI智能体实现对话、查询、执行任务等核心功能为AI开发打开一扇新的大门。2026 年AI 智能体开发不再是 Python 的专利。LangChain4j、Spring AI 等框架已经成熟Java 开发者也能快速构建 AI 智能体。这个教程里的所有代码都经过验证依赖版本明确环境配置详细还附带测试验证步骤。学完后你能用 Java 编写 AI 智能体让 Agent 调用外部工具实现对话、查询、执行任务一、环境准备1.1 必需环境# Java 版本要求 17java -version# Maven 版本要求 3.6mvn -version1.2 API Key 准备本教程使用 OpenAI API也可替换为其他模型。获取 OpenAI API Key访问 https://platform.openai.com/api-keys[1]创建 API Key保存 Key格式sk-xxxxxxxx国内替代方案通义千问https://dashscope.console.aliyun.com/[2]文心一言https://cloud.baidu.com/product/wenxinworkshop[3]Kimihttps://platform.moonshot.cn/[4]二、创建项目2.1 初始化 Maven 项目# 创建项目目录mkdir java-agent-tutorialcd java-agent-tutorial# 初始化 Maven 项目mvn archetype:generate \ -DgroupIdcom.example \ -DartifactIdjava-agent-tutorial \ -DarchetypeArtifactIdmaven-archetype-quickstart \ -DarchetypeVersion1.4 \ -DinteractiveModefalse2.2 配置 pom.xml完整的pom.xml配置?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcom.example/groupId artifactIdjava-agent-tutorial/artifactId version1.0-SNAPSHOT/version packagingjar/packaging properties maven.compiler.source17/maven.compiler.source maven.compiler.target17/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding langchain4j.version0.35.0/langchain4j.version /properties dependencies !-- LangChain4j 核心依赖 -- dependency groupIddev.langchain4j/groupId artifactIdlangchain4j/artifactId version${langchain4j.version}/version /dependency !-- OpenAI 集成 -- dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-open-ai/artifactId version${langchain4j.version}/version /dependency !-- 日志 -- dependency groupIdorg.slf4j/groupId artifactIdslf4j-simple/artifactId version2.0.9/version /dependency !-- JUnit 测试 -- dependency groupIdorg.junit.jupiter/groupId artifactIdjunit-jupiter/artifactId version5.10.0/version scopetest/scope /dependency /dependencies build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.11.0/version configuration source17/source target17/target /configuration /plugin /plugins /build/project验证依赖下载mvn dependency:resolve看到 BUILD SUCCESS 即可继续。三、第一个 AgentHello World3.1 编写第一个 Agentsrc/main/java/com/example/HelloAgent.javapackage com.example;import dev.langchain4j.model.chat.ChatLanguageModel;import dev.langchain4j.model.openai.OpenAiChatModel;import dev.langchain4j.service.AiServices;importstatic dev.langchain4j.model.openai.OpenAiChatModelName.GPT_3_5_TURBO;/** * 第一个 Agent 示例简单的对话助手 */public class HelloAgent { // 定义 Agent 接口 interfaceAssistant { String chat(String userMessage); } public static void main(String[] args) { // 1. 创建聊天模型 ChatLanguage Model model OpenAiChatModel.builder() .apiKey(OPENAI_API_KEY) .modelName(OPENAI_MODEL_NAME) .build(); // 2. 创建 AI 服务 Assistant assistant AiServices.builder(Assistant.class) .chatLanguageModel(model) .build(); // 3. 与 Agent 对话 Stringresponse assistant.chat(你好请用一句话介绍你自己); System.out.println(Agent: response); }}3.2 运行测试# 编译mvn clean compile# 运行mvn exec:java -Dexec.mainClasscom.example.HelloAgent预期输出四、让 Agent 调用工具Agent 的核心能力是调用工具。LangChain4j 通过Tool注解实现这一功能。4.1 创建天气查询工具src/main/java/com/example/WeatherTool.javapackage com.example;import dev.langchain4j.agent.tool.Tool;/** * 天气查询工具 * 模拟天气 API 调用 */publicclassWeatherTool { Tool(查询指定城市的天气) public String getWeather(String city) { // 实际项目中调用天气 API // 这里模拟返回 returnswitch (city.toLowerCase()) { case北京 - 北京晴温度25°C湿度40%; case上海 - 上海小雨温度22°C湿度70%; case广州 - 广州多云温度28°C湿度60%; case深圳 - 深圳晴温度29°C湿度55%; default - city 天气数据暂不可用; }; }}4.2 创建计算器工具src/main/java/com/example/CalculatorTool.javapackage com.example;import dev.langchain4j.agent.tool.Tool;/** * 计算器工具 */publicclassCalculatorTool { Tool(两个数相加) publicdoubleadd(double a, double b) { return a b; } Tool(两个数相减) publicdoublesubtract(double a, double b) { return a - b; } Tool(两个数相乘) publicdoublemultiply(double a, double b) { return a * b; } Tool(两个数相除) publicdoubledivide(double a, double b) { if (b 0) { return Double.NaN; } return a / b; }}4.3 集成工具到 Agentsrc/main/java/com/example/ToolAgent.javapackage com.example;import dev.langchain4j.model.chat.ChatLanguageModel;import dev.langchain4j.model.openai.OpenAiChatModel;import dev.langchain4j.service.AiServices;importstatic dev.langchain4j.model.openai.OpenAiChatModelName.GPT_3_5_TURBO;/** * 带工具的 Agent 示例 */publicclassToolAgent { // 定义 Agent 接口 interfaceAssistant { String chat(String userMessage); } publicstaticvoidmain(String[] args) { // 1. 创建聊天模型 ChatLanguage Model modelOpenAiChatModel.builder() .build(); // 2. 创建工具实例 WeatherTool weatherTool new WeatherTool(); CalculatorTool calculatorTool new CalculatorTool(); // 3. 创建 AI 服务注册工具 Assistant assistant AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(weatherTool, calculatorTool) .build(); // 4. 测试对话 System.out.println( 测试天气查询 ); String response1 assistant.chat(北京今天天气怎么样); System.out.println(Agent: response1); System.out.println(\n 测试计算 ); String response2 assistant.chat(123 乘以 456 等于多少); System.out.println(Agent: response2); System.out.println(\n 测试混合任务 ); String response3 assistant.chat(上海和广州的天气哪个更好); System.out.println(Agent: response3); }}4.4 运行测试mvn exec:java -Dexec.mainClasscom.example.ToolAgent预期输出 测试天气查询 Agent: 北京今天天气晴朗温度 25°C湿度 40%适合外出活动。 测试计算 Agent: 123 乘以 456 等于 56088。 测试混合任务 Agent: 根据天气数据- 上海小雨22°C湿度 70%- 广州多云28°C湿度 60%广州的天气更好温度适宜且没有降雨。到这里你已经掌握了如何让 Agent 调用工具。接下来我们构建一个更实用的任务执行 Agent。五、实战构建任务执行 Agent5.1 创建文件操作工具src/main/java/com/example/FileTool.javapackage com.example;import dev.langchain4j.agent.tool.Tool;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.List;import java.util.stream.Collectors;/** * 文件操作工具 */publicclassFileTool { privatefinalStringworkingDir System.getProperty(java.io.tmpdir); Tool(读取文件内容) public String readFile(String filename) { try { Pathpath Paths.get(workingDir, filename); return Files.readString(path); } catch (IOException e) { return错误无法读取文件 - e.getMessage(); } } Tool(写入文件内容) public String writeFile(String filename, String content) { try { Pathpath Paths.get(workingDir, filename); Files.writeString(path, content); return成功文件已写入 path.toAbsolutePath(); } catch (IOException e) { return错误无法写入文件 - e.getMessage(); } } Tool(列出目录中的文件) public String listFiles() { try { Pathpath Paths.get(workingDir); return Files.list(path) .filter(Files::isRegularFile) .map(p - p.getFileName().toString()) .limit(20) .collect(Collectors.joining(\n)); } catch (IOException e) { return错误无法列出文件 - e.getMessage(); } }}5.2 创建任务执行 Agentsrc/main/java/com/example/TaskAgent.javapackage com.example;import dev.langchain4j.model.chat.ChatLanguageModel;import dev.langchain4j.model.openai.OpenAiChatModel;import dev.langchain4j.service.AiServices;import static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_3_5_TURBO;/** * 任务执行 Agent */public class TaskAgent { interface Assistant { String chat(String userMessage); } publicstaticvoidmain(String[] args) { // 1. 创建模型 .build(); // 2. 创建工具 FileTool fileTool new FileTool(); CalculatorTool calculatorTool new CalculatorTool(); // 3. 创建 Agent Assistant assistant AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(fileTool, calculatorTool) .build(); // 4. 测试任务 System.out.println( 测试 1创建文件 ); String response1 assistant.chat( 创建一个文件 test.txt内容是Hello, AI Agent! ); System.out.println(Agent: response1); System.out.println(\n 测试 2读取文件 ); String response2 assistant.chat(读取 test.txt 的内容); System.out.println(Agent: response2); System.out.println(\n 测试 3计算并保存 ); String response3 assistant.chat( 计算 256 乘以 128 的结果保存到 result.txt ); System.out.println(Agent: response3); }}5.3 运行测试mvn exec:java -Dexec.mainClasscom.example.TaskAgent预期输出 测试 1创建文件 Agent: 已成功创建文件 test.txt内容为Hello, AI Agent! 测试 2读取文件 Agent: test.txt 的内容是Hello, AI Agent! 测试 3计算并保存 Agent: 256 乘以 128 等于 32768结果已保存到 result.txt验证生成的文件# 查看临时目录ls -la /tmp/test.txt /tmp/result.txt# 查看内容cat /tmp/test.txtcat /tmp/result.txt六、使用记忆功能前面的 Agent 每次对话都是独立的无法记住之前的内容。加上记忆功能后Agent 就能进行多轮对话。6.1 创建带记忆的 Agentsrc/main/java/com/example/MemoryAgent.javapackage com.example;import dev.langchain4j.memory.ChatMemory;import dev.langchain4j.memory.chat.MessageWindowChatMemory;import dev.langchain4j.model.chat.ChatLanguageModel;import dev.langchain4j.model.openai.OpenAiChatModel;import dev.langchain4j.service.AiServices;importstatic dev.langchain4j.model.openai.OpenAiChatModelName.GPT_3_5_TURBO;/** * 带记忆功能的 Agent */publicclassMemoryAgent { interfaceAssistant { String chat(String userMessage); } publicstaticvoidmain(String[] args) { // 1. 创建模型 ChatLanguageModelmodel OpenAiChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .modelName(GPT_3_5_TURBO) .build(); // 2. 创建聊天记忆保留最近 10 条消息 ChatMemorychatMemory MessageWindowChatMemory.withMaxMessages(10); // 3. 创建 Agent启用记忆 Assistantassistant AiServices.builder(Assistant.class) .chatLanguageModel(model) .chatMemory(chatMemory) .build(); // 4. 多轮对话测试 System.out.println( 第一轮 ); Stringresponse1 assistant.chat(我叫小明今年 25 岁); System.out.println(Agent: response1); System.out.println(\n 第二轮 ); Stringresponse2 assistant.chat(我喜欢编程); System.out.println(Agent: response2); System.out.println(\n 第三轮测试记忆); Stringresponse3 assistant.chat(我叫什么名字今年多大); System.out.println(Agent: response3); }}6.2 运行测试mvn exec:java -Dexec.mainClasscom.example.MemoryAgent预期输出 第一轮 Agent: 你好小明很高兴认识你25 岁是个很好的年纪。 第二轮 Agent: 编程是个很棒的爱好你平时喜欢用什么编程语言 第三轮测试记忆Agent: 你叫小明今年 25 岁。七、常见问题7.1 API Key 无效错误信息401 Unauthorized - Invalid API key解决方案检查环境变量是否正确设置echo $OPENAI_API_KEY确保没有多余空格正确格式export OPENAI_API_KEYsk-xxx7.2 依赖下载失败错误信息Could not resolve dependencies解决方案清理 Maven 缓存后重新下载rm -rf ~/.m2/repository/dev/langchain4jmvn clean dependency:resolve -U7.3 工具调用失败错误信息Tool execution failed解决方案检查Tool注解是否正确确保工具方法是public的检查参数类型是否匹配7.4 使用国内模型替换为通义千问!-- pom.xml 添加依赖 --dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-dashscope/artifactId version0.35.0/version/dependency ​plaintext // Java 代码替换模型import dev.langchain4j.model.dashscope.QwenChatModel;ChatLanguageModel model QwenChatModel.builder() .apiKey(System.getenv(DASHSCOPE_API_KEY)) .modelName(qwen-plus) .build();八、进阶学习8.1 推荐资源LangChain4j 官方文档https://docs.langchain4j.dev/[5]GitHub 仓库https://github.com/langchain4j/langchain4j[6]示例项目https://github.com/langchain4j/langchain4j-examples[7]8.2 进阶主题RAG检索增强生成连接向量数据库实现知识库问答多 Agent 协作多个 Agent 分工合作实现复杂任务Agent 持久化保存对话历史跨会话记忆部署上线打包成 Docker 镜像部署到云服务器总结Java 开发 AI 智能体的门槛已经很低LangChain4j 等框架让 Java 开发者能快速上手。关键是动手实践。建议的学习路径跑通本教程所有示例修改工具类接入真实 API构建自己的 Agent 应用遇到问题时检查 Java 版本17确认 API Key 有效查看 LangChain4j 官方文档那么如何学习大模型 AI 对于刚入门大模型的小白或是想转型/进阶的程序员来说最头疼的就是找不到系统、全面的学习资源要么零散不成体系要么收费高昂白白浪费时间走弯路。今天就给大家精心整理了一份全面且免费的AI大模型学习资源包覆盖从入门到实战、从理论到面试的全流程所有资料均已整理完毕免费分享给各位核心包含AI大模型全套系统化学习路线图小白可直接照做、精品学习书籍电子文档、干货视频教程、可直接上手的实战项目源码、2026大厂面试真题题库一站式解决你的学习痛点不用再到处搜集拼凑扫码免费领取全部内容1、大模型系统化学习路线学习大模型方向比努力更重要很多小白入门就陷入“盲目看视频、乱刷资料”的误区最后越学越懵。这里给大家整理的这份学习路线是结合2026年大模型行业趋势和新手学习规律设计的最科学、最系统从零基础到精通每一步都有明确指引帮你节省80%的无效学习时间少走弯路、高效进阶。2、大模型学习书籍文档理论是实战的根基尤其是对于程序员来说想要真正吃透大模型原理离不开优质的书籍和文档支撑。本次整理的书籍和电子文档均由大模型领域顶尖专家、大厂技术大咖撰写涵盖基础入门、核心原理、进阶技巧等内容语言通俗易懂既有理论深度又贴合实战场景小白能看懂程序员能进阶为后续实战和面试打下坚实基础。3、AI大模型最新行业报告无论是小白了解行业、规划学习方向还是程序员转型、拓展业务边界都需要紧跟行业趋势。本次整理的2026最新大模型行业报告针对互联网、金融、医疗、工业等多个主流行业系统调研了大模型的应用现状、发展趋势、现存问题及潜在机会帮你清晰了解哪些行业更适合大模型落地哪些技术方向值得重点深耕避免盲目学习精准对接行业需求。值得一提的是报告还包含了多模态、AI Agent等前沿方向的发展分析助力大家把握技术风口。4、大模型项目实战配套源码对于程序员和想落地能力的小白来说“光说不练假把式”只有动手实战才能真正巩固所学知识将理论转化为实际能力。本次整理的实战项目涵盖基础应用、进阶开发、多场景落地等类型每个项目都附带完整源码和详细教程从简单的ChatPDF搭建到复杂的RAG系统开发、大模型部署难度由浅入深小白可逐步上手程序员可直接参考优化既能练手提升技术又能丰富简历为求职和职业发展加分。5、大模型大厂面试真题2026年大模型面试已从单纯考察原理转向侧重技术落地和业务结合的综合考察很多程序员和新手因为缺乏针对性准备明明技术不错却在面试中失利。为此我精心整理了各大厂最新大模型面试真题题库涵盖基础原理、Prompt工程、RAG系统、模型微调、部署优化等核心考点不仅有真题还附带详细解题思路和行业踩坑经验帮你精准把握面试重点提前做好准备面试时从容应对、游刃有余。6、四阶段精细化学习规划附时间节点可直接照做结合上述资源给大家整理了一份可直接落地的四阶段学习规划总时长约2个月小白可循序渐进程序员可根据自身基础调整节奏高效掌握大模型核心能力快速实现从“入门”到“能落地、能面试”的跨越。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容3、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多文章