🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
RestClient class introduced in Spring Boot 3.2. We will demonstrate how to call the ChatGPT APIs using this REST client to generate responses based on user input.Introduction
ChatGPT, developed by OpenAI, is a powerful AI model that can generate human-like text based on input prompts. Integrating ChatGPT with a Spring Boot application allows you to leverage its capabilities to build intelligent applications that can interact with users in a conversational manner.
Prerequisites
- Java 17 or later
- Maven 3.8.1 or later
- OpenAI API Key
1. Setting Up the Project
Step 1: Create a New Spring Boot Project
Use Spring Initializr to create a new Spring Boot project. Include dependencies for Spring Web.
Using Spring Initializr:
- Go to start.spring.io
- Select:
- Project: Maven Project
- Language: Java
- Spring Boot: 3.3.0 (or latest)
- Dependencies: Spring Web
- Generate the project and unzip it.
Step 2: Add Dependencies
In your project's pom.xml, ensure you have the necessary dependencies.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2. Configuring the Application
Step 1: Add API Key to Configuration
Add your OpenAI API key to application.properties.
openai.api.key=your_openai_api_key
openai.api.url=https://api.openai.com/v1/completions
Step 2: Configure RestClient
Create a configuration class to set up the RestClient.
package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestClient;
@Configuration
public class AppConfig {
@Bean
public RestClient restClient() {
return RestClient.builder().build();
}
}
3. Creating the ChatGPT Client
Step 1: Define the Request and Response Models
Create models for the request and response data.
ChatGPTRequest.java
package com.example.demo.model;
import java.util.List;
public class ChatGPTRequest {
private String model;
private List<ChatGPTMessage> messages;
// Getters and setters
}
public class ChatGPTMessage {
private String role;
private String content;
// Getters and setters
}
ChatGPTResponse.java
package com.example.demo.model;
import java.util.List;
public class ChatGPTResponse {
private List<Choice> choices;
// Getters and setters
public static class Choice {
private ChatGPTMessage message;
// Getters and setters
}
}
Step 2: Create the ChatGPT Client Service
Create a service to interact with the ChatGPT API.
package com.example.demo.service;
import com.example.demo.model.ChatGPTRequest;
import com.example.demo.model.ChatGPTResponse;
import com.example.demo.model.ChatGPTMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClient;
import java.util.Collections;
@Service
public class ChatGPTService {
private final RestClient restClient;
@Value("${openai.api.key}")
private String apiKey;
@Value("${openai.api.url}")
private String apiUrl;
public ChatGPTService(RestClient restClient) {
this.restClient = restClient;
}
public String getChatGPTResponse(String userMessage) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(apiKey);
ChatGPTMessage userMessageObj = new ChatGPTMessage();
userMessageObj.setRole("user");
userMessageObj.setContent(userMessage);
ChatGPTRequest request = new ChatGPTRequest();
request.setModel("gpt-3.5-turbo");
request.setMessages(Collections.singletonList(userMessageObj));
HttpEntity<ChatGPTRequest> entity = new HttpEntity<>(request, headers);
ChatGPTResponse response = restClient.exchange(apiUrl, HttpMethod.POST, entity, ChatGPTResponse.class).getBody();
return response != null && !response.getChoices().isEmpty()
? response.getChoices().get(0).getMessage().getContent()
: "No response from ChatGPT";
}
}
4. Creating the Chatbot Controller
Step 1: Create a Controller to Expose the Service
Create a controller to expose an endpoint for the chatbot.
package com.example.demo.controller;
import com.example.demo.service.ChatGPTService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ChatbotController {
private final ChatGPTService chatGPTService;
@Autowired
public ChatbotController(ChatGPTService chatGPTService) {
this.chatGPTService = chatGPTService;
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatGPTService.getChatGPTResponse(message);
}
}
5. Testing the Integration
Step 1: Run the Application
Run your Spring Boot application. Ensure the application starts without errors.
Step 2: Access the Chat Endpoint
Use Postman, curl, or your browser to test the endpoint. For example:
http://localhost:8080/chat?message=Hello, how are you?
You should receive a response generated by the ChatGPT model based on the provided message.
Conclusion
This tutorial demonstrated how to integrate ChatGPT with a Spring Boot application using RestClient to call the ChatGPT APIs. You learned how to configure Spring Boot, create a service to interact with the ChatGPT API, and expose an endpoint for user interaction. This setup allows you to integrate AI-powered chat functionalities into your Spring Boot applications, enhancing user experience with intelligent and dynamic responses.
Explore further customization and enhancements to leverage the full potential of AI in your projects.
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment