API Reference
This section provides detailed API reference documentation for Spring AI Watsonx.ai integration.
Core APIs
Chat API
The Chat API provides conversational AI capabilities using Watsonx.ai foundation models.
WatsonxAiChatModel
Main interface for chat interactions:
public class WatsonxAiChatModel implements ChatModel {
public ChatResponse call(Prompt prompt);
public Flux<ChatResponse> stream(Prompt prompt);
}
Key Methods:
-
call(Prompt)- Synchronous chat completion -
stream(Prompt)- Streaming chat completion
WatsonxAiChatOptions
Configuration options for chat models:
public class WatsonxAiChatOptions implements ChatOptions {
private String model;
private Double temperature;
private Integer maxNewTokens;
private Double topP;
private Integer topK;
private Double repetitionPenalty;
private List<String> stopSequences;
// ... additional options
}
Builder Pattern:
WatsonxAiChatOptions options = WatsonxAiChatOptions.builder()
.withModel("ibm/granite-13b-chat-v2")
.withTemperature(0.7)
.withMaxNewTokens(1024)
.build();
Embedding API
The Embedding API generates vector representations of text for semantic search and similarity analysis.
WatsonxAiEmbeddingModel
Main interface for embeddings:
public class WatsonxAiEmbeddingModel implements EmbeddingModel {
public EmbeddingResponse embedForResponse(List<String> texts);
public List<Double> embed(String text);
}
Key Methods:
-
embedForResponse(List<String>)- Generate embeddings for multiple texts -
embed(String)- Generate embedding for single text
WatsonxAiEmbeddingOptions
Configuration options for embedding models:
public class WatsonxAiEmbeddingOptions implements EmbeddingOptions {
private String model;
private Boolean truncateInputTokens;
}
Request/Response Objects
ChatRequest
public class WatsonxAiChatRequest {
private String model;
private List<Message> messages;
private WatsonxAiChatOptions options;
}
ChatResponse
public class WatsonxAiChatResponse {
private List<Generation> generations;
private ChatResponseMetadata metadata;
}
EmbeddingRequest
public class WatsonxAiEmbeddingRequest {
private String model;
private List<String> inputs;
private WatsonxAiEmbeddingOptions options;
}
EmbeddingResponse
public class WatsonxAiEmbeddingResponse {
private List<Embedding> embeddings;
private EmbeddingResponseMetadata metadata;
}
Authentication
WatsonxAiAuthentication
Handles IBM Cloud IAM authentication:
public class WatsonxAiAuthentication {
public WatsonxAiAuthentication(String apiKey);
public String getAccessToken();
}
Configuration Properties
Connection Properties
@ConfigurationProperties("spring.ai.watsonx.ai")
public class WatsonxAiConnectionProperties {
private String apiKey;
private String url;
private String projectId;
}
Chat Properties
@ConfigurationProperties("spring.ai.watsonx.ai.chat")
public class WatsonxAiChatProperties {
private boolean enabled = true;
private WatsonxAiChatOptions options;
}
Embedding Properties
@ConfigurationProperties("spring.ai.watsonx.ai.embedding")
public class WatsonxAiEmbeddingProperties {
private boolean enabled = true;
private WatsonxAiEmbeddingOptions options;
}
Auto-Configuration
WatsonxAiChatAutoConfiguration
Automatically configures chat model beans:
@Configuration
@ConditionalOnClass(WatsonxAiChatModel.class)
@EnableConfigurationProperties({
WatsonxAiConnectionProperties.class,
WatsonxAiChatProperties.class
})
public class WatsonxAiChatAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public WatsonxAiChatModel watsonxAiChatModel(
WatsonxAiChatApi chatApi,
WatsonxAiChatProperties properties) {
return new WatsonxAiChatModel(chatApi, properties.getOptions());
}
}
WatsonxAiEmbeddingAutoConfiguration
Automatically configures embedding model beans:
@Configuration
@ConditionalOnClass(WatsonxAiEmbeddingModel.class)
@EnableConfigurationProperties({
WatsonxAiConnectionProperties.class,
WatsonxAiEmbeddingProperties.class
})
public class WatsonxAiEmbeddingAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public WatsonxAiEmbeddingModel watsonxAiEmbeddingModel(
WatsonxAiEmbeddingApi embeddingApi,
WatsonxAiEmbeddingProperties properties) {
return new WatsonxAiEmbeddingModel(embeddingApi, properties.getOptions());
}
}
Exception Handling
Common Exceptions
// Authentication failure
public class WatsonxAiAuthenticationException extends RuntimeException
// API errors
public class WatsonxAiApiException extends RuntimeException
// Rate limiting
public class WatsonxAiRateLimitException extends RuntimeException
// Invalid configuration
public class WatsonxAiConfigurationException extends RuntimeException
Usage Examples
Basic Chat
@Service
public class ChatService {
private final WatsonxAiChatModel chatModel;
public String chat(String message) {
return chatModel.call(message);
}
}
Streaming Chat
@Service
public class StreamingChatService {
private final WatsonxAiChatModel chatModel;
public Flux<String> streamChat(String message) {
return chatModel.stream(new Prompt(message))
.map(response -> response.getResult().getOutput().getContent());
}
}
Generate Embeddings
@Service
public class EmbeddingService {
private final WatsonxAiEmbeddingModel embeddingModel;
public List<Double> generateEmbedding(String text) {
return embeddingModel.embed(text);
}
}