Spring AI Integration
The TruthVouch Spring AI integration provides chat client and embedding client implementations that route all AI calls through TruthVouch Firewall for governance.
Status: Coming Soon (Q2 2026)
Installation
<dependency> <groupId>com.truthvouch</groupId> <artifactId>truthvouch-spring-ai-starter</artifactId> <version>1.0.0</version></dependency>Or with Gradle:
implementation 'com.truthvouch:truthvouch-spring-ai-starter:1.0.0'Planned Features
ChatClientimplementation with TruthVouch FirewallEmbeddingClientwith vector caching- Spring Boot auto-configuration with
@EnableTruthVouch - Configuration via
application.yml - Full governance pipeline
- Streaming support
- Circuit breaker and retry logic
Planned Configuration
application.yml
truthvouch: api-key: ${TRUTHVOUCH_API_KEY} gateway-url: https://gateway.truthvouch.com timeout-seconds: 30 fail-mode: open
spring-ai: model: gpt-4o # Default model temperature: 0.7Enable in Code
@Configuration@EnableTruthVouchpublic class AiConfig { // Auto-configured beans provided}Planned Usage
Inject ChatClient
@RestControllerpublic class ChatController { private final ChatClient chatClient;
public ChatController(ChatClient chatClient) { this.chatClient = chatClient; }
@PostMapping("/ask") public ResponseEntity<String> ask(@RequestBody String question) { String response = chatClient.prompt() .user(question) .call() .content();
// Automatically governed, fact-checked, audit-logged return ResponseEntity.ok(response); }}Streaming Responses
@GetMapping("/ask-stream")public ResponseEntity<String> askStream(@RequestBody String question) { chatClient.prompt() .user(question) .stream() .content() .forEach(System.out::print);
return ResponseEntity.ok("done");}With Embeddings
@Servicepublic class RagService { private final ChatClient chatClient; private final EmbeddingClient embeddingClient;
public String answerQuestion(String question) { // Generate embedding for the question float[] questionEmbedding = embeddingClient.embed(question);
// Retrieve relevant documents from vector store List<String> relevantDocs = vectorStore.search(questionEmbedding, 5);
// Build context String context = String.join("\n", relevantDocs);
// Query with context String response = chatClient.prompt() .user(String.format( "Context:\n%s\n\nQuestion: %s", context, question )) .call() .content();
return response; // All calls governed by TruthVouch }}Timeline
- Q2 2026: Public beta release
- Q3 2026: GA release with full feature parity