Refactoring

* Put creation of EvaluationRequest in ChatServiceResponse
* Add string constructor to QuestionContextAugmentor
* change vectorStore accept() usage to write()
This commit is contained in:
Mark Pollack
2024-05-16 14:01:20 +02:00
parent fd9c98661d
commit 549c480489
6 changed files with 17 additions and 12 deletions

View File

@@ -144,7 +144,7 @@ public class LongShortTermChatMemoryWithRagIT {
assertThat(chatServiceResponse2.getChatResponse().getResult().getOutput().getContent()).contains("Christian");
EvaluationResponse evaluationResponse = this.relevancyEvaluator
.evaluate(new EvaluationRequest(chatServiceResponse2));
.evaluate(chatServiceResponse2.toEvaluationRequest());
assertTrue(evaluationResponse.isPass(), "Response is not relevant to the question");

View File

@@ -104,8 +104,8 @@ public class OpenAiPromptTransformingChatServiceIT {
.withModel(GPT_4_TURBO_PREVIEW.getValue())
.build();
var relevancyEvaluator = new RelevancyEvaluator(this.chatClient, openAiChatOptions);
EvaluationRequest evaluationRequest = new EvaluationRequest(chatServiceResponse);
EvaluationResponse evaluationResponse = relevancyEvaluator.evaluate(evaluationRequest);
EvaluationResponse evaluationResponse = relevancyEvaluator.evaluate(chatServiceResponse.toEvaluationRequest());
assertTrue(evaluationResponse.isPass(), "Response is not relevant to the question");
}
@@ -113,13 +113,13 @@ public class OpenAiPromptTransformingChatServiceIT {
void loadData() {
JsonReader jsonReader = new JsonReader(bikesResource, "name", "price", "shortDescription", "description");
var textSplitter = new TokenTextSplitter();
List<Document> splitDocuments = textSplitter.split(jsonReader.get());
List<Document> splitDocuments = textSplitter.split(jsonReader.read());
for (Document splitDocument : splitDocuments) {
splitDocument.getMetadata().put(TransformerContentType.EXTERNAL_KNOWLEDGE, "true");
}
vectorStore.accept(splitDocuments);
vectorStore.write(splitDocuments);
}
void loadData2() {

View File

@@ -55,7 +55,11 @@ public class QuestionContextAugmentor extends AbstractPromptTransformer {
private String userText;
public QuestionContextAugmentor() {
this.userText = DEFAULT_USER_TEXT;
this(DEFAULT_USER_TEXT);
}
public QuestionContextAugmentor(String userText) {
this.userText = userText;
this.setName("QuestionContextAugmentor");
}

View File

@@ -18,6 +18,7 @@ package org.springframework.ai.chat.service;
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.prompt.transformer.ChatServiceContext;
import org.springframework.ai.evaluation.EvaluationRequest;
import java.util.Objects;
@@ -47,6 +48,11 @@ public class ChatServiceResponse {
return chatResponse;
}
public EvaluationRequest toEvaluationRequest() {
return new EvaluationRequest(getPromptContext().getPromptChanges().get(0).revised(),
getPromptContext().getContents(), getChatResponse());
}
@Override
public String toString() {
return "ChatServiceResponse{" + "chatServiceContext=" + chatServiceContext + ", chatResponse=" + chatResponse

View File

@@ -16,11 +16,6 @@ public class EvaluationRequest {
private final ChatResponse chatResponse;
public EvaluationRequest(ChatServiceResponse chatServiceResponse) {
this(chatServiceResponse.getPromptContext().getPromptChanges().get(0).revised(),
chatServiceResponse.getPromptContext().getContents(), chatServiceResponse.getChatResponse());
}
public EvaluationRequest(Prompt prompt, List<Content> dataList, ChatResponse chatResponse) {
this.prompt = prompt;
this.dataList = dataList;

View File

@@ -69,7 +69,7 @@ public class BaseMemoryTest {
.contains("John Vincent Atanasoff");
EvaluationResponse evaluationResponse = this.relevancyEvaluator
.evaluate(new EvaluationRequest(chatServiceResponse2));
.evaluate(chatServiceResponse2.toEvaluationRequest());
logger.info("" + evaluationResponse);
}