aboutsummaryrefslogtreecommitdiffstats
path: root/model-integration/src/main/java/ai/vespa/llm
diff options
context:
space:
mode:
Diffstat (limited to 'model-integration/src/main/java/ai/vespa/llm')
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/Completion.java41
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/LanguageModel.java18
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/Prompt.java23
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/StringPrompt.java43
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/client/OpenAiClient.java84
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/client/package-info.java11
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/generation/Generator.java (renamed from model-integration/src/main/java/ai/vespa/llm/Generator.java)2
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/generation/GeneratorOptions.java (renamed from model-integration/src/main/java/ai/vespa/llm/GeneratorOptions.java)2
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/generation/package-info.java (renamed from model-integration/src/main/java/ai/vespa/llm/package-info.java)4
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/test/MockLanguageModel.java44
-rw-r--r--model-integration/src/main/java/ai/vespa/llm/test/package-info.java11
11 files changed, 4 insertions, 279 deletions
diff --git a/model-integration/src/main/java/ai/vespa/llm/Completion.java b/model-integration/src/main/java/ai/vespa/llm/Completion.java
deleted file mode 100644
index 5f483a65186..00000000000
--- a/model-integration/src/main/java/ai/vespa/llm/Completion.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.llm;
-
-import com.yahoo.api.annotations.Beta;
-
-import java.util.Objects;
-
-/**
- * A completion from a language model.
- *
- * @author bratseth
- */
-@Beta
-public record Completion(String text, FinishReason finishReason) {
-
- public enum FinishReason {
-
- /** The maximum length of a completion was reached. */
- length,
-
- /** The completion is the predicted ending of the prompt. */
- stop
-
- }
-
- public Completion(String text, FinishReason finishReason) {
- this.text = Objects.requireNonNull(text);
- this.finishReason = Objects.requireNonNull(finishReason);
- }
-
- /** Returns the generated text completion. */
- public String text() { return text; }
-
- /** Returns the reason this completion ended. */
- public FinishReason finishReason() { return finishReason; }
-
- public static Completion from(String text) {
- return new Completion(text, FinishReason.stop);
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/llm/LanguageModel.java b/model-integration/src/main/java/ai/vespa/llm/LanguageModel.java
deleted file mode 100644
index 0739162c5ee..00000000000
--- a/model-integration/src/main/java/ai/vespa/llm/LanguageModel.java
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.llm;
-
-import com.yahoo.api.annotations.Beta;
-
-import java.util.List;
-
-/**
- * Interface to language models.
- *
- * @author bratseth
- */
-@Beta
-public interface LanguageModel {
-
- List<Completion> complete(Prompt prompt);
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/llm/Prompt.java b/model-integration/src/main/java/ai/vespa/llm/Prompt.java
deleted file mode 100644
index 77093d5e21b..00000000000
--- a/model-integration/src/main/java/ai/vespa/llm/Prompt.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.llm;
-
-import com.yahoo.api.annotations.Beta;
-
-/**
- * A prompt that can be given to a large language model to generate a completion.
- *
- * @author bratseth
- */
-@Beta
-public abstract class Prompt {
-
- public abstract String asString();
-
- /** Returns a new prompt with the text of the given completion appended. */
- public Prompt append(Completion completion) {
- return append(completion.text());
- }
-
- public abstract Prompt append(String text);
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/llm/StringPrompt.java b/model-integration/src/main/java/ai/vespa/llm/StringPrompt.java
deleted file mode 100644
index 0af8388dfb1..00000000000
--- a/model-integration/src/main/java/ai/vespa/llm/StringPrompt.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package ai.vespa.llm;
-
-import com.yahoo.api.annotations.Beta;
-
-import java.util.Objects;
-
-/**
- * A prompt which just consists of a string.
- *
- * @author bratseth
- */
-@Beta
-public class StringPrompt extends Prompt {
-
- private final String string;
-
- private StringPrompt(String string) {
- this.string = Objects.requireNonNull(string);
- }
-
- @Override
- public String asString() { return string; }
-
- @Override
- public StringPrompt append(String text) {
- return StringPrompt.from(string + text);
- }
-
- @Override
- public StringPrompt append(Completion completion) {
- return append(completion.text());
- }
-
- @Override
- public String toString() {
- return string;
- }
-
- public static StringPrompt from(String string) {
- return new StringPrompt(string);
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/llm/client/OpenAiClient.java b/model-integration/src/main/java/ai/vespa/llm/client/OpenAiClient.java
deleted file mode 100644
index 3f4475b2482..00000000000
--- a/model-integration/src/main/java/ai/vespa/llm/client/OpenAiClient.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.llm.client;
-
-import ai.vespa.llm.Completion;
-import ai.vespa.llm.LanguageModel;
-import ai.vespa.llm.Prompt;
-import com.theokanning.openai.OpenAiHttpException;
-import com.theokanning.openai.completion.CompletionRequest;
-import com.theokanning.openai.service.OpenAiService;
-import com.yahoo.api.annotations.Beta;
-import com.yahoo.yolean.Exceptions;
-
-import java.util.List;
-
-/**
- * A client to the OpenAI language model API. Refer to https://platform.openai.com/docs/api-reference/.
- *
- * @author bratseth
- */
-@Beta
-public class OpenAiClient implements LanguageModel {
-
- private final OpenAiService openAiService;
- private final String model;
- private final boolean echo;
-
- private OpenAiClient(Builder builder) {
- openAiService = new OpenAiService(builder.token);
- this.model = builder.model;
- this.echo = builder.echo;
- }
-
- @Override
- public List<Completion> complete(Prompt prompt) {
- try {
- CompletionRequest completionRequest = CompletionRequest.builder()
- .prompt(prompt.asString())
- .model(model)
- .echo(echo)
- .build();
- return openAiService.createCompletion(completionRequest).getChoices().stream()
- .map(c -> new Completion(c.getText(), toFinishReason(c.getFinish_reason()))).toList();
- }
- catch (OpenAiHttpException e) {
- throw new RuntimeException(Exceptions.toMessageString(e));
- }
- }
-
- private Completion.FinishReason toFinishReason(String finishReasonString) {
- return switch(finishReasonString) {
- case "length" -> Completion.FinishReason.length;
- case "stop" -> Completion.FinishReason.stop;
- default -> throw new IllegalStateException("Unknown OpenAi completion finish reason '" + finishReasonString + "'");
- };
- }
-
- public static class Builder {
-
- private final String token;
- private String model = "text-davinci-003";
- private boolean echo = false;
-
- public Builder(String token) {
- this.token = token;
- }
-
- /** One of the language models listed at https://platform.openai.com/docs/models */
- public Builder model(String model) {
- this.model = model;
- return this;
- }
-
- public Builder echo(boolean echo) {
- this.echo = echo;
- return this;
- }
-
- public OpenAiClient build() {
- return new OpenAiClient(this);
- }
-
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/llm/client/package-info.java b/model-integration/src/main/java/ai/vespa/llm/client/package-info.java
deleted file mode 100644
index c95f87eec3c..00000000000
--- a/model-integration/src/main/java/ai/vespa/llm/client/package-info.java
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-@ExportPackage
-@PublicApi
-package ai.vespa.llm.client;
-
-import com.yahoo.api.annotations.PublicApi;
-import com.yahoo.osgi.annotation.ExportPackage;
-
-/**
- * Clients to externally hosted large language models.
- */ \ No newline at end of file
diff --git a/model-integration/src/main/java/ai/vespa/llm/Generator.java b/model-integration/src/main/java/ai/vespa/llm/generation/Generator.java
index 6b60041947b..f20925b86ee 100644
--- a/model-integration/src/main/java/ai/vespa/llm/Generator.java
+++ b/model-integration/src/main/java/ai/vespa/llm/generation/Generator.java
@@ -1,4 +1,4 @@
-package ai.vespa.llm;
+package ai.vespa.llm.generation;
import ai.vespa.modelintegration.evaluator.OnnxEvaluator;
import ai.vespa.modelintegration.evaluator.OnnxEvaluatorOptions;
diff --git a/model-integration/src/main/java/ai/vespa/llm/GeneratorOptions.java b/model-integration/src/main/java/ai/vespa/llm/generation/GeneratorOptions.java
index 8b490a733dd..79b466e5a74 100644
--- a/model-integration/src/main/java/ai/vespa/llm/GeneratorOptions.java
+++ b/model-integration/src/main/java/ai/vespa/llm/generation/GeneratorOptions.java
@@ -1,4 +1,4 @@
-package ai.vespa.llm;
+package ai.vespa.llm.generation;
import com.yahoo.api.annotations.Beta;
diff --git a/model-integration/src/main/java/ai/vespa/llm/package-info.java b/model-integration/src/main/java/ai/vespa/llm/generation/package-info.java
index 04fc24c51ee..ed3adb2f59e 100644
--- a/model-integration/src/main/java/ai/vespa/llm/package-info.java
+++ b/model-integration/src/main/java/ai/vespa/llm/generation/package-info.java
@@ -1,11 +1,11 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
-package ai.vespa.llm;
+package ai.vespa.llm.generation;
import com.yahoo.api.annotations.PublicApi;
import com.yahoo.osgi.annotation.ExportPackage;
/**
- * API for working with large language models.
+ * API for generating text with language models.
*/ \ No newline at end of file
diff --git a/model-integration/src/main/java/ai/vespa/llm/test/MockLanguageModel.java b/model-integration/src/main/java/ai/vespa/llm/test/MockLanguageModel.java
deleted file mode 100644
index 54b085a451c..00000000000
--- a/model-integration/src/main/java/ai/vespa/llm/test/MockLanguageModel.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.llm.test;
-
-import ai.vespa.llm.Completion;
-import ai.vespa.llm.LanguageModel;
-import ai.vespa.llm.Prompt;
-import com.yahoo.api.annotations.Beta;
-
-import java.util.List;
-import java.util.function.Function;
-
-/**
- * @author bratseth
- */
-@Beta
-public class MockLanguageModel implements LanguageModel {
-
- private final Function<Prompt, List<Completion>> completer;
-
- public MockLanguageModel(Builder builder) {
- completer = builder.completer;
- }
-
- @Override
- public List<Completion> complete(Prompt prompt) {
- return completer.apply(prompt);
- }
-
- public static class Builder {
-
- private Function<Prompt, List<Completion>> completer = prompt -> List.of(Completion.from(""));
-
- public Builder completer(Function<Prompt, List<Completion>> completer) {
- this.completer = completer;
- return this;
- }
-
- public Builder() {}
-
- public MockLanguageModel build() { return new MockLanguageModel(this); }
-
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/llm/test/package-info.java b/model-integration/src/main/java/ai/vespa/llm/test/package-info.java
deleted file mode 100644
index 0d51815fd6d..00000000000
--- a/model-integration/src/main/java/ai/vespa/llm/test/package-info.java
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-@ExportPackage
-@PublicApi
-package ai.vespa.llm.test;
-
-/**
- * Tools for writing tests when working with large language models.
- */
-
-import com.yahoo.api.annotations.PublicApi;
-import com.yahoo.osgi.annotation.ExportPackage; \ No newline at end of file