diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/llm/LLMResult.java b/spring-ai-core/src/main/java/org/springframework/ai/core/llm/LLMResult.java new file mode 100644 index 000000000..a6e67bb59 --- /dev/null +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/llm/LLMResult.java @@ -0,0 +1,41 @@ +package org.springframework.ai.core.llm;/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.util.List; +import java.util.Map; + +import org.springframework.ai.core.prompt.Generation; + +public interface LLMResult { + + /** + * The list of generated outputs. It iss a list of lists because a single input could + * have multiple outputs, and multiple inputs could be passed in. + * @return + */ + List> getGenerations(); + + /** + * Arbitrary LLM-provider specific output + */ + Map getProviderOutput(); + + /** + * The run metadata information + */ + Map getRunInfo(); + +} diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/llm/LlmClient.java b/spring-ai-core/src/main/java/org/springframework/ai/core/llm/LlmClient.java new file mode 100644 index 000000000..d87c08ee3 --- /dev/null +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/llm/LlmClient.java @@ -0,0 +1,27 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.core.llm; + +import org.springframework.ai.core.prompt.Prompt; + +public interface LlmClient { + + String generate(String text); + + LLMResult generate(Prompt... prompts); + +} diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/AbstractPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/AbstractPromptTemplate.java similarity index 95% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/AbstractPromptTemplate.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/AbstractPromptTemplate.java index d577af644..de1bbdf6b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/AbstractPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/AbstractPromptTemplate.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; public abstract class AbstractPromptTemplate implements PromptOperations { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/AiPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/AiPromptTemplate.java similarity index 91% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/AiPromptTemplate.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/AiPromptTemplate.java index 665ca6ab6..46f7c5ec7 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/AiPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/AiPromptTemplate.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; import java.util.Map; -import org.springframework.ai.core.prompts.messages.AiMessage; +import org.springframework.ai.core.prompt.messages.AiMessage; public class AiPromptTemplate extends PromptTemplate { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/ChatPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/ChatPromptTemplate.java similarity index 91% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/ChatPromptTemplate.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/ChatPromptTemplate.java index 86c04029f..143babed9 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/ChatPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/ChatPromptTemplate.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; import java.util.Map; -import org.springframework.ai.core.prompts.messages.ChatMessage; +import org.springframework.ai.core.prompt.messages.ChatMessage; public class ChatPromptTemplate extends PromptTemplate { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/FunctionPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/FunctionPromptTemplate.java similarity index 94% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/FunctionPromptTemplate.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/FunctionPromptTemplate.java index 881db0948..02afb1ccb 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/FunctionPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/FunctionPromptTemplate.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; public class FunctionPromptTemplate extends PromptTemplate { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/Generation.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/Generation.java similarity index 94% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/Generation.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/Generation.java index 76be53095..072c77972 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/Generation.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/Generation.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/OutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/OutputParser.java similarity index 94% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/OutputParser.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/OutputParser.java index e880f6490..2c1fc3412 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/OutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/OutputParser.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; import java.util.List; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/Prompt.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/Prompt.java similarity index 87% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/Prompt.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/Prompt.java index 7f61df39a..639f6b68f 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/Prompt.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/Prompt.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; import java.util.Collections; import java.util.List; -import org.springframework.ai.core.prompts.messages.HumanMessage; -import org.springframework.ai.core.prompts.messages.Message; +import org.springframework.ai.core.prompt.messages.HumanMessage; +import org.springframework.ai.core.prompt.messages.Message; public class Prompt { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/PromptOperations.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/PromptOperations.java similarity index 89% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/PromptOperations.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/PromptOperations.java index 13298a6b2..c49a10b4d 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/PromptOperations.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/PromptOperations.java @@ -14,12 +14,10 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; import java.util.Map; -import org.springframework.ai.core.prompts.messages.MessageType; - public interface PromptOperations { String getTemplate(); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/PromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/PromptTemplate.java similarity index 84% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/PromptTemplate.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/PromptTemplate.java index 1e9595a08..acd7b24ee 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/PromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/PromptTemplate.java @@ -14,9 +14,8 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -30,14 +29,6 @@ import org.antlr.runtime.TokenStream; import org.stringtemplate.v4.ST; import org.stringtemplate.v4.compiler.STLexer; -import org.springframework.ai.core.prompts.messages.AiMessage; -import org.springframework.ai.core.prompts.messages.ChatMessage; -import org.springframework.ai.core.prompts.messages.FunctionMessage; -import org.springframework.ai.core.prompts.messages.HumanMessage; -import org.springframework.ai.core.prompts.messages.Message; -import org.springframework.ai.core.prompts.messages.MessageType; -import org.springframework.ai.core.prompts.messages.SystemMessage; - public class PromptTemplate extends AbstractPromptTemplate { private ST st; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/SystemPromptTemplate.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/SystemPromptTemplate.java similarity index 89% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/SystemPromptTemplate.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/SystemPromptTemplate.java index f992b4e45..fcc603db9 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/SystemPromptTemplate.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/SystemPromptTemplate.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; import java.util.Map; -import org.springframework.ai.core.prompts.messages.SystemMessage; +import org.springframework.ai.core.prompt.messages.SystemMessage; public class SystemPromptTemplate extends PromptTemplate { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/TemplateFormat.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/TemplateFormat.java similarity index 96% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/TemplateFormat.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/TemplateFormat.java index 59ef75cc2..7cfcb69c4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/TemplateFormat.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/TemplateFormat.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; public enum TemplateFormat { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/AbstractMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/AbstractMessage.java similarity index 96% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/AbstractMessage.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/AbstractMessage.java index 78caec75c..d9bbbe427 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/AbstractMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/AbstractMessage.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts.messages; +package org.springframework.ai.core.prompt.messages; import java.util.HashMap; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/AiMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/AiMessage.java similarity index 95% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/AiMessage.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/AiMessage.java index 19bac0137..b03b35b0b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/AiMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/AiMessage.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts.messages; +package org.springframework.ai.core.prompt.messages; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/ChatMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/ChatMessage.java similarity index 95% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/ChatMessage.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/ChatMessage.java index d656b3714..a2c12f042 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/ChatMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/ChatMessage.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts.messages; +package org.springframework.ai.core.prompt.messages; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/FunctionMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/FunctionMessage.java similarity index 95% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/FunctionMessage.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/FunctionMessage.java index 9cd15d1f5..2c82813e8 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/FunctionMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/FunctionMessage.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts.messages; +package org.springframework.ai.core.prompt.messages; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/HumanMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/HumanMessage.java similarity index 94% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/HumanMessage.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/HumanMessage.java index eaaa3cf46..d0da89e86 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/HumanMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/HumanMessage.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts.messages; +package org.springframework.ai.core.prompt.messages; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/Message.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/Message.java similarity index 94% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/Message.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/Message.java index 4b98e9349..60613d445 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/Message.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/Message.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts.messages; +package org.springframework.ai.core.prompt.messages; import java.util.Map; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/MessageType.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/MessageType.java similarity index 95% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/MessageType.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/MessageType.java index ca64c084f..7478d197b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/MessageType.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/MessageType.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.core.prompts.messages; +package org.springframework.ai.core.prompt.messages; public enum MessageType { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/SystemMessage.java b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/SystemMessage.java similarity index 94% rename from spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/SystemMessage.java rename to spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/SystemMessage.java index 71f90f6d4..1c85d9091 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/core/prompts/messages/SystemMessage.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/core/prompt/messages/SystemMessage.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts.messages; +package org.springframework.ai.core.prompt.messages; import java.util.Map; diff --git a/spring-ai-core/src/test/java/org/springframework/ai/core/prompts/ChatTests.java b/spring-ai-core/src/test/java/org/springframework/ai/core/prompt/ChatTests.java similarity index 93% rename from spring-ai-core/src/test/java/org/springframework/ai/core/prompts/ChatTests.java rename to spring-ai-core/src/test/java/org/springframework/ai/core/prompt/ChatTests.java index 20c75558e..98a2d81fb 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/core/prompts/ChatTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/core/prompt/ChatTests.java @@ -14,9 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; - -import org.junit.jupiter.api.Test; +package org.springframework.ai.core.prompt; public class ChatTests { diff --git a/spring-ai-core/src/test/java/org/springframework/ai/core/prompts/PromptTests.java b/spring-ai-core/src/test/java/org/springframework/ai/core/prompt/PromptTests.java similarity index 99% rename from spring-ai-core/src/test/java/org/springframework/ai/core/prompts/PromptTests.java rename to spring-ai-core/src/test/java/org/springframework/ai/core/prompt/PromptTests.java index 3d67b4bde..15d192c9c 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/core/prompts/PromptTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/core/prompt/PromptTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.core.prompts; +package org.springframework.ai.core.prompt; import java.util.HashMap; import java.util.Map;