Spring AI(二)创建一个Spring AI项目
2025-03-10

环境要求

Java 17以上,说明

1.创建AI项目

通过Spring官网创建一个SpringAI项目

打开Spring Initializr网址

填写项目信息

我们选择使用Maven作为构建工具,填写相关Group/Artifact/Name。

添加Spring Web依赖

添加Spring AI依赖

我们在搜索框中搜索AI,会出现很多和AI相关的依赖,Spring AI默认支持很多AI提供商,我们这里使用Open AI,选择Open AI。

生成程序包

点击生成按钮

将会生成并自动下载

通过IDE打开AI项目

2.运行Demo

免费API申请

这里由于我们并没有Open AI,这里使用Github上免费版

项目地址

打开项目地址

点击申请Api

添加OPENAI配置

https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html#_connection_properties

在该地址我们可以看到相关配置,我们添加到application配置文件中

spring.ai.openai.base-url=https://api.chatanywhere.tech
spring.ai.openai.api-key=上面申请的Api key

实现简单问答

package com.ai.SpringAiDemo.service;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.stereotype.Service;

@Service
public class ChatService {

    @Resource
    private ChatModel chatModel;

    public String getResponse(String prompt) {
        return chatModel.call(prompt);
    }
}
package com.ai.SpringAiDemo.controller;

import com.ai.SpringAiDemo.service.ChatService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GenAiController {

    @Resource
    private ChatService chatService;

    @GetMapping("/ask-ai")
    public String getResponse(@RequestParam String prompt) {
        return chatService.getResponse(prompt);
    }
}

添加Service和Controller后进行测试

实现携带参数问答

    public String getResponseOptions(String prompt) {
        ChatResponse response = chatModel.call(
                new Prompt(
                        prompt,
                        OpenAiChatOptions.builder()
                                .model("gpt-4o-mini")  //修改模型版本
                                .temperature(0.4)
                                .build()
                ));
        return response.getResult().getOutput().getText();
    }
    @GetMapping("/ask-ai-options")
    public String getResponseOptions(@RequestParam String prompt) {
        return chatService.getResponseOptions(prompt);
    }