当前位置: 首页 > article >正文

10分钟上手!Java开发者也能轻松调用AI,Spring AI Alibaba手把手教你构建智能体!

介绍还在羡慕Python开发者能轻松调用AISpring AI Alibaba让Java也能10分钟构建一个能“思考”和“行动”的智能体这次手把手教系统Windows jdk版本17 maven3.8 模型API Key阿里云百炼平台步骤一环境准备查看jdk版本java -version查看Maven版本mvn -version获取API Key阿里云百炼平台https://bailian.console.aliyun.com/步骤二创建项目并添加依赖在pom.xml中添加以下依赖dependencies !-- Spring AI Alibaba Agent框架核心 -- dependency groupIdcom.alibaba.cloud.ai/groupId artifactIdspring-ai-alibaba-agent-framework/artifactId version1.1.2.0/version /dependency !-- DashScope模型支持通义千问 -- dependency groupIdcom.alibaba.cloud.ai/groupId artifactIdspring-ai-alibaba-starter-dashscope/artifactId version1.1.2.0/version /dependency /dependencies刷新Maven依赖等待下载完成步骤三配置API Keyapplication.ymlspring: ai: dashscope: api-key: ${AI_DASHSCOPE_API_KEY}步骤四入门级Agent创建一个Java类 WeatherAgentDemo复制以下代码import com.alibaba.cloud.ai.dashscope.api.DashScopeApi; import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel; import com.alibaba.cloud.ai.graph.agent.ReactAgent; import org.springframework.ai.chat.model.ChatModel; public class WeatherAgentDemo { public static void main(String[] args) { // 1. 创建模型实例 DashScopeApi dashScopeApi DashScopeApi.builder() .apiKey(System.getenv(AI_DASHSCOPE_API_KEY)) .build(); ChatModel chatModel DashScopeChatModel.builder() .dashScopeApi(dashScopeApi) .build(); // 2. 创建Agent ReactAgent agent ReactAgent.builder() .name(weather_agent) .model(chatModel) .instruction(你是一个有帮助的天气助手) .build(); // 3. 运行Agent String response agent.call(杭州今天天气怎么样); System.out.println(response); } }步骤五构建一个真实的智能体入门级Agent只能回答问题现在我们给它加上工具调用和对话记忆让它变得更聪明。[1]定义系统提示词可根据需求修改String SYSTEM_PROMPT 你是一个智能的天气预报专家。 你有两个工具可用 - get_weather_for_location查询指定城市的天气 - get_user_location获取用户所在位置 当用户询问天气时确保你知道地点。 如果你能从问题中推断出是指用户当前位置 就使用 get_user_location 工具来获取位置。 ;[2]创建工具让Agent能调用import org.springframework.ai.tool.ToolCallback; import org.springframework.ai.tool.function.FunctionToolCallback; import java.util.function.BiFunction; // 天气查询工具 public class WeatherTool implements BiFunctionString, ToolContext, String { Override public String apply(String city, ToolContext context) { return city 今天阳光明媚适合讲个‘sunny’笑话; } } // 用户位置工具从上下文获取用户ID public class UserLocationTool implements BiFunctionString, ToolContext, String { Override public String apply(String query, ToolContext context) { // 实际可从数据库或请求头获取 return 杭州; } } // 包装成ToolCallback ToolCallback weatherTool FunctionToolCallback.builder(get_weather, new WeatherTool()) .description(查询指定城市的天气) .inputType(String.class) .build(); ToolCallback locationTool FunctionToolCallback.builder(get_user_location, new UserLocationTool()) .description(获取用户所在位置) .inputType(String.class) .build();[3]配置模型参数并添加记忆import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions; import com.alibaba.cloud.ai.graph.agent.ReactAgent; import com.alibaba.cloud.ai.graph.checkpoint.MemorySaver; ChatModel chatModel DashScopeChatModel.builder() .dashScopeApi(dashScopeApi) .defaultOptions(DashScopeChatOptions.builder() .withModel(DashScopeChatModel.DEFAULT_MODEL_NAME) .withTemperature(0.7) // 让回复更生动 .withMaxToken(500) .build()) .build(); ReactAgent agent ReactAgent.builder() .name(weather_pun_agent) .model(chatModel) .systemPrompt(SYSTEM_PROMPT) .tools(weatherTool, locationTool) .saver(new MemorySaver()) // 关键开启记忆 .build();[4]运行并测试import com.alibaba.cloud.ai.graph.RunnableConfig; // 使用同一个threadId保持对话记忆 String threadId user_001; RunnableConfig config RunnableConfig.builder() .threadId(threadId) .build(); // 第一次提问 String response1 agent.call(今天天气怎么样, config); System.out.println(response1); // 输出杭州今天阳光明媚是个‘sunny’的好日子... // 第二次提问无需重复地点 String response2 agent.call(那明天呢, config); System.out.println(response2); // 输出明天嘛杭州依旧‘shine’个不停记得带太阳镜步骤六进阶配置与调试[1]限制最大迭代次数防止死循环import com.alibaba.cloud.ai.graph.agent.hook.modelcalllimit.ModelCallLimitHook; ModelCallLimitHook hook ModelCallLimitHook.builder() .runLimit(5) // 最多调用5次模型 .exitBehavior(ModelCallLimitHook.ExitBehavior.ERROR) .build(); ReactAgent agent ReactAgent.builder() // ... 其他配置 .hooks(hook) .build();[2]查看完整运行状态import com.alibaba.cloud.ai.graph.OverAllState; import java.util.Optional; OptionalOverAllState state agent.invoke(讲个笑话, config); if (state.isPresent()) { // 获取所有消息历史 ListMessage messages state.get().value(messages, new ArrayList()); System.out.println(对话轮数 messages.size()); }常见问题Q提示API Key无效 A请检查环境变量是否正确或直接在代码中设置测试Q模型调用超时 A检查网络是否能访问 dashscope.aliyuncs.comQ如何切换成OpenAI模型 A更换依赖为 spring-ai-starter-model-openai并修改模型配置至此使用Spring AI Alibaba搭建Agent基础教程结束啦~AI行业迎来前所未有的爆发式增长从DeepSeek百万年薪招聘AI研究员到百度、阿里、腾讯等大厂疯狂布局AI Agent再到国家政策大力扶持数字经济和AI人才培养所有信号都在告诉我们AI的黄金十年真的来了在行业火爆之下AI人才争夺战也日趋白热化其就业前景一片蓝海我给大家准备了一份全套的《AI大模型零基础入门进阶学习资源包》包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。有需要的小伙伴可以V扫描下方二维码免费领取人才缺口巨大人力资源社会保障部有关报告显示据测算当前****我国人工智能人才缺口超过500万****供求比例达1∶10。脉脉最新数据也显示AI新发岗位量较去年初暴增29倍超1000家AI企业释放7.2万岗位……单拿今年的秋招来说各互联网大厂释放出来的招聘信息中我们就能感受到AI浪潮比如百度90%的技术岗都与AI相关就业薪资超高在旺盛的市场需求下AI岗位不仅招聘量大薪资待遇更是“一骑绝尘”。企业为抢AI核心人才薪资给的非常慷慨过去一年懂AI的人才普遍涨薪40%脉脉高聘发布的《2025年度人才迁徙报告》显示在2025年1月-10月的高薪岗位Top20排行中AI相关岗位占了绝大多数并且平均薪资月薪都超过6w在去年的秋招中小红书给算法相关岗位的薪资为50k起字节开出228万元的超高年薪据《2025年秋季校园招聘白皮书》AI算法类平均年薪达36.9万遥遥领先其他行业总结来说当前人工智能岗位需求多薪资高前景好。在职场里选对赛道就能赢在起跑线。抓住AI风口轻松实现高薪就业但现实却是仍有很多同学不知道如何抓住AI机遇会遇到很多就业难题比如❌ 技术过时只会CRUD的开发者在AI浪潮中沦为“职场裸奔者”❌ 薪资停滞初级岗位内卷到白菜价传统开发3年经验薪资涨幅不足15%❌ 转型无门想学AI却找不到系统路径83%自学党中途放弃。他们的就业难题解决问题的关键在于不仅要选对赛道更要跟对老师我给大家准备了一份全套的《AI大模型零基础入门进阶学习资源包》包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。有需要的小伙伴可以V扫描下方二维码免费领取​

