You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by se...@apache.org on 2022/02/18 09:37:27 UTC
[incubator-nlpcraft] 01/02: WIP.
This is an automated email from the ASF dual-hosted git repository.
sergeykamov pushed a commit to branch NLPCRAFT-477
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
commit 24a831fdc07336760b0684531c8e3f86bf5073b2
Author: Sergey Kamov <sk...@gmail.com>
AuthorDate: Fri Feb 18 12:13:11 2022 +0300
WIP.
---
.../nlpcraft/internal/impl/NCModelClientImpl.scala | 44 ++++++++++++----------
.../internal/impl/NCModelPipelineManager.scala | 11 +++---
2 files changed, 30 insertions(+), 25 deletions(-)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelClientImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelClientImpl.scala
index 2666a8b..6990e5a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelClientImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelClientImpl.scala
@@ -56,10 +56,12 @@ class NCModelClientImpl(mdl: NCModel) extends LazyLogging:
verify()
private val intents = NCModelScanner.scan(mdl)
- private val pipelineMgr = new NCModelPipelineManager(mdl.getConfig, mdl.getPipeline)
private val convMgr = NCConversationManager(mdl.getConfig)
- private val dialogMgr = NCDialogFlowManager(mdl.getConfig)
- private val intentsMgr = NCIntentsManager(dialogMgr, intents.map(p => p.intent -> p.function).toMap)
+ private val dlgMgr = NCDialogFlowManager(mdl.getConfig)
+ private val plMgr = new NCModelPipelineManager(mdl.getConfig, mdl.getPipeline)
+ private val intentsMgr = NCIntentsManager(dlgMgr, intents.map(p => p.intent -> p.function).toMap)
+
+ init()
/**
*
@@ -82,10 +84,19 @@ class NCModelClientImpl(mdl: NCModel) extends LazyLogging:
/**
*
+ */
+ private def init(): Unit =
+ convMgr.start()
+ dlgMgr.start()
+ plMgr.start()
+
+
+ /**
+ *
* @param data
* @return
*/
- private def ask0(data: NCPipelineVariants): NCResult =
+ private def ask0(data: NCPipelineData): NCResult =
val userId = data.request.getUserId
val convHldr = convMgr.getConversation(userId)
val allEnts = data.variants.flatMap(_.getEntities.asScala)
@@ -94,9 +105,9 @@ class NCModelClientImpl(mdl: NCModel) extends LazyLogging:
new NCConversation:
override val getSession: NCPropertyMap = convHldr.getUserData
override val getStm: JList[NCEntity] = convHldr.getEntities
- override val getDialogFlow: JList[NCDialogFlowItem] = dialogMgr.getDialogFlow(userId).asJava
+ override val getDialogFlow: JList[NCDialogFlowItem] = dlgMgr.getDialogFlow(userId).asJava
override def clearStm(filter: Predicate[NCEntity]): Unit = convHldr.clearEntities(filter)
- override def clearDialog(filter: Predicate[String]): Unit = dialogMgr.clearForPredicate(userId, (s: String) => filter.test(s))
+ override def clearDialog(filter: Predicate[String]): Unit = dlgMgr.clearForPredicate(userId, (s: String) => filter.test(s))
val ctx: NCContext =
new NCContext:
@@ -118,10 +129,9 @@ class NCModelClientImpl(mdl: NCModel) extends LazyLogging:
*/
def ask(txt: String, data: JMap[String, AnyRef], usrId: String): CompletableFuture[NCResult] =
val fut = new CompletableFuture[NCResult]
- val check = () => if fut.isCancelled then
- E(s"Asynchronous ask is interrupted [txt=$txt, usrId=$usrId]")
+ val check = () => if fut.isCancelled then E(s"Asynchronous ask is interrupted [txt=$txt, usrId=$usrId]")
- fut.completeAsync(() => ask0(pipelineMgr.prepare(txt, data, usrId, Option(check))))
+ fut.completeAsync(() => ask0(plMgr.prepare(txt, data, usrId, Option(check))))
/**
*
@@ -130,25 +140,21 @@ class NCModelClientImpl(mdl: NCModel) extends LazyLogging:
* @param usrId
* @return
*/
- def askSync(txt: String, data: JMap[String, AnyRef], usrId: String): NCResult =
- ask0(pipelineMgr.prepare(txt, data, usrId))
+ def askSync(txt: String, data: JMap[String, AnyRef], usrId: String): NCResult = ask0(plMgr.prepare(txt, data, usrId))
/**
*
* @param usrId
*/
- def clearConversation(usrId: String): Unit = convMgr.getConversation(usrId)
+ def clearConversation(usrId: String): Unit = convMgr.getConversation(usrId).clearEntities(_ => true)
/**
*
* @param usrId
*/
- def clearDialog(usrId: String): Unit = dialogMgr.clear(usrId)
+ def clearDialog(usrId: String): Unit = dlgMgr.clear(usrId)
- /**
- *
- */
def close(): Unit =
- if pipelineMgr != null then pipelineMgr.close()
- if convMgr != null then convMgr.close()
- if dialogMgr != null then dialogMgr.close()
+ plMgr.close()
+ dlgMgr.close()
+ convMgr.close()
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManager.scala
index d2758c9..1a43827 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManager.scala
@@ -42,7 +42,7 @@ import scala.jdk.OptionConverters.*
* @param tokens
* @param checkCancel
*/
-case class NCPipelineVariants(request: NCRequest, variants: Seq[NCVariant], tokens: JList[NCToken], checkCancel: Option[() => Unit])
+case class NCPipelineData(request: NCRequest, variants: Seq[NCVariant], tokens: JList[NCToken], checkCancel: Option[() => Unit])
/**
*
@@ -62,9 +62,6 @@ class NCModelPipelineManager(cfg: NCModelConfig, pipeline: NCModelPipeline) exte
private val allSrvs: Seq[NCLifecycle] =
tokEnrichers ++ entEnrichers ++ entParsers ++ tokVals ++ entVals ++ varFilterOpt.toSeq
- processServices(_.onStart(cfg), "started")
-
-
/**
*
* @param act
@@ -94,7 +91,7 @@ class NCModelPipelineManager(cfg: NCModelConfig, pipeline: NCModelPipeline) exte
* @param checkCancel
* @return
*/
- def prepare(txt: String, data: JMap[String, AnyRef], usrId: String, checkCancel: Option[() => Unit] = None): NCPipelineVariants =
+ def prepare(txt: String, data: JMap[String, AnyRef], usrId: String, checkCancel: Option[() => Unit] = None): NCPipelineData =
require(txt != null && usrId != null)
/**
@@ -166,7 +163,9 @@ class NCModelPipelineManager(cfg: NCModelConfig, pipeline: NCModelPipeline) exte
check()
variants = varFilterOpt.get.filter(req, cfg, variants)
- NCPipelineVariants(req, variants.asScala.toSeq, toks, checkCancel)
+ NCPipelineData(req, variants.asScala.toSeq, toks, checkCancel)
+
+ def start(): Unit = processServices(_.onStart(cfg), "started")
/**
*
*/