4.Spring-Ai入门案例

Spring-AI 入门案例

1.创建工程

创建一个spring boot工程,版本3.5.13,jdk版本为17。

选择依赖:web、mysql、ollama

pom文件如下

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.5.13</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>spring-ai-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<properties>
		<java.version>17</java.version>
		<spring-ai.version>1.1.4</spring-ai.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.ai</groupId>
			<artifactId>spring-ai-starter-model-ollama</artifactId>
		</dependency>

		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.ai</groupId>
				<artifactId>spring-ai-bom</artifactId>
				<version>${spring-ai.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

2.application配置文件

配置文件中,指定大模型的地址和名称。

因为是调用本地模型,不需要api_key。

yaml 复制代码
server:
  port: 8081
spring:
  application:
    name: spring-ai-demo
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:7b

3. 配置访问大模型的客户端

添加如下配置类

java 复制代码
@Configuration
public class CommonConfig {

    @Bean
    public ChatClient chatClient(OllamaChatModel model){
        return ChatClient.builder(model).defaultSystem("你的名字叫丽莎,请以丽莎的身份和语气回答问题。").build();
    }
}

4. 测试访问

以下案例中,调用方式不同。

java 复制代码
@RestController
@RequestMapping("/ai")
@RequiredArgsConstructor
public class ChatController {


    private final ChatClient chatClient;

    @GetMapping("/chat")
    public String chat(String prompt){
        return chatClient.prompt().user(prompt).call().content();
    }

    /**
     * 流式输出(一个字一个字的输出,最常用)
     * @param prompt
     * @return
     */
    @GetMapping(value = "/chat/stream", produces = "text/html;charset=utf-8")
    public Flux<String> chatStream(String prompt){
        return chatClient.prompt().user(prompt).stream().content();
    }
}

Eage浏览器访问,和google不太一样

应该不是浏览器的差异,而是每次调用接口,输出结果都不一样。

相关推荐
计算机毕设定制辅导-无忧学长1 小时前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
巫山老妖1 小时前
讲不清楚,是因为你还没想清楚
人工智能·程序员
职场的momo1 小时前
字节生活服务海量内推,挑战亿级订单与AI交易中台
人工智能·程序人生·面试·职场和发展·跳槽·生活·业界资讯
Dawson Zhu1 小时前
知识图谱与 Palantir Ontology:同一套「实体—关系」表象下,两种截然不同的工程范式
人工智能·语言模型·架构·aigc·agi
YOLO数据集集合1 小时前
无人机高分辨率多树种单木分割数据集 | 单木分割 无人机林业 树种识别 实例分割 点云 遥感数据集 深度学习 精准林业9047期
人工智能·深度学习·数据集·无人机·遥感数据集·点云数据集·树木分割
科技看点1 小时前
小机身里的Windows+AI,Windows原生OpenClaw离线AI盒子实测
人工智能
GEO实战经验分享1 小时前
跨平台GEO度量框架:从多源数据整合到效果评估的系统化指南
人工智能
2601_966863191 小时前
扩音器哪个牌子性价比高?哪个牌子适合教师?开学季扩音器推荐
人工智能
Capricorn19882 小时前
日志级幻觉排障:GPT-6 Astra 迈入 AGI 时代,知芽 Notebook Skill 如何以引用校验与零命中诚实弃权解决长文失忆
论文阅读·人工智能·笔记·gpt·agi