相关文章:

10分钟上手!Java开发者也能轻松调用AI,Spring AI Alibaba手把手教你构建智能体!

介绍:还在羡慕Python开发者能轻松调用AI?Spring AI Alibaba让Java也能10分钟构建一个能“思考”和“行动”的智能体,这次手把手教! 系统:Windows jdk版本:17 maven:3.8 模型API Key&#xff1a…...

5分钟搭建专业级缠论可视化分析平台:从零到实战的完整指南

5分钟搭建专业级缠论可视化分析平台:从零到实战的完整指南 【免费下载链接】chanvis 基于TradingView本地SDK的可视化前后端代码,适用于缠论量化研究,和其他的基于几何交易的量化研究。 缠论量化 摩尔缠论 缠论可视化 TradingView TV-SDK 项…...

LeagueAkari终极教程:英雄联盟玩家的智能辅助工具完全指南

LeagueAkari终极教程:英雄联盟玩家的智能辅助工具完全指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit LeagueAkar…...

AsrTools全攻略:革新语音转文字效率的智能解决方案

AsrTools全攻略:革新语音转文字效率的智能解决方案 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate tex…...

从零部署RK3588 MPP:硬编解码环境搭建与核心工具解析

1. RK3588 MPP硬编解码环境搭建全流程 第一次在ArmSoM-W3开发板上折腾RK3588的MPP硬编解码环境时,我踩了不少坑。这里把完整搭建过程拆解成可复现的步骤,用最直白的语言分享给各位开发者朋友。 MPP(Media Process Platform)是瑞芯…...

