You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by ar...@apache.org on 2022/09/27 20:43:39 UTC

[incubator-nlpcraft] 01/02: Update NCModel.scala

This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 11314bd965e8642ee766793533e4ce312077423f
Author: Aaron Radzinski <ar...@datalingvo.com>
AuthorDate: Tue Sep 27 11:19:01 2022 -0700

    Update NCModel.scala
---
 .../main/scala/org/apache/nlpcraft/NCModel.scala   | 84 +++++++++++-----------
 1 file changed, 43 insertions(+), 41 deletions(-)

diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModel.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModel.scala
index 091f3329..16d41b34 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModel.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModel.scala
@@ -55,34 +55,33 @@ trait NCModel:
     def getPipeline: NCPipeline
 
     /**
-      * TODO: drop link to onVariant
-      * A callback that is called when a fully assembled query context is ready. This callback is called after
-      * all {@link # onVariant ( NCVariant )} callbacks are called but before any {@link # onMatchedIntent ( NCIntentMatch )} are
-      * called, i.e. right before the intent matching is performed. It's called always once per input query processing.
-      * Typical use case for this callback is to perform logging, debugging, statistic or usage collection, explicit
-      * update or initialization of conversation context, security audit or validation, etc.
+      * A callback that is called when a fully assembled query context is ready. This is the first of the callbacks
+      * that is called on the model and right before the intent matching is performed. It's called always once per
+      * input query processing. Typical use case for this callback is to perform logging, debugging, statistic or
+      * usage collection, explicit update or initialization of conversation context, security audit or validation, etc.
       *
-      * Default implementation returns `null`.
+      * Default implementation returns `None`.
       *
       * @param ctx Input query context.
-      * @return Optional query result to return interrupting the default workflow. Specifically, if this method
-      * returns a non-`null` result, it will be returned to the caller immediately overriding default behavior.
-      * If the method returns `null` - the default processing flow will continue.
+      * @return Optional query result to return interrupting the default processing workflow. Specifically, if
+      *         this method returns a `Some` result, it will be returned to the caller immediately interrupting
+      *         default processing workflow. If the method returns `None` - the default processing flow will continue.
       * @throws NCRejection This callback can throw the rejection exception to abort input query processing.
       */
-    @throws[NCRejection] def onContext(ctx: NCContext): Option[NCResult] = None
+    @throws[NCRejection]
+    def onContext(ctx: NCContext): Option[NCResult] = None
 
     /**
       * A callback that is called when intent was successfully matched but right before its callback is called. This
-      * callback is called after {@link # onContext ( NCContext )} is called and may be called multiple times
-      * depending on its return value. If `true` is returned than the default workflow will continue and the
-      * matched intent's callback will be called. However, if `null` is returned than the entire existing set of
+      * callback is called after [[onContext()]] is called and may be called multiple times depending on its return
+      * value. If `true` is returned than the default processing workflow will continue and the
+      * matched intent's callback will be called. However, if `false` is returned than the entire existing set of
       * parsing variants will be matched against all declared intents again. Returning `false` allows this
-      * method to alter the state of the model (like soft-reset conversation or change metadata) and force the
-      * full re-evaluation of the parsing variants against all declared intents.
+      * method to alter the state of the model (like soft-reset conversation or change metadata) and force a
+      * full re-evaluation of the parsing variants against all declared intents again.
       *
       * Note that user logic should be careful not to induce infinite loop in this behavior.
-      * Note that this callback may not be called at all based on the return value of {@link # onContext ( NCContext )} callback.
+      * Note that this callback may not be called at all based on the return value of [[onContext()]] callback.
       * Typical use case for this callback is to perform logging, debugging, statistic or usage collection, explicit
       * update or initialization of conversation context, security audit or validation, etc.
       *
@@ -90,53 +89,56 @@ trait NCModel:
       *
       * @param im Intent match context - the same instance that's passed to the matched intent callback.
       * @return If `true` is returned than the default workflow will continue and the matched intent's
-      * callback will be called. However, if `false` is returned than the entire existing set of
-      * parsing variants will be matched against all declared intents again. Returning false allows this
-      * method to alter the state of the model (like soft-reset conversation or change metadata) and force
-      * the re-evaluation of the parsing variants against all declared intents. Note that user logic should be
-      * careful not to induce infinite loop in this behavior.
+      *         callback will be called. However, if `false` is returned than the entire existing set of
+      *         parsing variants will be matched against all declared intents again. Returning false allows this
+      *         method to alter the state of the model (like soft-reset conversation or change metadata) and force
+      *         the re-evaluation of the parsing variants against all declared intents again. Note that user logic
+      *         should be careful not to induce infinite loop in this behavior.
       * @throws NCRejection This callback can throw the rejection exception to abort user request processing. In this
-      * case the {@link # onRejection ( NCIntentMatch, NCRejection)} callback will be called next.
+      *         case the [[onRejection()]] callback will be called next.
       */
