Browse Source

[ML] Require question to be non-null in QuestionAnsweringConfig (#107972)

* require question at request time

---------

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Max Hniebergall 1 year ago
parent
commit
6210cdf886

+ 5 - 0
docs/changelog/107972.yaml

@@ -0,0 +1,5 @@
+pr: 107972
+summary: Require question to be non-null in `QuestionAnsweringConfig`
+area: Machine Learning
+type: bug
+issues: []

+ 3 - 0
x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/nlp/QuestionAnsweringProcessor.java

@@ -76,6 +76,9 @@ public class QuestionAnsweringProcessor extends NlpTask.Processor {
             if (inputs.size() > 1) {
                 throw ExceptionsHelper.badRequestException("Unable to do question answering on more than one text input at a time");
             }
+            if (question == null) {
+                throw ExceptionsHelper.badRequestException("Question is required for question answering");
+            }
             String context = inputs.get(0);
             List<TokenizationResult.Tokens> tokenizations = tokenizer.tokenize(question, context, truncate, span, 0);
             TokenizationResult result = tokenizer.buildTokenizationResult(tokenizations);

+ 4 - 0
x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/nlp/tokenizers/BertTokenizer.java

@@ -236,6 +236,10 @@ public class BertTokenizer extends NlpTokenizer {
         ).buildRequest(requestId, truncate);
     }
 
+    /**
+     * @param seq cannot be null
+     * @return InnerTokenization
+     */
     @Override
     public InnerTokenization innerTokenize(String seq) {
         List<Integer> tokenPositionMap = new ArrayList<>();

+ 4 - 0
x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/nlp/tokenizers/RobertaTokenizer.java

@@ -178,6 +178,10 @@ public class RobertaTokenizer extends NlpTokenizer {
         return new RobertaTokenizationResult.RobertaTokensBuilder(withSpecialTokens, clsTokenId, sepTokenId);
     }
 
+    /**
+     * @param seq cannot be null
+     * @return InnerTokenization
+     */
     @Override
     public InnerTokenization innerTokenize(String seq) {
         List<Integer> tokenPositionMap = new ArrayList<>();

+ 4 - 0
x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/nlp/tokenizers/XLMRobertaTokenizer.java

@@ -173,6 +173,10 @@ public class XLMRobertaTokenizer extends NlpTokenizer {
         return new XLMRobertaTokenizationResult.XLMRobertaTokensBuilder(withSpecialTokens, clsTokenId, sepTokenId);
     }
 
+    /**
+     * @param seq cannot be null
+     * @return InnerTokenization
+     */
     @Override
     public InnerTokenization innerTokenize(String seq) {
         List<Integer> tokenPositionMap = new ArrayList<>();