开源项目 Git 贡献全流程拆解:从入门到精通

好的,这是一篇关于开源项目 Git 贡献全流程拆解的技术文章大纲:开源项目 Git 贡献全流程拆解:从入门到精通引言开源精神与协作的重要性。Git 作为分布式版本控制系统在开源世界的核心地位。明确目标:清晰、完整地拆解向开源项目贡…...

GraphRAG:当 RAG 遇上知识图谱,信息检索从此不一样了

假设你把公司过去三年的所有周报、会议纪要、项目文档丢进一个 RAG 系统,然后问它:“过去一年里,研发团队和产品团队之间的主要分歧有哪些?”——大概率你会得到几段看起来相关的文字片段,但拼不出一个完整的答案。 这…...

Spring Boot 3.1 新特性解析与实践

Spring Boot 3.1 新特性解析与实践 前言 核心新特性 1. 虚拟线程支持 Spring Boot 3.1 基于 Java 21,正式支持虚拟线程(Virtual Threads): Configuration public class ThreadConfig {Beanpublic ExecutorTaskExecutor taskExecut…...

AudioSeal效果展示:实测音频隐形水印,听不出区别但能精准检测

AudioSeal效果展示:实测音频隐形水印,听不出区别但能精准检测 1. 音频水印技术概述 1.1 什么是音频隐形水印 音频隐形水印是一种将数字标识信息嵌入到音频信号中的技术,这些信息对人类听觉系统几乎不可感知,但可以通过专用算法…...

Meixiong Niannian与SpringBoot微服务架构

Meixiong Niannian与SpringBoot微服务架构 1. 引言 在当今快速发展的AI应用领域,如何将强大的画图引擎无缝集成到企业级系统中是一个关键挑战。Meixiong Niannian作为一款高性能的AI画图引擎,能够生成高质量的图像内容,而SpringBoot微服务架…...

SpringBoot 接口全维度性能优化指南

文章目录: 前言 一、背景 1.1 为什么必须做 SpringBoot 接口优化? 1.2 接口优化的核心目标 1.3 本文适用范围 二、核心原理 2.1 接口请求全流程(瓶颈定位核心) 2.2 核心优化原理总览 2.3 优化优先级(生产环境…...

泛微Ecology流程数据查询避坑指南:workflow_currentoperator表里isremark字段到底怎么用?

泛微Ecology流程数据查询实战:解密workflow_currentoperator表关键字段 在泛微Ecology系统的二次开发过程中,流程数据的精准查询往往是开发者面临的第一道门槛。特别是当需要对接第三方系统或构建定制化报表时,对workflow_currentoperator表中…...

统计建模大赛的评分标准

2026年统计建模大赛正在进行中,相关文章: 统计建模大赛去哪找数据? 2026年统计建模大赛AI工具使用规范 2026年统计建模大赛选题思路——数字经济统计监测体系研究 我在公开课以及以前的文章中经常强调,数模竞赛不是考试&#…...

从乱码到清晰:一位开发者与iText7中文PDF的三年斗争史

从乱码到清晰:一位开发者与iText7中文PDF的三年斗争史 【免费下载链接】itext7-chinese-font 项目地址: https://gitcode.com/gh_mirrors/it/itext7-chinese-font "为什么我的PDF中文又变成方块了?" 这可能是每个Java开发者在处理中文P…...

不止于读写:在HC32F460上为FATFS和SDIO驱动添加调试信息与性能测试

HC32F460深度优化:FATFS与SDIO驱动的调试技巧与性能压测实战 当你的HC32F460开发板已经能够读取SD卡文件时,真正的挑战才刚刚开始。那些隐藏在初始化失败、数据错位、速度瓶颈背后的秘密,往往需要更精密的调试手段才能揭开。本文将带你超越基…...

杭州做生成式引擎优化的服务公司有哪些?

杭州做生成式引擎优化的服务公司有哪些? 一、行业背景:GEO已成为AI时代企业增长的核心基建 生成式引擎优化(GEO,Generative Engine Optimization),是针对大语言模型的检索逻辑与回答规则,优化企…...

LeetCode 102. 二叉树的层序遍历:从理论到实践的完整剖析

LeetCode 102. 二叉树的层序遍历:从理论到实践的完整剖析 问题描述 给你二叉树的根节点 root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,nu…...

【2026最新】DirectX Repair修复工具,轻松解决 DirectX 报错、DLL 缺失与游戏闪退问题

游戏打不开、软件报错?别急着重装系统,可能是DirectX和DLL在作怪 “缺少d3dx9_43.dll”、“无法找到X3DAudio1_7.dll”、“应用程序无法启动。。。。。需要的是一个DirectX修复工具。 玩游戏或运行 3D 图形软件时,DirectX 报错是一类常见但又…...

电脑c盘变红了怎么清理?C盘清理工具与方法

电脑c盘变红了怎么清理?问题不难解决,关键是选对方法工具!下面介绍实用的清理C盘方法,便于你解决C盘变红的问题哦! 关于C盘清理工具,给大家安排一款针对C盘爆满的清理神器---Windows - Cleaner&#xff0c…...

系统提示msvcp140.dll丢失vcruntime140.dll丢失msvcr100.dll丢失mfc140u.dll丢失 怎么办?其他DLL错误修复

游戏文件打不开?DLL文件缺失?电脑崩溃?DirectX 轻松修复!游戏运行库修复文件缺失软件必备安装工具, 这个DirectX 运行库修复工具,一键完成dll缺失修复、解决99.99%程序故障、闪退、卡顿等常见问题,轻松解决…...

OpenClaw镜像体验:无需本地安装快速测试Qwen3.5-4B-Claude

OpenClaw镜像体验:无需本地安装快速测试Qwen3.5-4B-Claude 1. 为什么选择云端镜像方案 上周我在本地尝试部署OpenClaw时,被Node版本冲突和系统权限问题折磨了整整两天。当看到星图平台提供预装好的OpenClawQwen3.5-4B-Claude镜像时,立刻决定…...

OpenClaw内存优化:nanobot在4GB设备运行大型文档处理

OpenClaw内存优化:nanobot在4GB设备运行大型文档处理 1. 当4GB内存遇上100页PDF:一个不可能完成的任务? 上周我接到一个需求:需要在本地处理一份100页的技术文档PDF,提取关键信息并生成摘要。我的工作机是一台老旧的…...

从零到一实战:基于快马平台快速开发企业级jiyutrainer在线评测系统

今天想和大家分享一个很实用的开发经验——如何快速搭建一个企业级的在线编程评测系统。最近正好有个朋友想做一个类似jiyutrainer的编程练习平台,我就用InsCode(快马)平台试了试,效果出乎意料的好。 项目需求分析 首先明确我们需要实现的核心功能&#…...

Qwen3字幕系统Linux部署指南:从安装到性能调优

Qwen3字幕系统Linux部署指南:从安装到性能调优 为视频内容自动生成精准字幕的时代已经到来 还记得手动为视频添加字幕的痛苦经历吗?一遍遍听写、校对、调整时间轴,几分钟的视频往往需要花费数小时。现在,基于Qwen3的智能字幕系统可…...

告别繁琐配置:用快马ai一键生成win10系统openclaw自动化安装脚本原型

最近在折腾一个自动化安装OpenClaw工具的项目,发现Windows 10下的环境配置特别麻烦。作为一个经常需要快速验证工具链的开发者,我摸索出了一套用InsCode(快马)平台快速生成原型的方法,分享给大家。 环境检测模块的实现 最头疼的就是处理不同用…...

手柄优化指南:DS4Windows摇杆调校与硬件适配完全手册

手柄优化指南:DS4Windows摇杆调校与硬件适配完全手册 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 在游戏体验中,手柄摇杆的精准控制直接影响操作手感与游戏表现…...

停车场、门禁、移动执法…聊聊C#车牌识别系统在不同业务场景下的‘调教’心得

停车场、门禁、移动执法:C#车牌识别系统的场景化调优实战 当车牌识别系统从实验室走向真实业务场景,开发者往往会发现一个残酷的现实:那些在标准测试集上表现优异的模型,一旦部署到实际环境中,识别率可能断崖式下跌。我…...

基于Hunyuan-MT-7B的算法竞赛题解翻译系统

基于Hunyuan-MT-7B的算法竞赛题解翻译系统 1. 引言 算法竞赛是全球程序员和算法爱好者展示实力的舞台,但语言障碍常常成为知识共享的壁垒。一道优秀的解题思路,可能因为语言不通而无法被更多人学习借鉴。传统的机器翻译工具在面对算法题解中的专业术语…...

Java Web 新冠物资管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 新冠疫情的爆发对全球公共卫生体系提出了严峻挑战,物资管理成为疫情防控中的关键环节。传统物资管理方式依赖人工操作,效率低下且易出错,难以应对突发公共卫生事件中的大规模物资调配需求。为解决这一问题,新冠物资管理系统应…...

从“未知发布者”到“可信来源”:代码签名证书如何重塑用户信任?

一、用户信任危机:数字时代的核心挑战 在软件分发领域,"未知发布者"警告已成为开发者与用户之间的信任鸿沟。据2025年全球软件安全报告显示,73%的用户在看到此类警告时会直接放弃安装,即使软件来自知名企业。这种信任缺…...