暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 Spring Boot + OpenAI GPT 接口打造智能问答后端服务

IT那活儿 2025-07-22
344

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!



技术背景

随着生成式 AI 的快速发展,越来越多的应用开始接入 OpenAI GPT 等大模型能力,提升产品的智能化程度。本文将介绍如何使用 Spring Boot 快速集成 OpenAI API,构建一个轻量的智能问答后端服务。
技术栈:
  • Spring Boot 3.x(后端框架)
  • OpenAI GPT-4 API(大语言模型
  • OkHttp(HTTP 请求库
  • Lombok + Jackson(简化代码开发
  • Maven(构建工具)


使用步骤

2.1 创建 Spring Boot 项目
使用 IDEA 或 Spring Initializr 创建一个基本的 Spring Boot 项目,添加以下依赖:
<!--pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.11.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

2.2 配置 OpenAI Key
openai:
  api-key: sk-xxxxxx
  model: gpt-4
  url: api.openai.com/v1/chat/completions

2.3 编写配置类
@Configuration
@ConfigurationProperties(prefix = "openai")
@Data
public class OpenAiConfig {
    privateStringapiKey;
    privateStringurl;
    privateStringmodel;
}

2.4 定义请求和响应模型
@Data
@NoArgsConstructor
@AllArgsConstructor
public classChatMessage {
    private String role; // "user", "assistant", "system"
    private String content;
}

@Data
public class ChatRequest {
    private String model;
    private List<ChatMessage> messages;
    private double temperature = 0.7;
}

2.5 编写服务类调用 OpenAI
@Service
@RequiredArgsConstructor
publicclassOpenAiService{
    privatefinal OpenAiConfig config;
    privatefinal ObjectMapper objectMapper = new ObjectMapper();
    public String chat(String userMessage)throws IOException {
        OkHttpClient client = new OkHttpClient();
        List<ChatMessage> messages = List.of(new ChatMessage("user", userMessage));
        ChatRequest request = new ChatRequest(config.getModel(), messages, 0.7);
        RequestBody body = RequestBody.create(
                objectMapper.writeValueAsString(request),
                MediaType.get("application/json")
        );

        Request httpRequest = new Request.Builder()
                .url(config.getUrl())
                .header("Authorization""Bearer " + config.getApiKey())
                .post(body)
                .build();

        try (Response response = client.newCall(httpRequest).execute()) {
            if (!response.isSuccessful()) {
                thrownew IOException("Unexpected code " + response);
            }
            String responseBody = response.body().string();
            JsonNode root = objectMapper.readTree(responseBody);
            return root.path("choices").get(0).path("message").path("content").asText();
        }
    }
}

2.6 创建 Controller 暴露接口
@RestController
@RequestMapping("/chat")
@RequiredArgsConstructor
publicclass ChatController {
    private final OpenAiService openAiService;

    @PostMapping
    public ResponseEntity<String> chat(@RequestBody Map<StringString> request) {
        String question = request.get("question");
        try {
            String answer = openAiService.chat(question);
            return ResponseEntity.ok(answer);
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("错误:" + e.getMessage());
        }
    }
}




接口调用示例

请求地址POST chat                                                         
请求体

{

"question": "介绍一下Spring Boot的特点"

}


 
 

返回结果:
"Spring Boot 是一个快速构建 Java 应用的框架,具备开箱即用、自动配置、微服务友好等特性……"
总 结:
使用 Spring Boot 集成 OpenAI 接口,只需不到 100 行代码,就能轻松构建一个强大的 AI 服务。这种能力可以嵌入各类业务系统中,实现自动化、智能化升级。

END


本文作者:刘首江(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论