idea新建Spring-ai项目-ollama

新建项目

打开idea,新建项目

点击【下一步】,选择项目依赖项,按下面截图操作,添加Spring Web、MySQL Driver、Ollama后点击【创建】

创建完成后项目结构如下图

修改pom.xml

复制代码
引入lombok
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>
        <!-- spring-boot版本 -->
        <version>4.0.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.springai</groupId>
    <artifactId>spring-ai-study</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-ai-study</name>
    <description>spring-ai-study</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <!-- JDK版本 -->
        <java.version>17</java.version>
        <!-- spring-ai版本 -->
        <spring-ai.version>2.0.0-M2</spring-ai.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc</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.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 引入lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </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>

修改配置文件

接下来是修改配置文件application.yaml

XML 复制代码
spring:
  application:
    name: spring-ai-study
  ai:
    ollama:
      # 默认就是http://localhost:11434 所以不配也可以
      base-url: http://localhost:11434
      chat:
        # 对话模型
        model: deepseek-r1:8b

创建配置类

java 复制代码
package com.springai.study.config;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CommonConfiguration {
    @Bean
    public ChatClient chatClient(OllamaChatModel model) {
        return ChatClient
                .builder(model)
                .build();
    }
}

阻塞式对话

创建ChatController

java 复制代码
package com.springai.study.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequiredArgsConstructor
@RestController
@RequestMapping("/ai")
public class ChatController {
    private final ChatClient chatClient;

    /**
     * 阻塞式对话,必须等AI思考得出完整回答才响应
     * @param prompt
     * @return
     */
    @RequestMapping("/chat")
    public String chat(String prompt){
        return chatClient.prompt()
                .user(prompt)
                .call()
                .content();
    }
}

调试chat接口

1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details/158693877?spm=1001.2014.3001.5501

2、启动spring-ai-study项目

3、访问chat接口和AI聊天http://localhost:8080/ai/chat?prompt=%E4%BD%A0%E6%98%AF%E8%B0%81?

流式对话

修改ChatController

增加streamChat接口

java 复制代码
package com.springai.study.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RequiredArgsConstructor
@RestController
@RequestMapping("/ai")
public class ChatController {
    private final ChatClient chatClient;

    /**
     * 阻塞式对话,必须等AI思考得出完整回答才响应
     * @param prompt
     * @return
     */
    @RequestMapping("/chat")
    public String chat(String prompt){
        return chatClient.prompt()
                .user(prompt)
                .call()
                .content();
    }
    /**
     * 流式对话,实时返回 AI 的回答内容
     * @param prompt 用户输入的提示词或问题
     * @return Flux<String> 流式响应的字符串序列,包含 AI 生成的回答内容
     */
    // 指定响应内容类型为 HTML 格式,字符编码为 UTF-8,这里没指定的话会响应看不懂的乱码
    @RequestMapping(value = "/streamChat", produces = "text/html;charset=utf-8")
    public Flux<String> streamChat(String prompt){
        return chatClient.prompt()
                .user(prompt)
                .stream()
                .content();
    }
}

调试streamChat接口

1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details/158693877?spm=1001.2014.3001.5501

2、启动spring-ai-study项目

3、访问streamChat接口和AI聊天

http://localhost:8080/ai/streamChat?prompt=%E4%BD%A0%E6%98%AF%E8%B0%81?

这次响应就很快了,而且能看到一字字的响应

修改模型的自我介绍

修改配置类

增加defaultSystem

java 复制代码
package com.springai.study.config;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CommonConfiguration {
    @Bean
    public ChatClient chatClient(OllamaChatModel model) {
        return ChatClient
                .builder(model)
                .defaultSystem("你是由深度求索(DeepSeek)开发的俏皮可爱的人工智能助手,名字叫小深,可以帮助我解决各种问题,比如学习、写作、编程、翻译、资料整理等等。")
                .build();
    }
}

调试streamChat接口

1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details/158693877?spm=1001.2014.3001.5501

2、启动spring-ai-study项目

3、访问streamChat接口和AI聊天

http://localhost:8080/ai/streamChat?prompt=%E4%BD%A0%E6%98%AF%E8%B0%81?

相关推荐
JTCC2 小时前
Java 设计模式西游篇 - 第九回:外观模式简化繁 如来神掌一指定
java·设计模式·外观模式
慧都小项2 小时前
JAVA开发工具IntelliJ IDEA v2026更新前瞻:更优的交互视觉,编程体验升级
java·开发语言·intellij-idea
ノBye~2 小时前
IntelliJ IDEA 2024创建项目Maven和Maven Archetype
java·maven·intellij-idea
hopsky2 小时前
idea 运行maven项目出现莫名的错误
java·maven·intellij-idea
鹿角片ljp2 小时前
前后端分离项目打包部署教程
java·服务器
Filotimo_2 小时前
IDEA 更改快捷键关闭当前标签页
java·ide·intellij-idea
Zww08912 小时前
idea@后没提示
java·ide·intellij-idea
Coder_Boy_2 小时前
从Java虚拟机到分布式中间件:高并发体系全解析(含电商实践细节)
java·jvm·分布式·spring·中间件
('-')2 小时前
关于IDEA项目突然不识别
java·ide·intellij-idea