-    @throws[NCRejection] def onMatchedIntent(ctx: NCContext, im: NCIntentMatch) = true
+    @throws[NCRejection]
+    def onMatchedIntent(ctx: NCContext, im: NCIntentMatch): Boolean = true
 
     /**
       * A callback that is called when successful result is obtained from the intent callback and right before
-      * sending it back to the caller. This callback is called after {@link # onMatchedIntent ( NCIntentMatch )} is called.
+      * sending it back to the caller. This callback is called after [[onMatchedIntent()]] is called.
       * Note that this callback may not be called at all, and if called - it's called only once. Typical use case
       * for this callback is to perform logging, debugging, statistic or usage collection, explicit update or
       * initialization of conversation context, security audit or validation, etc.
       *
-      * Default implementation is a no-op returning `null`.
+      * Default implementation is a no-op returning `None`.
       *
       * @param im Intent match context - the same instance that's passed to the matched intent callback
-      * that produced this result.
+      *         that produced this result.
       * @param res Existing result.
       * @return Optional query result to return interrupting the default workflow. Specifically, if this
-      * method returns a non-`null` result, it will be returned to the caller immediately overriding
-      * default behavior and existing query result or error processing, if any. If the method returns `null` -
-      * the default processing flow will continue.
+      *         method returns a `Some` result, it will be returned to the caller immediately overriding
+      *         default behavior and existing query result or error processing, if any. If the method returns `None` -
+      *         the default processing flow will continue.
       */
     def onResult(ctx: NCContext, im: NCIntentMatch, res: NCResult): Option[NCResult] = None
 
     /**
       * A callback that is called when intent callback threw NCRejection exception. This callback is called
-      * after {@link # onMatchedIntent ( NCIntentMatch )} is called. Note that this callback may not be called at all,
+      * after [[onMatchedIntent()]] is called. Note that this callback may not be called at all,
       * and if called - it's called only once. Typical use case for this callback is to perform logging, debugging,
       * statistic or usage collection, explicit update or initialization of conversation context, security audit or
       * validation, etc.
       *
-      * Default implementation is a no-op returning `null`.
+      * Default implementation is a no-op returning `None`.
       *
       * @param ctx Optional intent match context - the same instance that's passed to the matched intent callback
-      * that produced this rejection. It is `null` if rejection was triggered outside the intent callback.
+      *         that produced this rejection. It is `None` if rejection was triggered outside the intent callback.
+      * @param im Optional intent match context - the same instance that's passed to the matched intent callback
+      *         that produced this result. It is `None` if rejection was triggered outside the intent callback.
       * @param e Rejection exception.
       * @return Optional query result to return interrupting the default workflow. Specifically, if this method
-      * returns a non-`null` result, it will be returned to the caller immediately overriding default behavior
-      * and existing query result or error processing, if any. If the method returns `null` - the default
-      * processing flow will continue.
+      *         returns a `Some` result, it will be returned to the caller immediately overriding default behavior
+      *         and existing query result or error processing, if any. If the method returns `None` - the default
+      *         processing flow will continue.
       */
-    def onRejection(ctx: NCContext, im: Option[NCIntentMatch], e: NCRejection): Option[NCResult] = None
+    def onRejection(ctx: Option[NCContext], im: Option[NCIntentMatch], e: NCRejection): Option[NCResult] = None
 
     /**
       * A callback that is called when intent callback failed with unexpected exception. Note that this callback may
@@ -144,13 +146,13 @@ trait NCModel:
       * to perform logging, debugging, statistic or usage collection, explicit update or initialization of conversation
       * context, security audit or validation, etc.
       *
-      * Default implementation is a no-op returning `null`.
+      * Default implementation is a no-op returning `None`.
       *
       * @param ctx Intent match context - the same instance that's passed to the matched intent that produced this error.
       * @param e Failure exception.
       * @return Optional query result to return interrupting the default workflow. Specifically, if this method
-      * returns a non-`null` result, it will be returned to the caller immediately overriding default
-      * behavior and existing query result or error processing, if any. If the method returns `null` - the
-      * default processing flow will continue.
+      *         returns a `Some` result, it will be returned to the caller immediately overriding default
+      *         behavior and existing query result or error processing, if any. If the method returns `None` - the
+      *         default processing flow will continue.
       */
     def onError(ctx: NCContext, e: Throwable): Option[NCResult] = None