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已经以重新定义的名称进行回复。

相关新闻

最新新闻

想问一下大佬们,入门了k230然后准备去学yolo图像检测,目前卡在第一步下载WSL

想问一下大佬们,入门了k230然后准备去学yolo图像检测,目前卡在第一步下载WSL

大家下载都是这么慢的吗?我下了快两个钟,还有百分之四十没下好。在网上找的教程powershell给指令下载的😭求助各位佬o(╥﹏╥)o

2026/7/23 2:53:54
MySQL 运维必备:mysqladmin 命令详解 —— 服务器管理一站式指南

MySQL 运维必备:mysqladmin 命令详解 —— 服务器管理一站式指南

一、命令简介 mysqladmin 是 MySQL 数据库服务器的官方命令行管理客户端工具。它允许数据库管理员在不登录 MySQL 交互式命令行 (mysql) 的情况下,直接执行一系列服务器管理、状态检查和维护操作。其主要用途包括检查服务器状态、创建 / 删除数据库、管理用户密码、…

2026/7/23 2:53:54
Linux 用户信息查询利器:finger 命令详解(含实例 + 安全说明)

Linux 用户信息查询利器:finger 命令详解(含实例 + 安全说明)

一、命令简介 finger 命令用于查找并显示本地或远程系统上的用户信息。它可以提供用户的登录状态、个人详情(如真实姓名、办公室位置、电话号码等)以及与该用户相关的计划文件(如 .plan 和 .project)内容。该命令常用于系统管理员…

2026/7/23 2:53:54
Ray 2.55正式支持Google Cloud TPU:Kubernetes上的分布式AI计算实践

Ray 2.55正式支持Google Cloud TPU:Kubernetes上的分布式AI计算实践

如果你正在构建需要大规模计算资源的AI应用,比如训练大语言模型或运行复杂的多智能体系统,那么最近Ray 2.55的更新绝对值得你关注。这次更新最核心的亮点是正式支持Google Cloud TPU,这意味着你可以通过KubeRay在Kubernetes集群中自动编排和管…

2026/7/23 2:53:54
Rerank 不是银弹:8 个精排 badcase 的证据链

Rerank 不是银弹:8 个精排 badcase 的证据链

Rerank 不是银弹:8 个精排 badcase 的证据链 结论先放前面:Rerank 可以提升排序精度,也可能把原本排对的文档排错。在 EasySearch 2.3 BGE Reranker 的 25 条 dev query 实验中,我抓到 8 个 badcase,其中 6 个是"…

2026/7/23 2:53:54
TM4C123BH6ZRB休眠模块与存储器协同设计实战

TM4C123BH6ZRB休眠模块与存储器协同设计实战

1. 项目概述:深入Tiva™ TM4C123BH6ZRB的休眠与存储核心在嵌入式开发,尤其是电池供电的物联网(IoT)或便携式设备项目中,我们常常面临一个核心矛盾:系统需要时刻准备响应外部事件(如按键唤醒、定…

2026/7/23 2:48:54

月新闻