🎼个人主页:【Y小夜】

😎作者简介:一位双非学校的大三学生,编程爱好者,

专注于基础和实战分享,欢迎私信咨询!

🎆入门专栏:🎇【MySQLJavawebRustpython

🎈热门专栏:🎊【SpringbootRedisSpringsecurityDockerAI】 

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录

🎊SpringAI对话机器人

🎈SpringAI简介

🎈基础构建

🍕引入依赖

🍕Key的申请

🍕基础配置

 🍕编写基础开发类

🎊创建一个Init类

 🎊编写ChatAPI类

 🍕为AI设计角色和场景

 🎈增加记忆能力


🎊SpringAI对话机器人

🎈SpringAI简介

        Spring AI 最初专注于处理语言输入和生成语言输出的模型。该项目的理念是为开发人员提供一个抽象接口,为将生成式 AI 作为独立组件纳入应用奠定基础。

🎈基础构建

🍕引入依赖

首先自己可以先建立一个基础的springboot工程,然后进行后续的操作。

这里我们先以Moonshot API作为例子

建立工程之后,引入依赖

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>1.0.0-SNAPSHOT</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

和 

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-moonshot-spring-boot-starter</artifactId>
        </dependency>

使用上述的依赖的时候,maven官方还未将上述使用的依赖录入,所以我们需要重新配置一个仓库地址。先把以前setting文件中的配置的镜像给删除。

然后再在pom.xml文件中,引入

 <repositories>
        <!--这里使用的是快照版本-->
        <repository>
            <id>spring-snapshot</id>
            <name>Spring Snapshot</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>

然后clean一下,重新编译,就可以将这两个依赖成功引入了 。

🍕Key的申请

进入官网:基本信息 - Moonshot AI 开放平台

点击用户中心:

然后点击API-Key管理,点击新建

将秘钥复制下来。

🍕基础配置

spring:
  ai:
    moonshot:
      api-key: 刚刚创建的秘钥
      chat:
        options:
          model: moonshot-v1-8k
          temperature: 0.7

 🍕编写基础开发类

🎊创建一个Init类

主要是为了将模型初始化,这里我们使用moonshot模型

package com.yan.springai;

import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.moonshot.MoonshotChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@RequiredArgsConstructor
public class Init {
    //要使用的模型
    final MoonshotChatModel model;
    @Bean
    public ChatClient chatClient(){
        return  ChatClient.builder(model).build();
    }
}
 🎊编写ChatAPI类
package com.yan.springai;

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

@RestController
@RequiredArgsConstructor
public class ChatAPI {
    final ChatClient chatClient;
    @GetMapping("/ai/chat")
    public  String chat(@RequestParam(value ="message") String message){
       return chatClient.prompt().user(message).call().content();
    }
}

然后我们启动一下项目,如果发现这个报错的话

需要引入web依赖 

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

然后我们运行一下地址:

控制台上就输出了一些内容:

说明我们就已经调用成功了。

 🍕为AI设计角色和场景

我们现在为AI赋一下他的角色,修改一下Initl类

package com.yan.springai;

import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.moonshot.MoonshotChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@RequiredArgsConstructor
public class Init {
    //要使用的模型
    final MoonshotChatModel model;
    @Bean
    public ChatClient chatClient(){
        return  ChatClient.builder(model)
                .defaultSystem("假如你是特朗普,接下来的对话你必须以特朗普的语气来进行?")
                .build();
    }
}

再次运行一下,看一下输出结果

 🎈增加记忆能力

我们通过调用,会发现,我们的AI是没有记忆的。

会有会话能力的AI一般就是将第一次的回答,和后面的问题拼接到一起,产生记忆能力:

我们修改一下Init类

package com.yan.springai;

import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.ai.moonshot.MoonshotChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@RequiredArgsConstructor
public class Init {
    //要使用的模型
    final MoonshotChatModel model;
    @Bean
    public ChatClient chatClient(ChatMemory chatMemory){
        return  ChatClient.builder(model)
                .defaultSystem("假如你是特朗普,接下来的对话你必须以特朗普的语气来进行?")
                .defaultAdvisors(new MessageChatMemoryAdvisor(chatMemory))//这里主要负责拼接
                .build();
    }
    @Bean
    public ChatMemory chatMemory(){
        //负责存和读
        return new InMemoryChatMemory();
    }
}

 然后我们在运行一下这个,再次提问问题

可以看出来,AI已经产生了记忆。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