add List<Media> to node and move ai.transformer package to ai.prompt.transformer

This commit is contained in:
Mark Pollack
2024-04-19 11:12:36 -04:00
parent 955e113a60
commit ed48662cd9
11 changed files with 32 additions and 21 deletions

View File

@@ -5,11 +5,11 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
import org.springframework.ai.chat.ChatClient;
import org.springframework.ai.chat.agent.ChatAgent;
import org.springframework.ai.chat.agent.DefaultChatAgent;
import org.springframework.ai.chat.transformer.QuestionContextAugmentor;
import org.springframework.ai.chat.transformer.VectorStoreRetriever;
import org.springframework.ai.chat.prompt.transformer.QuestionContextAugmentor;
import org.springframework.ai.chat.prompt.transformer.VectorStoreRetriever;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.transformer.PromptContext;
import org.springframework.ai.chat.prompt.transformer.PromptContext;
import org.springframework.ai.embedding.EmbeddingClient;
import org.springframework.ai.evaluation.EvaluationRequest;
import org.springframework.ai.evaluation.EvaluationResponse;

View File

@@ -1,7 +1,7 @@
package org.springframework.ai.chat.agent;
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.transformer.PromptContext;
import org.springframework.ai.chat.prompt.transformer.PromptContext;
import java.util.Objects;

View File

@@ -1,6 +1,6 @@
package org.springframework.ai.chat.agent;
import org.springframework.ai.chat.transformer.PromptContext;
import org.springframework.ai.chat.prompt.transformer.PromptContext;
/**
* A ChatAgent encapsulates common AI workflows such as Retrieval Augmented Generation.

View File

@@ -2,8 +2,8 @@ package org.springframework.ai.chat.agent;
import org.springframework.ai.chat.ChatClient;
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.transformer.PromptContext;
import org.springframework.ai.chat.transformer.PromptTransformer;
import org.springframework.ai.chat.prompt.transformer.PromptContext;
import org.springframework.ai.chat.prompt.transformer.PromptTransformer;
import java.util.ArrayList;
import java.util.List;

View File

@@ -32,8 +32,6 @@ public interface Message extends Node<String> {
String getContent();
List<Media> getMedia();
MessageType getMessageType();
}

View File

@@ -1,12 +1,9 @@
package org.springframework.ai.chat.transformer;
package org.springframework.ai.chat.prompt.transformer;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.node.Node;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
/**
* The shared, at the moment, mutable, data structure that can be used to implement
@@ -19,13 +16,13 @@ public class PromptContext {
private Prompt prompt; // The most up-to-date prompt to use
List<Node<?>> nodes; // The most up-to-date data to use
private List<Node<?>> nodes; // The most up-to-date data to use
private List<Prompt> promptHistory;
private String conversationId;
private Map<String, Object> metadata;
private Map<String, Object> metadata = new HashMap<>();
public PromptContext(Prompt prompt) {
this(prompt, new ArrayList<>());

View File

@@ -1,4 +1,4 @@
package org.springframework.ai.chat.transformer;
package org.springframework.ai.chat.prompt.transformer;
/**
* Responsible for transforming a Prompt. The PromptContext contains the necessary data to

View File

@@ -1,12 +1,10 @@
package org.springframework.ai.chat.transformer;
package org.springframework.ai.chat.prompt.transformer;
import org.springframework.ai.chat.transformer.PromptContext;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.MessageType;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.ai.chat.transformer.PromptTransformer;
import org.springframework.ai.document.Document;
import org.springframework.ai.node.Node;

View File

@@ -1,4 +1,4 @@
package org.springframework.ai.chat.transformer;
package org.springframework.ai.chat.prompt.transformer;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.MessageType;

View File

@@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.ai.chat.messages.Media;
import org.springframework.ai.document.id.IdGenerator;
import org.springframework.ai.document.id.RandomIdGenerator;
import org.springframework.ai.node.Node;
@@ -55,6 +56,8 @@ public class Document implements Node<String> {
*/
private String content;
private List<Media> media;
/**
* Embedding of the document. Note: ephemeral field.
*/
@@ -81,12 +84,17 @@ public class Document implements Node<String> {
}
public Document(String id, String content, Map<String, Object> metadata) {
this(id, content, List.of(), metadata);
}
public Document(String id, String content, List<Media> media, Map<String, Object> metadata) {
Assert.hasText(id, "id must not be null");
Assert.hasText(content, "content must not be null");
Assert.notNull(metadata, "metadata must not be null");
this.id = id;
this.content = content;
this.media = media;
this.metadata = metadata;
}
@@ -99,6 +107,11 @@ public class Document implements Node<String> {
return this.content;
}
@Override
public List<Media> getMedia() {
return this.media;
}
@JsonIgnore
public String getFormattedContent() {
return this.getFormattedContent(MetadataMode.ALL);

View File

@@ -1,5 +1,8 @@
package org.springframework.ai.node;
import org.springframework.ai.chat.messages.Media;
import java.util.List;
import java.util.Map;
/**
@@ -13,6 +16,8 @@ public interface Node<T> {
T getContent();
List<Media> getMedia();
Map<String, Object> getMetadata();
}