Spring Boot Starter for OpenAI integration providing auto-configuration for chat completion, embeddings, image generation, audio speech synthesis, audio transcription, and content moderation models. Includes high-level ChatClient API and conversation memory support.
Get started with Spring AI OpenAI Starter in 5 minutes.
Add to your Maven pom.xml:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
<version>1.1.2</version>
</dependency>Or Gradle build.gradle:
implementation 'org.springframework.ai:spring-ai-starter-model-openai:1.1.2'Add to application.properties:
spring.ai.openai.api-key=sk-...Or use environment variable:
export OPENAI_API_KEY="sk-..."import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ChatService {
private final OpenAiChatModel chatModel;
@Autowired
public ChatService(OpenAiChatModel chatModel) {
this.chatModel = chatModel;
}
public String chat(String userMessage) {
ChatResponse response = chatModel.call(new Prompt(userMessage));
return response.getResult().getOutput().getContent();
}
}For a simpler API, use ChatClient:
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ChatClientService {
private final ChatClient chatClient;
@Autowired
public ChatClientService(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder
.defaultSystem("You are a helpful assistant")
.build();
}
public String chat(String userMessage) {
return chatClient.prompt()
.user(userMessage)
.call()
.content();
}
}@Autowired
private OpenAiEmbeddingModel embeddingModel;
public float[] embedText(String text) {
return embeddingModel.embed(text);
}@Autowired
private OpenAiImageModel imageModel;
public String generateImage(String prompt) {
ImagePrompt imagePrompt = new ImagePrompt(prompt);
ImageResponse response = imageModel.call(imagePrompt);
return response.getResult().getOutput().getUrl();
}@Autowired
private OpenAiAudioSpeechModel speechModel;
public byte[] textToSpeech(String text) {
SpeechResponse response = speechModel.call(text);
return response.getResult().getOutput();
}@Autowired
private OpenAiAudioTranscriptionModel transcriptionModel;
public String transcribe(String audioFilePath) {
Resource audioFile = new FileSystemResource(audioFilePath);
TranscriptionResponse response = transcriptionModel.call(audioFile);
return response.getResult().getOutput();
}@Autowired
private OpenAiModerationModel moderationModel;
public boolean isContentSafe(String content) {
ModerationPrompt prompt = new ModerationPrompt(content);
ModerationResponse response = moderationModel.call(prompt);
Moderation moderation = response.getResult().getOutput();
for (ModerationResult result : moderation.getResults()) {
if (result.isFlagged()) {
return false;
}
}
return true;
}tessl i tessl/maven-org-springframework-ai--spring-ai-starter-model-openai@1.1.1