-
Jinja supported
+
+
diff --git a/inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/ChatGptRecommenderTraitsEditor.java b/inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/ChatGptRecommenderTraitsEditor.java
index 5b0fc54f3f0..03194a90a9d 100644
--- a/inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/ChatGptRecommenderTraitsEditor.java
+++ b/inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/ChatGptRecommenderTraitsEditor.java
@@ -17,8 +17,13 @@
*/
package de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt;
-import static de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt.ChatGptRecommenderTraits.DEFAULT_CHATGPT_URL;
+import static de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt.ChatGptRecommenderTraits.CEREBRAS_API_URL;
+import static de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt.ChatGptRecommenderTraits.GROQ_API_URL;
+import static de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt.ChatGptRecommenderTraits.LOCAL_OLLAMA_API_URL;
+import static de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt.ChatGptRecommenderTraits.OPENAI_API_URL;
import static de.tudarmstadt.ukp.inception.support.lambda.HtmlElementEvents.CHANGE_EVENT;
+import static de.tudarmstadt.ukp.inception.support.lambda.LambdaBehavior.visibleWhen;
+import static de.tudarmstadt.ukp.inception.support.lambda.LambdaBehavior.visibleWhenNot;
import static de.tudarmstadt.ukp.inception.support.wicket.WicketUtil.wrapInTryCatch;
import static java.lang.String.format;
import static java.util.Arrays.asList;
@@ -29,6 +34,8 @@
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
@@ -45,6 +52,7 @@
import org.wicketstuff.kendo.ui.form.combobox.ComboBoxBehavior;
import de.tudarmstadt.ukp.inception.recommendation.api.RecommendationService;
+import de.tudarmstadt.ukp.inception.recommendation.api.config.InteractiveRecommenderProperties;
import de.tudarmstadt.ukp.inception.recommendation.api.model.Recommender;
import de.tudarmstadt.ukp.inception.recommendation.api.recommender.AbstractTraitsEditor;
import de.tudarmstadt.ukp.inception.recommendation.api.recommender.RecommendationEngineFactory;
@@ -68,6 +76,7 @@ public class ChatGptRecommenderTraitsEditor
private @SpringBean RecommendationService recommendationService;
private @SpringBean RecommendationEngineFactory
toolFactory;
+ private @SpringBean InteractiveRecommenderProperties properties;
private final CompoundPropertyModel traits;
@@ -96,14 +105,6 @@ protected void onSubmit()
};
form.setOutputMarkupPlaceholderTag(true);
- var presetSelect = new DropDownChoice("preset");
- presetSelect.setModel(Model.of());
- presetSelect.setChoiceRenderer(new ChoiceRenderer<>("name"));
- presetSelect.setChoices(aPresets);
- presetSelect.add(new LambdaAjaxFormComponentUpdatingBehavior(CHANGE_EVENT,
- _target -> applyPreset(form, presetSelect.getModelObject(), _target)));
- form.add(presetSelect);
-
var modelsModel = LoadableDetachableModel.of(this::listModels);
var model = new ComboBox("model", modelsModel);
model.add(LambdaBehavior.onConfigure(() -> {
@@ -124,8 +125,11 @@ protected void onSubmit()
traits.getObject().setAuthentication(new ApiKeyAuthenticationTraits());
}
- var comboBox = new ComboBox("url", asList(DEFAULT_CHATGPT_URL,
- "https://api.cerebras.ai/v1", "https://api.groq.com/openai/v1"));
+ var comboBox = new ComboBox("url", asList(//
+ OPENAI_API_URL, //
+ CEREBRAS_API_URL, //
+ GROQ_API_URL, //
+ LOCAL_OLLAMA_API_URL));
comboBox.setOutputMarkupId(true);
comboBox.setRequired(true);
form.add(comboBox);
@@ -133,17 +137,38 @@ protected void onSubmit()
authenticationTraitsEditor = new ApiKeyAuthenticationTraitsEditor("authentication",
Model.of((ApiKeyAuthenticationTraits) traits.getObject().getAuthentication()));
form.add(authenticationTraitsEditor);
- form.add(new TextArea("prompt"));
+
+ var promptContainer = new WebMarkupContainer("promptContainer");
+ promptContainer.setOutputMarkupPlaceholderTag(true);
+ promptContainer.add(visibleWhenNot(traits.map(ChatGptRecommenderTraits::isInteractive)));
+ form.add(promptContainer);
+
+ var presetSelect = new DropDownChoice("preset");
+ presetSelect.setModel(Model.of());
+ presetSelect.setChoiceRenderer(new ChoiceRenderer<>("name"));
+ presetSelect.setChoices(aPresets);
+ presetSelect.add(new LambdaAjaxFormComponentUpdatingBehavior(CHANGE_EVENT,
+ _target -> applyPreset(form, presetSelect.getModelObject(), _target)));
+ promptContainer.add(presetSelect);
+
+ promptContainer.add(new TextArea("prompt"));
var markdownLabel = new MarkdownLabel("promptHints",
LoadableDetachableModel.of(this::getPromptHints));
markdownLabel.setOutputMarkupId(true);
- form.add(markdownLabel);
- form.add(new PromptingModeSelect("promptingMode")
+ promptContainer.add(markdownLabel);
+ promptContainer.add(new PromptingModeSelect("promptingMode")
.add(new LambdaAjaxFormComponentUpdatingBehavior(CHANGE_EVENT,
_target -> _target.add(markdownLabel))));
- form.add(new ExtractionModeSelect("extractionMode", traits.bind("extractionMode"),
- getModel()));
- form.add(new ChatGptResponseFormatSelect("format"));
+ promptContainer.add(new ExtractionModeSelect("extractionMode",
+ traits.bind("extractionMode"), getModel()));
+ promptContainer.add(new ChatGptResponseFormatSelect("format"));
+
+ form.add(new CheckBox("interactive") //
+ .setOutputMarkupId(true) //
+ .add(visibleWhen(properties::isEnabled)) //
+ .add(new LambdaAjaxFormComponentUpdatingBehavior(CHANGE_EVENT,
+ $ -> $.add(promptContainer))));
+
add(form);
}
diff --git a/inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/ChatGptRecommenderTraitsEditor.properties b/inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/wicket-package.properties
similarity index 88%
rename from inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/ChatGptRecommenderTraitsEditor.properties
rename to inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/wicket-package.properties
index cbf3b55f379..474440e529d 100644
--- a/inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/ChatGptRecommenderTraitsEditor.properties
+++ b/inception/inception-imls-chatgpt/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/wicket-package.properties
@@ -17,9 +17,11 @@ url=URL
authentication=Authentication
model=Model
prompt=Prompt
+promptJinja=Prompt (Jinja supported)
raw=Raw prompt
preset=Preset
options=Advanced options
+interactive=Interactive mode
promptingMode=Prompting mode
PromptingMode.PER_ANNOTATION=Per annotation
@@ -27,7 +29,7 @@ PromptingMode.PER_SENTENCE=Per sentence
PromptingMode.PER_DOCUMENT=Per document
format=Response format
-format.nullValid=Default
+format.nullValid=Plain text
ResponseFormatType.JSON_OBJECT=JSON object
extractionMode=Extraction mode
diff --git a/inception/inception-imls-chatgpt/src/main/resources/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/presets.yaml b/inception/inception-imls-chatgpt/src/main/resources/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/presets.yaml
index 6bfad8554a9..8fb1a4f1119 100644
--- a/inception/inception-imls-chatgpt/src/main/resources/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/presets.yaml
+++ b/inception/inception-imls-chatgpt/src/main/resources/de/tudarmstadt/ukp/inception/recommendation/imls/chatgpt/presets.yaml
@@ -3,7 +3,7 @@
format: json
extractionMode: mentions-from-json
prompt: |-
- Identify all named entities in the following text and return them as JSON.
+ Identify all named entities in the following text.
{{ text }}
@@ -12,7 +12,7 @@
format: json
extractionMode: mentions-from-json
prompt: |-
- Identify all named entities in the following text and return them as JSON.
+ Identify all named entities in the following text.
{% if examples %}
{% for example in examples %}
diff --git a/inception/inception-imls-chatgpt/src/test/java/de/tudarmstadt/ukp/inception/recommendation/imls/azureaiopenai/client/OpenAiClientTest.java b/inception/inception-imls-chatgpt/src/test/java/de/tudarmstadt/ukp/inception/recommendation/imls/azureaiopenai/client/OpenAiClientTest.java
index b0a02f5a8f0..c5cfe4edcf8 100644
--- a/inception/inception-imls-chatgpt/src/test/java/de/tudarmstadt/ukp/inception/recommendation/imls/azureaiopenai/client/OpenAiClientTest.java
+++ b/inception/inception-imls-chatgpt/src/test/java/de/tudarmstadt/ukp/inception/recommendation/imls/azureaiopenai/client/OpenAiClientTest.java
@@ -17,7 +17,7 @@
*/
package de.tudarmstadt.ukp.inception.recommendation.imls.azureaiopenai.client;
-import static de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt.ChatGptRecommenderTraits.DEFAULT_CHATGPT_URL;
+import static de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt.ChatGptRecommenderTraits.OPENAI_API_URL;
import static de.tudarmstadt.ukp.inception.recommendation.imls.chatgpt.client.ResponseFormatType.JSON_OBJECT;
import static org.assertj.core.api.Assumptions.assumeThat;
@@ -38,7 +38,7 @@ class OpenAiClientTest
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String CHATGPT_BASE_URL = System.getProperty("chatgpt-base-url",
- DEFAULT_CHATGPT_URL);
+ OPENAI_API_URL);
private static final String CHATGPT_API_KEY = System.getProperty("chatgpt-api-key");
private ChatGptClientImpl sut = new ChatGptClientImpl();
diff --git a/inception/inception-imls-elg/pom.xml b/inception/inception-imls-elg/pom.xml
index efb25c415ad..afa1a611345 100644
--- a/inception/inception-imls-elg/pom.xml
+++ b/inception/inception-imls-elg/pom.xml
@@ -20,7 +20,7 @@
de.tudarmstadt.ukp.inception.app
inception-app
- 34.0-SNAPSHOT
+ 35.0-SNAPSHOT
inception-imls-elg
diff --git a/inception/inception-imls-external/pom.xml b/inception/inception-imls-external/pom.xml
index b89999700eb..9921fff41f6 100644
--- a/inception/inception-imls-external/pom.xml
+++ b/inception/inception-imls-external/pom.xml
@@ -20,7 +20,7 @@
de.tudarmstadt.ukp.inception.app
inception-app
- 34.0-SNAPSHOT
+ 35.0-SNAPSHOT
inception-imls-external
diff --git a/inception/inception-imls-hf/pom.xml b/inception/inception-imls-hf/pom.xml
index 4bebf972681..1526a4d0293 100644
--- a/inception/inception-imls-hf/pom.xml
+++ b/inception/inception-imls-hf/pom.xml
@@ -20,7 +20,7 @@
de.tudarmstadt.ukp.inception.app
inception-app
- 34.0-SNAPSHOT
+ 35.0-SNAPSHOT
inception-imls-hf
diff --git a/inception/inception-imls-lapps/pom.xml b/inception/inception-imls-lapps/pom.xml
index 35a9b787bc4..ea5434c14b0 100644
--- a/inception/inception-imls-lapps/pom.xml
+++ b/inception/inception-imls-lapps/pom.xml
@@ -20,7 +20,7 @@
de.tudarmstadt.ukp.inception.app
inception-app
- 34.0-SNAPSHOT
+ 35.0-SNAPSHOT
inception-imls-lapps
diff --git a/inception/inception-imls-ollama/pom.xml b/inception/inception-imls-ollama/pom.xml
index 83c42cadeda..6eed9560afe 100644
--- a/inception/inception-imls-ollama/pom.xml
+++ b/inception/inception-imls-ollama/pom.xml
@@ -20,7 +20,7 @@
de.tudarmstadt.ukp.inception.app
inception-app
- 34.0-SNAPSHOT
+ 35.0-SNAPSHOT
inception-imls-ollama
diff --git a/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaInteractionPanel.html b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaInteractionPanel.html
new file mode 100644
index 00000000000..206109a508e
--- /dev/null
+++ b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaInteractionPanel.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
diff --git a/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaInteractionPanel.java b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaInteractionPanel.java
new file mode 100644
index 00000000000..fcc892f30fc
--- /dev/null
+++ b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaInteractionPanel.java
@@ -0,0 +1,150 @@
+/*
+ * Licensed to the Technische Universität Darmstadt under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The Technische Universität Darmstadt
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.
+ *
+ * http://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 de.tudarmstadt.ukp.inception.recommendation.imls.ollama;
+
+import static de.tudarmstadt.ukp.inception.recommendation.imls.ollama.client.OllamaGenerateResponseFormat.JSON;
+import static de.tudarmstadt.ukp.inception.recommendation.imls.support.llm.response.ExtractionMode.MENTIONS_FROM_JSON;
+import static de.tudarmstadt.ukp.inception.support.lambda.HtmlElementEvents.CHANGE_EVENT;
+
+import java.util.List;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import de.tudarmstadt.ukp.inception.recommendation.api.RecommendationService;
+import de.tudarmstadt.ukp.inception.recommendation.api.model.Recommender;
+import de.tudarmstadt.ukp.inception.recommendation.api.recommender.AbstractTraitsEditor;
+import de.tudarmstadt.ukp.inception.recommendation.api.recommender.RecommendationEngineFactory;
+import de.tudarmstadt.ukp.inception.recommendation.imls.support.llm.prompt.PromptingModeSelect;
+import de.tudarmstadt.ukp.inception.recommendation.imls.support.llm.response.ExtractionModeSelect;
+import de.tudarmstadt.ukp.inception.support.lambda.LambdaAjaxFormComponentUpdatingBehavior;
+import de.tudarmstadt.ukp.inception.support.lambda.LambdaBehavior;
+import de.tudarmstadt.ukp.inception.support.markdown.MarkdownLabel;
+
+public class OllamaInteractionPanel
+ extends AbstractTraitsEditor
+{
+ private static final long serialVersionUID = 1677442652521110324L;
+
+ private static final String MID_FORM = "form";
+ private static final String MID_PROMPT = "prompt";
+ private static final String MID_NAME = "name";
+ private static final String MID_PRESET = "preset";
+ private static final String MID_FORMAT = "format";
+ private static final String MID_EXTRACTION_MODE = "extractionMode";
+ private static final String MID_PROMPTING_MODE = "promptingMode";
+ private static final String MID_PROMPT_HINTS = "promptHints";
+
+ private @SpringBean RecommendationService recommendationService;
+ private @SpringBean RecommendationEngineFactory toolFactory;
+
+ private final CompoundPropertyModel traits;
+
+ public OllamaInteractionPanel(String aId, IModel aRecommender,
+ IModel> aPresets)
+ {
+ super(aId, aRecommender);
+
+ setOutputMarkupId(true);
+
+ traits = CompoundPropertyModel.of(toolFactory.readTraits(aRecommender.getObject()));
+
+ var form = new Form(MID_FORM, traits)
+ {
+ private static final long serialVersionUID = -1;
+
+ @Override
+ protected void onSubmit()
+ {
+ super.onSubmit();
+ toolFactory.writeTraits(aRecommender.getObject(), traits.getObject());
+ }
+ };
+ form.setOutputMarkupPlaceholderTag(true);
+
+ var presetSelect = new DropDownChoice(MID_PRESET);
+ presetSelect.setModel(Model.of());
+ presetSelect.setChoiceRenderer(new ChoiceRenderer<>(MID_NAME));
+ presetSelect.setChoices(aPresets);
+ presetSelect.add(new LambdaAjaxFormComponentUpdatingBehavior(CHANGE_EVENT,
+ _target -> applyPreset(form, presetSelect.getModelObject(), _target)));
+ form.add(presetSelect);
+
+ form.add(new TextArea(MID_PROMPT));
+
+ var markdownLabel = new MarkdownLabel(MID_PROMPT_HINTS,
+ LoadableDetachableModel.of(this::getPromptHints));
+ markdownLabel.setOutputMarkupId(true);
+ form.add(markdownLabel);
+
+ form.add(new PromptingModeSelect(MID_PROMPTING_MODE)
+ .add(new LambdaAjaxFormComponentUpdatingBehavior(CHANGE_EVENT,
+ _target -> _target.add(markdownLabel))));
+
+ var responseFormat = new OllamaResponseFormatSelect(MID_FORMAT);
+ responseFormat.setOutputMarkupPlaceholderTag(true);
+ responseFormat.add(new LambdaAjaxFormComponentUpdatingBehavior(CHANGE_EVENT));
+ responseFormat.add(LambdaBehavior
+ .visibleWhen(traits.map(t -> t.getExtractionMode() != MENTIONS_FROM_JSON)));
+ form.add(responseFormat);
+
+ form.add(new ExtractionModeSelect(MID_EXTRACTION_MODE, traits.bind(MID_EXTRACTION_MODE),
+ getModel())
+ .add(new LambdaAjaxFormComponentUpdatingBehavior(CHANGE_EVENT,
+ _target -> actionExtractionModeChanged(markdownLabel,
+ responseFormat, _target))));
+
+ add(form);
+ }
+
+ private void actionExtractionModeChanged(MarkdownLabel markdownLabel,
+ OllamaResponseFormatSelect responseFormat, AjaxRequestTarget _target)
+ {
+ if (traits.getObject().getExtractionMode() == MENTIONS_FROM_JSON) {
+ traits.getObject().setFormat(JSON);
+ }
+
+ _target.add(markdownLabel, responseFormat);
+ }
+
+ private void applyPreset(Form aForm, Preset aPreset,
+ AjaxRequestTarget aTarget)
+ {
+ if (aPreset != null) {
+ var settings = traits.getObject();
+ settings.setPrompt(aPreset.getPrompt());
+ settings.setExtractionMode(aPreset.getExtractionMode());
+ settings.setFormat(aPreset.getFormat());
+ settings.setPromptingMode(aPreset.getPromptingMode());
+ }
+ aTarget.add(aForm);
+ }
+
+ private String getPromptHints()
+ {
+ return traits.getObject().getPromptingMode().getHints();
+ }
+}
diff --git a/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderFactory.java b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderFactory.java
index 9ea98a4d9e8..251b15d5b5e 100644
--- a/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderFactory.java
+++ b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderFactory.java
@@ -24,6 +24,7 @@
import java.util.Collections;
import java.util.List;
+import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.util.ListModel;
import org.slf4j.Logger;
@@ -117,6 +118,18 @@ public boolean isMultipleRecommendationProvider()
return false;
}
+ @Override
+ public boolean isInteractive(Recommender aRecommender)
+ {
+ return readTraits(aRecommender).isInteractive();
+ }
+
+ @Override
+ public Panel createInteractionPanel(String aId, IModel aModel)
+ {
+ return new OllamaInteractionPanel(aId, aModel, new ListModel<>(getPresets()));
+ }
+
private List getPresets()
{
try {
diff --git a/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderTraits.java b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderTraits.java
index c6c12c8d3e6..cf451a32a3c 100644
--- a/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderTraits.java
+++ b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderTraits.java
@@ -55,6 +55,8 @@ public class OllamaRecommenderTraits
private @JsonInclude(NON_EMPTY) Map options = new LinkedHashMap();
+ private boolean interactive;
+
public String getUrl()
{
return url;
@@ -135,4 +137,14 @@ public void setOptions(Map aOptions)
options.clear();
options.putAll(aOptions);
}
+
+ public boolean isInteractive()
+ {
+ return interactive;
+ }
+
+ public void setInteractive(boolean aInteractive)
+ {
+ interactive = aInteractive;
+ }
}
diff --git a/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderTraitsEditor.html b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderTraitsEditor.html
index 5f6080ca20b..c52b6d96bfc 100644
--- a/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderTraitsEditor.html
+++ b/inception/inception-imls-ollama/src/main/java/de/tudarmstadt/ukp/inception/recommendation/imls/ollama/OllamaRecommenderTraitsEditor.html
@@ -42,77 +42,89 @@