尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Spring AI(3) :对话机器人开发快速入门
本章代码已分享至Gitee:https://gitee.com/lengcz/ai-study.git文章目录快速入门AI开发准备工作和环境创建项目阻塞式chat流式chat给System设置名称快速入门AI开发本章讲解如何使用spring ai 快速入门对话机器人的开发。准备工作和环境由于spring AI 要求的jdk 最低为17所以这里环境为jdk17本地使用ollama部署了deepseek-r1:7b可以根据自己电脑的配置决定。项目运行时,Idea版本如果过低会报错如运行时发生错误请注意检查Idea版本这里使用的Idea 2024demo使用ollama如果自己使用其他模型请注意使用对应的依赖和配置。创建项目创建maven项目引入依赖?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.4.13/versionrelativePath/!-- lookup parent from repository --/parentgroupIdcom.lengcz/groupIdartifactIdai-study/artifactIdversion0.0.1-SNAPSHOT/versionnameai-study/namedescriptionai study/descriptionurl/licenseslicense//licensesdevelopersdeveloper//developersscmconnection/developerConnection/tag/url//scmpropertiesjava.version17/java.versionspring-ai.version1.0.0-M6/spring-ai.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-ollama-spring-boot-starter/artifactId/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/dependency!--建议不用使用自带的lombok而是由自己指定版本--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.22/version/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion${spring-ai.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3 启动类importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplicationpublicclassAiStudyApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AiStudyApplication.class,args);}}4 配置yaml文件spring:application:name:ai-studyai:ollama:base-url:http://localhost:11434chat:model:deepseek-r1:7b创建配置类importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.ollama.OllamaChatModel;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;ConfigurationpublicclassCommonConfiguration{BeanpublicChatClientchatClient(OllamaChatModelollamaChatModel){returnChatClient.builder(ollamaChatModel).build();}}阻塞式chat编写一个 controller试一下验证聊天packagecom.lengcz.ai.controller;importlombok.RequiredArgsConstructor;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importreactor.core.publisher.Flux;RequiredArgsConstructor//有参构造器RestControllerRequestMapping(/ai)publicclassChatController{privatefinalChatClientchatClient;RequestMapping(/chat)publicStringchat(Stringprompt){returnchatClient.prompt().user(prompt).call().content();//call() 表示阻塞调用}}启动后请求一下接口测试可以看到接口稍等片刻瞬间返回了所有内容这就是阻塞式的返回。流式chat流式返回将前面的call改成stream再验证一下接口可以看到返回数据以流的方式输出。//produces text/html;charsetutf-8; 指定编码防止中文乱码RequestMapping(value/stream_chat,producestext/html;charsetutf-8;)publicFluxStringstream_chat(Stringprompt){returnchatClient.prompt().user(prompt).stream().content();//stream() 表示流式输出}给System设置名称importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.ollama.OllamaChatModel;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;ConfigurationpublicclassCommonConfiguration{BeanpublicChatClientchatClient(OllamaChatModelollamaChatModel){returnChatClient.builder(ollamaChatModel).defaultSystem(你是一个热心的智能助手你的名字叫小可爱请以小可爱的名义回答用户的问题。).build();}}再次请求接口可以看到AI已经以重新定义的名称进行回复。
RELATED

相关推荐

Datawhale 量化入门学习笔记:理解波动率

Datawhale 量化入门学习笔记:理解波动率

本文是 Datawhale《和Yibo零基础学习量化金融》Phase 2 第五章的学习总结,包含核心概念、理论发展脉络、Python 代码实现和真实行情验证。 标签:量化交易 Python 波动率 学习笔记 Datawhale 投资组合 分类:Python / 量化投资 前言 很多新手只…

📅 2026/8/23 9:20:34
【OpenHarmony/HarmonyOS】ArkUI Canvas 2D 游戏引擎实战:世界坐标、摄像机、HUD 与渲染管线

【OpenHarmony/HarmonyOS】ArkUI Canvas 2D 游戏引擎实战:世界坐标、摄像机、HUD 与渲染管线

【OpenHarmony/HarmonyOS】ArkUI Canvas 2D 游戏引擎实战:世界坐标、摄像机、HUD 与渲染管线Canvas 不只是“画几条线”的组件。只要建立坐标系、渲染顺序、摄像机和实体管理,它完全可以承载一款中小型 2D 游戏。本文结合迷宫坦克项目,讲清楚…

📅 2026/8/23 9:20:34
Unity集成Tenjin SDK缺失错误全解析:从根因排查到系统解决方案

Unity集成Tenjin SDK缺失错误全解析:从根因排查到系统解决方案

1. 项目概述:当Unity遇上Tenjin SDK缺失错误在移动游戏和应用开发中,数据驱动决策是增长的核心。Tenjin作为一个专注于移动应用归因和广告效果分析的服务,是许多Unity开发者进行用户获取和ROI分析的重要工具。然而,在集成过程中&a…

📅 2026/8/23 9:20:35
MORE NEWS

更多资讯

📰

交换机连接底层逻辑拆解:新手避坑指南与实战代码

交换机连接底层逻辑拆解:新手避坑指南与实战代码 刚学完网络协议,对着 ping 命令发呆?代码写得顺溜,真到了搭项目却像无头苍蝇?别慌,这正是无数后端和运维新人的通病。 很多人觉得网络层是玄学,其实 交换机连接…

📰

SolidWorks全球许可证池架构设计与优化实践

1. 项目背景与核心挑战在全球化运营的制造企业中,三维设计软件SolidWorks的许可证管理一直是个令人头疼的问题。我们公司去年刚完成对欧洲两家工程公司的收购,突然发现设计团队的软件使用权限变得一团糟——德国工程师抱怨许可证不够用,上海团…

📰

告别卡顿:21克老人手机性能优化实战与源码解析

告别卡顿:21克老人手机性能优化实战与源码解析 看了一堆教程还是不会写项目?别急,问题往往不在语法,而在你对 性能优化 的理解太浅。…

📰

AI性能测评实战:从评测维度到模型选型的避坑指南

这两年我测过大大小小几十个AI模型,从闭源的旗舰商用接口到开源社区里冒出来的各种量化版权重,踩过的坑比很多人想象中要多。最典型的一种错觉是:今天看某个榜单某个模型排第一,兴冲冲接进来一试,结果处理真实业务问题…

📰

3个坑让你少踩5年:hash码速查手册与选型实战

3个坑让你少踩5年:hash码速查手册与选型实战 刚接手老项目,复制了段哈希校验代码,本地跑得好好的,一上线数据全乱套。你以为是环境配置错了,折腾半天才发现,不同语言实现的hash码算法压根就不兼容。这种“代码能跑但结果不对”的坑,比直接报…

📰

n501面试避坑指南:3个高频考点拆解与薪资真相

n501面试避坑指南:3个高频考点拆解与薪资真相 刚把网上那段n501的代码复制进IDE,回车一按,报错红屏一片。想改吧,不知道哪行是核心;不改吧,面试要问。这种“代码看着眼熟,跑起来就废”的折磨,我在新手圈子里见得太多了。今天这篇n501…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