Class SpringAiSupport

java.lang.Object
dev.dokimos.springai.SpringAiSupport

public final class SpringAiSupport extends Object
Utilities for integrating with Spring AI.

This class provides bridge methods to use Spring AI components with the Dokimos evaluation framework.

Using Spring AI ChatClient as a Judge


 ChatClient.Builder clientBuilder = ChatClient.builder(chatModel);
 JudgeLM judge = SpringAiSupport.asJudge(clientBuilder);

 var evaluator = FaithfulnessEvaluator.builder()
         .judge(judge)
         .build();
 

Converting Spring AI Evaluation Objects


 // Convert Spring AI EvaluationRequest to Dokimos EvalTestCase
 EvaluationRequest request = ...;
 EvalTestCase testCase = SpringAiSupport.toTestCase(request);

 // Run Dokimos evaluation
 EvalResult result = evaluator.evaluate(testCase);

 // Convert back to Spring AI EvaluationResponse
 EvaluationResponse response = SpringAiSupport.toEvaluationResponse(result);
 
  • Field Details

    • OUTPUT_KEY

      public static final String OUTPUT_KEY
      Default key for the model output in evaluation results.
      See Also:
    • CONTEXT_KEY

      public static final String CONTEXT_KEY
      Default key for additional context in evaluation results.
      See Also:
    • INPUT_KEY

      public static final String INPUT_KEY
      Default key for reading input from dataset examples.
      See Also:
  • Method Details

    • asJudge

      public static JudgeLM asJudge(org.springframework.ai.chat.client.ChatClient.Builder builder)
      Creates a JudgeLM from a Spring AI ChatClient.Builder.

      Use this to create judges for LLM-based evaluators like LLMJudgeEvaluator, FaithfulnessEvaluator, etc.

      Example:

      
       ChatClient.Builder clientBuilder = ChatClient.builder(chatModel);
       JudgeLM judge = SpringAiSupport.asJudge(clientBuilder);
      
       var evaluator = LLMJudgeEvaluator.builder()
               .judge(judge)
               .criteria("Is the response helpful?")
               .build();
       
      Parameters:
      builder - the ChatClient.Builder to use as judge
      Returns:
      a JudgeLM that delegates to the ChatClient
    • asJudge

      public static JudgeLM asJudge(org.springframework.ai.chat.model.ChatModel model)
      Creates a JudgeLM from a Spring AI ChatModel.

      This is a convenience overload that accepts a ChatModel directly instead of a ChatClient.Builder.

      Example:

      
       ChatModel chatModel = OpenAiChatModel.builder()...build();
       JudgeLM judge = SpringAiSupport.asJudge(chatModel);
      
       var evaluator = FaithfulnessEvaluator.builder()
           .judge(judge)
           .build();
       
      Parameters:
      model - the ChatModel to use as judge
      Returns:
      a JudgeLM that delegates to the ChatModel
    • toTestCase

      public static EvalTestCase toTestCase(org.springframework.ai.evaluation.EvaluationRequest request)
      Converts a Spring AI EvaluationRequest to a Dokimos EvalTestCase.

      Maps the following fields:

      • getUserText() → input
      • getResponseContent() → actual output
      • getDataList() → context (list of document contents)

      Example:

      
       EvaluationRequest request = new EvaluationRequest(
               userText,
               retrievedDocuments,
               responseContent);
      
       EvalTestCase testCase = SpringAiSupport.toTestCase(request);
       EvalResult result = faithfulnessEvaluator.evaluate(testCase);
       
      Parameters:
      request - the Spring AI evaluation request
      Returns:
      an EvalTestCase containing the request data
    • toEvaluationResponse

      public static org.springframework.ai.evaluation.EvaluationResponse toEvaluationResponse(EvalResult result)
      Converts a Dokimos EvalResult to a Spring AI EvaluationResponse.

      Maps the following fields:

      • score -> metadata["score"] (as float)
      • success -> pass/fail status
      • reason -> the reasoning text
      • metadata -> preserved in response metadata

      Example:

      
       EvalResult result = evaluator.evaluate(testCase);
       EvaluationResponse response = SpringAiSupport.toEvaluationResponse(result);
      
       System.out.println("Score: " + response.getMetadata().get("score"));
       System.out.println("Passed: " + response.isPass());
       System.out.println("Feedback: " + response.getFeedback());
       
      Parameters:
      result - the Dokimos evaluation result
      Returns:
      an EvaluationResponse containing the result data