blob: 37bc24232933f1aab62bf6b6781c5856ff661d72 [file] [log] [blame]
---
active_crumb: Cheat Sheet
layout: documentation
fa_icon: fa-magic
id: cheat_sheet
---
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF 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. You may obtain a copy of the License at
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.
-->
<div id="cheat-sheet" class="col-md-8 second-column">
<section>
<div class="accordion" id="cheats">
<div class="card">
<div class="card-header" id="q1">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#cheat1">
Quick Install
</button>
</h2>
</div>
<div id="cheat1" class="show" data-parent="#cheats">
<div class="card-body">
<nav>
<div class="nav nav-tabs" role="tablist">
<a class="nav-item nav-link active" data-toggle="tab" href="#nav-install-src" role="tab">Source</a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-install-bin" role="tab">Binary</a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-install-github" role="tab">GitHub <i class="fab fa-fw fa-github"></i></a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-install-maven" role="tab">Maven <img src="/images/java2-h20.png" alt=""></a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-install-grape" role="tab" aria-controls="nav-profile" aria-selected="false">Grape <img src="/images/groovy-h18.png" alt=""></a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-install-gradle" role="tab" aria-controls="nav-profile" aria-selected="false">Gradle <img src="/images/kotlin-h18.png" alt=""></a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-install-sbt" role="tab" aria-controls="nav-contact" aria-selected="false">SBT <img src="/images/scala-logo-h16.png" alt=""></a>
</div>
</nav>
<div class="tab-content">
<div class="tab-pane fade show active" id="nav-install-src" role="tabpanel">
<p></p>
<p>
<a href="/download.html#src">Download</a> latest source
release (<code>apache-nlpcraft-incubating-<b>{{site.latest_version}}</b>.zip</code>). Once downloaded:
</p>
<pre class="brush: bash">
$ unzip -q apache-nlpcraft-incubating-{{site.latest_version}}.zip
$ cd apache-nlpcraft-incubating-{{site.latest_version}}
$ mvn clean package -P examples -DskipTests
</pre>
<p>
Built JARs and Javadoc will be located in <code>target</code> sub-folders of individual modules.
</p>
</div>
<div class="tab-pane fade show" id="nav-install-bin" role="tabpanel">
<p></p>
<p>
<a href="/download.html#src">Download</a> latest binary
release (<code>apache-nlpcraft-incubating-bin-<b>{{site.latest_version}}</b>.zip</code>). Once downloaded:
</p>
<pre class="brush: bash">
$ unzip -q apache-nlpcraft-incubating-bin-{{site.latest_version}}.zip
</pre>
</div>
<div class="tab-pane fade show" id="nav-install-github" role="tabpanel">
<pre class="brush: bash">
$ git clone https://github.com/apache/incubator-nlpcraft.git
$ mvn clean package -P examples
</pre>
</div>
<div class="tab-pane fade show" id="nav-install-maven" role="tabpanel">
<pre class="brush: xml">
&lt;dependency&gt;
&lt;groupId&gt;org.apache.nlpcraft&lt;/groupId&gt;
&lt;artifactId&gt;nlpcraft&lt;/artifactId&gt;
&lt;version&gt;{{site.latest_version}}&lt;/version&gt;
&lt;/dependency&gt;
</pre>
<p>
<b>NOTE:</b> to get <a href="/tools/script.html">NLPCraft CLI script</a> you still need to
download <a href="/download.html#zip">binary</a> ZIP or <a href="/download.html#build">build</a> from <a href="/download.html#src">source</a>.
</p>
</div>
<div class="tab-pane fade" id="nav-install-grape" role="tabpanel">
<pre class="brush: java">
@Grab ('org.apache.nlpcraft:nlpcraft:{{site.latest_version}}')
</pre>
<p>
<b>NOTE:</b> to get <a href="/tools/script.html">NLPCraft CLI script</a> you still need to
download <a href="/download.html#zip">binary</a> ZIP or <a href="/download.html#build">build</a> from <a href="/download.html#src">source</a>.
</p>
</div>
<div class="tab-pane fade" id="nav-install-gradle" role="tabpanel">
<pre class="brush: java">
dependencies {
runtime group: 'org.apache.nlpcraft', name: 'nlpcraft', version: '{{site.latest_version}}'
}
</pre>
<p>
<b>NOTE:</b> to get <a href="/tools/script.html">NLPCraft CLI script</a> you still need to
download <a href="/download.html#zip">binary</a> ZIP or <a href="/download.html#build">build</a> from <a href="/download.html#src">source</a>.
</p>
</div>
<div class="tab-pane fade" id="nav-install-sbt" role="tabpanel">
<pre class="brush: scala">
libraryDependencies += "org.apache.nlpcraft" % "nlpcraft" % "{{site.latest_version}}"
</pre>
<p>
<b>NOTE:</b> to get <a href="/tools/script.html">NLPCraft CLI script</a> you still need to
download <a href="/download.html#zip">binary</a> ZIP or <a href="/download.html#build">build</a> from <a href="/download.html#src">source</a>.
</p>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="q2">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#cheat2">
Start <span class="amp">&amp;</span> Stop REST Server
</button>
</h2>
</div>
<div id="cheat2" class="collapse" data-parent="#cheats">
<div class="card-body">
<nav>
<div class="nav nav-tabs" role="tablist">
<a class="nav-item nav-link active" data-toggle="tab" href="#nav-srv-script" role="tab">NLPCraft CLI</a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-srv-class" role="tab">Java Class <img src="/images/java2-h20.png" alt=""></a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-srv-docker" role="tab"><i class="fab fa-docker"></i> Docker</a>
</div>
</nav>
<div class="tab-content">
<div class="tab-pane fade show active" id="nav-srv-script" role="tabpanel">
<p></p>
<p>
Start the server:
</p>
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=start-server # Get help.
$ bin/nlpcraft.sh start-server # Start server.
</pre>
<p>
Stop the server:
</p>
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=stop-server # Get help.
$ bin/nlpcraft.sh stop-server # Stop server.
$ bin/nlpcraft.sh stop # Stop both server and probe.
</pre>
</div>
<div class="tab-pane fade show" id="nav-srv-class" role="tabpanel">
<p></p>
<p>
If using executable JAR:
</p>
<pre class="brush: bash">
$ java -Xms1024m -jar apache-nlpcraft-incubating-{{site.latest_version}}-all-deps.jar -server
</pre>
<p>
If specifying additional classpath components and need <code>-cp</code> parameter:
</p>
<pre class="brush: bash">
$ java -Xms1024m -cp apache-nlpcraft-incubating-{{site.latest_version}}-all-deps.jar org.apache.nlpcraft.NCStart -server
</pre>
<p>
<b>NOTES:</b>
</p>
<ul>
<li>
Make sure to provide correct path to <code>apache-nlpcraft-incubating-<b>{{site.latest_version}}</b>-all-deps.jar</code> file.
</li>
<li>
Class <code>org.apache.nlpcraft.NCStart</code> is a common entry point for all NLPCraft runtime components.
</li>
<li>
Class <code>org.apache.nlpcraft.NCStart</code> should be used to star REST server from IDE.
</li>
</ul>
<p>
Parameters:
</p>
<dl>
<dt>
<code>-server</code>
</dt>
<dd>
<em>Mandatory</em> parameter to indicate that you are starting the REST server.
</dd>
<dt><code>-config=path</code></dt>
<dd>
<em>Optional</em> parameter to provide configuration file path.
Server will automatically look for <code>nlpcraft.conf</code> configuration file in the same directory
as <code>apache-nlpcraft-incubating-<b>{{site.latest_version}}</b>-all-deps.jar</code> file. If the configuration
file has different name or in different location use <code>-config=path</code> parameter
where <code>path</code> is an absolute path to the configuration file. Note that the server and the data
probe can use the same file for their configuration (like the
default <code>nlpcraft.conf</code> contains configuration for both the server and the data probe).
</dd>
<dt><code>-igniteConfig=path</code></dt>
<dd>
<em>Optional</em> parameter to provide <a target=_ href="https://ignite.apache.org/">Apache Ignite</a> configuration file path.
Note that Apache Ignite is used as a cluster computing plane and a default distributed storage.
Server will automatically look for <code>ignite.xml</code>
configuration file in the same directory as <code>apache-nlpcraft-incubating-<b>{{site.latest_version}}</b>-all-deps.jar</code> file.
If the configuration file has different name or in different location use <code>-igniteConfig=path</code> parameter
where <code>path</code> is an absolute path to the Ignite configuration file.
</dd>
</dl>
</div>
<div class="tab-pane fade show" id="nav-srv-docker" role="tabpanel">
<p></p>
<p>
If Docker image is available for given version you can start REST server as follows:
</p>
<pre class="brush: bash">
$ docker run -m 8G -p 8081:8081 -p 8201:8201 -p 8202:8202 nlpcraftserver/server:{{site.latest_version}}
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="q3">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#cheat3">
Start <span class="amp">&amp;</span> Stop REST Probe
</button>
</h2>
</div>
<div id="cheat3" class="collapse" data-parent="#cheats">
<div class="card-body">
<nav>
<div class="nav nav-tabs" role="tablist">
<a class="nav-item nav-link active" data-toggle="tab" href="#nav-probe-script" role="tab">NLPCraft CLI</a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-probe-class" role="tab">Java Class <img src="/images/java2-h20.png" alt=""></a>
</div>
</nav>
<div class="tab-content">
<div class="tab-pane fade show active" id="nav-probe-script" role="tabpanel">
<p></p>
<p>
Start the probe:
</p>
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=start-probe # Get help.
$ bin/nlpcraft.sh start-probe --cp=~/myapp/target/classes # Start probe with default configuration.
$ bin/nlpcraft.sh start-probe --cp=~/myapp/target/classes --cfg=~/myapp/nlpcraft.conf --mdls=my.package.Model --jmvOpts="-ea -Xms2048m" --timeoutMins=5
> restart-probe # Restart the probe with the last set of parameters in REPL mode.
</pre>
<p>
Stop the probe:
</p>
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=stop-probe # Get help.
$ bin/nlpcraft.sh stop-probe # Stop probe.
$ bin/nlpcraft.sh stop # Stop server and probe.
</pre>
</div>
<div class="tab-pane fade show" id="nav-probe-class" role="tabpanel">
<p></p>
<p>
If using executable JAR:
</p>
<pre class="brush: bash">
$ java -jar apache-nlpcraft-incubating-{{site.latest_version}}-all-deps.jar -probe
</pre>
<p>
If specifying additional classpath components and need <code>-cp</code> parameter:
</p>
<pre class="brush: bash">
java -cp apache-nlpcraft-incubating-{{site.latest_version}}-all-deps.jar:/my/project/classes org.apache.nlpcraft.NCStart -probe -config=/my/project/probe.conf
</pre>
<p>
<b>NOTES:</b>
</p>
<ul>
<li>
<code>/my/project</code> directory contains user-defined model implementation
</li>
<li>
Make sure to provide correct path to <code>apache-nlpcraft-incubating-<b>{{site.latest_version}}</b>-all-deps.jar</code> file.
</li>
<li>
Class <code>org.apache.nlpcraft.NCStart</code> is a common entry point for all NLPCraft runtime components.
</li>
<li>
Class <code>org.apache.nlpcraft.NCStart</code> should be used to star data probe from IDE.
</li>
</ul>
<p>
Parameters:
</p>
<dl>
<dt>
<code>-probe</code>
</dt>
<dd>
<em>Mandatory</em> parameter to indicate that you are starting a data probe.
</dd>
<dt><code>-config=path</code></dt>
<dd>
<p>
<em>Optional</em> parameter to provide probe configuration file path.
Data probe will automatically look for <code>nlpcraft.conf</code> configuration file in the same directory
as <code>apache-nlpcraft-incubating-<b>{{site.latest_version}}</b>-all-deps.jar</code> file. If the configuration
file has different name or in different location use <code>-config=path</code> parameter
where <code>path</code> is an absolute path to the data probe configuration file. Note that the server and the data
probe can use the same file for their configuration (like the
default <code>nlpcraft.conf</code> contains configuration for both the server and the data probe).
</p>
</dd>
</dl>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="q4">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#cheat4">
Model Auto-Test
</button>
</h2>
</div>
<div id="cheat4" class="collapse" data-parent="#cheats">
<div class="card-body">
<p></p>
<p>
Auto model validation consists
of starting an <a href="/tools/embedded_probe.html">embedded probe</a>, scanning for
<a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCIntentSample.html">@NCIntentSample</a> and
<a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCIntentSampleRef.html">@NCIntentSampleRef</a> annotations and their corresponding callback methods, submitting each
sample input sentences from these annotations and checking that resulting
intent matches the intent the sample was attached to.
</p>
<nav>
<div class="nav nav-tabs" role="tablist">
<a class="nav-item nav-link active" data-toggle="tab" href="#nav-script" role="tab">NLPCraft CLI</a>
<a class="nav-item nav-link" data-toggle="tab" href="#nav-class" role="tab">Java Class <img src="/images/java2-h20.png" alt=""></a>
</div>
</nav>
<div class="tab-content">
<div class="tab-pane fade show active" id="nav-script" role="tabpanel">
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=test-model # Get help.
$ bin/nlpcraft.sh test-model --cp=~/myapp/target/classes # Test all models in specified classpath.
$ bin/nlpcraft.sh test-model --cp=~/myapp/target/classes --mdls=my.package.Model --jmvOpts="-ea -Xms2048m"
> retest-model # Rerun the last model test in REPL mode.
</pre>
</div>
<div class="tab-pane fade show" id="nav-class" role="tabpanel">
<pre class="brush: bash">
java -cp apache-nlpcraft-incubating-{{site.latest_version}}-all-deps.jar -DNLPCRAFT_TEST_MODELS=my.package.Model org.apache.nlpcraft.model.tools.test.NCTestAutoModelValidator
</pre>
<p>
<b>NOTES:</b>
</p>
<ul>
<li>
Make sure to add necessary classpath components.
</li>
<li>
<code>NLPCRAFT_TEST_MODELS</code> system property that should contain comma separate list of the data model classes to test.
</li>
<li>
You can also use <code>org.apache.nlpcraft.model.tools.test.NCTestAutoModelValidator</code> class
directly to call it programmatically from the code or from IDE.
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="q5">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#cheat5">
New Project Stub
</button>
</h2>
</div>
<div id="cheat5" class="collapse" data-parent="#cheats">
<div class="card-body">
<nav>
<div class="nav nav-tabs" role="tablist">
<a class="nav-item nav-link active" data-toggle="tab" href="#nav-prj-script" role="tab">NLPCraft CLI</a>
</div>
</nav>
<div class="tab-content">
<div class="tab-pane fade show active" id="nav-prj-script" role="tabpanel">
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=gen-project # Get help.
$ bin/nlpcraft.sh gen-project -n=MyProject -l=scala -b=sbt # Scala/SBT project stub.
$ bin/nlpcraft.sh gen-project -n=MyProject -l=kotlin -p=com.mycompany.nlp -o # Kotlin/Maven project stub.
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="q6">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#cheat6">
New Model Stub
</button>
</h2>
</div>
<div id="cheat6" class="collapse" data-parent="#cheats">
<div class="card-body">
<nav>
<div class="nav nav-tabs" role="tablist">
<a class="nav-item nav-link active" data-toggle="tab" href="#nav-mdl-script" role="tab">NLPCraft CLI</a>
</div>
</nav>
<div class="tab-content">
<div class="tab-pane fade show active" id="nav-mdl-script" role="tabpanel">
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=gen-model # Get help.
$ bin/nlpcraft.sh gen-model --filePath=~/myapp/myModel.json --mdlId=my.model.id # JSON model stub.
$ bin/nlpcraft.sh gen-model -f=c:/tmp/myModel.yaml -m=my.model.id -o # YAML model stub.
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="q7">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#cheat7">
Testing With REST
</button>
</h2>
</div>
<div id="cheat7" class="collapse" data-parent="#cheats">
<div class="card-body">
<nav>
<div class="nav nav-tabs" role="tablist">
<a class="nav-item nav-link active" data-toggle="tab" href="#nav-rest-script" role="tab">NLPCraft CLI</a>
</div>
</nav>
<div class="tab-content">
<div class="tab-pane fade show active" id="nav-rest-script" role="tabpanel">
<p></p>
<p>
Using <code>ask</code> command:
</p>
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=ask # Get help.
$ bin/nlpcraft.sh ask --txt="User request" # REST 'ask/sync' call.
</pre>
<p>
Using <code>call</code> command (for REPL mode):
</p>
<pre class="brush: bash">
> help -c=call # Get help.
> call -p=signin --email=admin@admin.com --passwd=admin
> call --path=ask/sync --acsTok=qwerty123456 --txt="User request" --mdlId=my.model.id --data='{"data1": true, "data2": 123, "data3": "some text"}' --enableLog=false
</pre>
<p>
Using <code>rest</code> command (for command line mode):
</p>
<pre class="brush: bash">
$ bin/nlpcraft.sh help -c=rest # Get help.
$ bin/nlpcraft.sh rest -p=signin -j='{"email": "admin@admin.com", "passwd": "admin"}' # Linux/Unix/MacOS REST call.
$ bin/nlpcraft.cmd rest --path=signin --json='{\"email\": \"admin@admin.com\", \"passwd\": \"admin\"}' # Window REST call.
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="bq info">
<p>
<b>NOTES:</b>
</p>
<ul>
<li>
Use <span class="keyboard">Tab</span> key for auto-completion for commands, parameters, paths, and model class names.
</li>
<li>
<a href="/tools/script.html">NLPCraft CLI</a> is available as <code>nlpcraft.sh</code> for
<i class="fab fa-fw fa-linux"></i> and <code>nlpcraft.cmd</code>
for <i class="fab fa-fw fa-windows"></i>.
</li>
<li>
Run <code class="script">bin/nlpcraft.sh help --cmd=xxx</code> to get a full help on <code>xxx</code> command.
</li>
</ul>
</div>
</section>
</div>
<div class="col-md-2 third-column">
<ul class="side-nav">
{% include quick-links.html %}
</ul>
</div>