All Projects β†’ CSML-by-Clevy β†’ Csml Engine

CSML-by-Clevy / Csml Engine

Licence: apache-2.0
🦜 Conversational Standard Meta Language

Programming Languages

rust
11053 projects
language
365 projects

Projects that are alternatives of or similar to Csml Engine

Papernote
paper note, including personal comments, introduction, code etc
Stars: ✭ 268 (-8.22%)
Mutual labels:  chatbot
Brainfuck
Brainfuck interpreter written in C
Stars: ✭ 275 (-5.82%)
Mutual labels:  interpreter
Building A Simple Chatbot In Python Using Nltk
Building a Simple Chatbot from Scratch in Python (using NLTK)
Stars: ✭ 286 (-2.05%)
Mutual labels:  chatbot
Swiftpascalinterpreter
Simple Swift interpreter for the Pascal language inspired by the Let’s Build A Simple Interpreter article series.
Stars: ✭ 270 (-7.53%)
Mutual labels:  interpreter
Chatbot ner
chatbot_ner: Named Entity Recognition for chatbots.
Stars: ✭ 273 (-6.51%)
Mutual labels:  chatbot
Neuraldialog Cvae
Tensorflow Implementation of Knowledge-Guided CVAE for dialog generation ACL 2017. It is released by Tiancheng Zhao (Tony) from Dialog Research Center, LTI, CMU
Stars: ✭ 279 (-4.45%)
Mutual labels:  chatbot
Dascript
daScript - high-performance statically strong typed scripting language
Stars: ✭ 259 (-11.3%)
Mutual labels:  interpreter
Lbforth
Self-hosting metacompiled Forth, bootstrapping from a few lines of C; targets Linux, Windows, ARM, RISC-V, 68000, PDP-11, asm.js.
Stars: ✭ 293 (+0.34%)
Mutual labels:  interpreter
Melang
A script language of preemptive scheduling coroutine in single thread
Stars: ✭ 273 (-6.51%)
Mutual labels:  interpreter
Rascal
The implementation of the Rascal meta-programming language (including interpreter, type checker, parser generator, compiler and JVM based run-time system)
Stars: ✭ 284 (-2.74%)
Mutual labels:  interpreter
Seq2seq chatbot links
Links to the implementations of neural conversational models for different frameworks
Stars: ✭ 270 (-7.53%)
Mutual labels:  chatbot
Olivia
πŸ’β€β™€οΈYour new best friend powered by an artificial neural network
Stars: ✭ 3,114 (+966.44%)
Mutual labels:  chatbot
Program Y
Python 3.x based AIML 2.0 Chatbot interpreter, framework, related programs and knowledge files
Stars: ✭ 281 (-3.77%)
Mutual labels:  chatbot
Peekobot
A simple, choice-driven chatbot framework for your website written in just over 100 lines of vanilla JavaScript (and some CSS)
Stars: ✭ 270 (-7.53%)
Mutual labels:  chatbot
Python Wechaty
Python Wechaty is a Conversational RPA SDK for Chatbot Makers written in Python
Stars: ✭ 286 (-2.05%)
Mutual labels:  chatbot
Schemy
A lightweight embeddable Scheme-like interpreter for configuration
Stars: ✭ 269 (-7.88%)
Mutual labels:  interpreter
Alexa Skill Kit
Library for effortless Alexa Skill development with AWS Lambda
Stars: ✭ 278 (-4.79%)
Mutual labels:  chatbot
Jace
Jace.NET is a calculation engine for the .NET platform.
Stars: ✭ 296 (+1.37%)
Mutual labels:  interpreter
Alan Sdk Ionic
Alan AI Ionic SDK adds a voice assistant or chatbot to your app. Supports React, Angular.
Stars: ✭ 287 (-1.71%)
Mutual labels:  chatbot
Eval5
A JavaScript interpreter written in TypeScript - Support ES5
Stars: ✭ 281 (-3.77%)
Mutual labels:  interpreter


CSML

First programming language dedicated to building chatbots.

Rust GitHub release (latest by date) Docker Image Version (latest semver) Slack

Key Features β€’ Example β€’ Usage β€’ Additional Information

CSML-demo

CSML (Conversational Standard Meta Language) is a Domain-Specific Language designed for easily creating conversational experiences.

The purpose of this language is to simplify the creation and maintenance of rich conversational interactions between humans and machines. With a very expressive and text-only syntax, CSML flows are easy to understand, making it easy to deploy and maintain conversational agents. CSML handles short and long-term memory slots, metadata injection, and connecting to any third party API or injecting arbitrary code in any programming language thanks to its powerful runtime APIs.

Key Features

  • Super easy syntax
  • Conversation-oriented components
  • Native bindings with functions written in other languages
  • Chatbot-specific keywords
  • Out-of-the-box short-term and long-term memory slots

Example

start:
  say "Hi, nice to meet you, I'm a demo bot πŸ‘‹"
  if (name) {
    say "I already know you πŸ˜‰"
    goto known
  }
  else 
    goto name

name:
  say Question(
    "I'd like to know you better, what's your name?",
    buttons=[
      Button("I'm anonymous 😎", accepts=["No", "Nope"]) as anonBtn
    ],
  )
  hold
  if (event.match(anonBtn)) {
    remember name = "anon"
  } else {
    remember name = event
  }
  goto known

known:
  if (name == "anon")
    say "...but I know you don't want to say too much about yourself!"
  else 
    say "You are {{name}}!"
  goto end

The full documentation of the project is available on https://docs.csml.dev/language.

Getting Started

The simplest way to get started with CSML is to use CSML Studio, a free online development environment with everything already setup to start creating bots right away, directly in your browser.

To get started with CSML Studio: https://studio.csml.dev

CSML Studio gives you a free playground to experiment with the language as well as options to deploy your chatbots at scale in one-click.

Self-hosted / local installation

CSML is available as a self-hostable web server that you can easily install with one of the options below.

Note that you will need a database. The default choice is MongoDB, but Amazon DynamoDB is also available by choosing the dynamodb engine DB type with a slightly different set of environment variables.

Before you start, make sure that you have the environment set with following options:

ENGINE_DB_TYPE=mongodb # or dynamodb

# for mongodb
MONGODB_HOST=localhost
MONGODB_PORT=27017
MONGODB_DATABASE=csml
MONGODB_USERNAME=root
MONGODB_PASSWORD=root

# for dynamodb
AWS_ACCESS_KEY_ID= # or use an IAM role
AWS_SECRET_ACCESS_KEY= # or use an IAM role
AWS_REGION=
AWS_DYNAMODB_ENDPOINT= # optional, defaults to the default dynamodb endpoint for the given region.
AWS_DYNAMODB_TABLE=
AWS_S3_ENDPOINT= # optional, defaults to the default S3 endpoint for the given region
AWS_S3_BUCKET=

ENGINE_SERVER_PORT=5000

ENCRYPTION_SECRET=some-secret-string # if not set, data will not be stored encrypted
DISABLE_SSL_VERIFY=false
DEBUG=true

Using a ready-to-use binary (Linux and MacOS only)

The easiest way to launch a CSML Engine on your own machine is to use one of our pre-built, optimized binaries (available for both MongoDB and Amazon DynamoDB). These binaries are available as executables on each of CSML's releases since v1.3.0.

To download the latest CSML Server binaries, head over to the latest release and make sure to download the right version for your architecture.

Mac users: upon first execution of this binary, Mac will probably open a warning about the application not being signed (more info from Apple). As this is not intended as a widely-distributed application, we decided to not go through the notarization process for now, but you can safely ignore that warning! However, if you prefer, you can always build this package from source.

With Docker

We provide a docker image for easy self-hosted usage.

docker pull clevy/csml-engine

To get started with CSML Engine on Docker: https://github.com/CSML-by-Clevy/csml-engine-docker

With Rust, from source

CSML is built in Rust. You don't need to know any Rust to run it though! Make sure you are running Rust v1.46+ and that you have openssl installed on your machine (or an equivalent for your linux distribution, such as libssl), then run:

cd csml_server

# for use with MongoDB
cargo build --release --features csml_engine/mongo

# for use with Amazon DynamoDB
cargo build --release --features csml_engine/dynamo

After that, execute your build (by default under ./targets/release/csml_server) and visit http://localhost:5000 for some request examples.

With Node.js

This repository provides Node.js bindings of this rust library. To use this library in a Node.js project, you will need to build it from source. There are a few requirements:

  • Rust v1.46
  • Node.js LTS or above
  • Neon CLI v0.4.0 (make sure that all required dependencies are installed)
  • libssl-dev (or equivalent for your architecture: openssl-dev, libssl-devel...)

To compile CSML Engine into a native node module, run:

git clone https://github.com/CSML-by-Clevy/csml-engine csml
neon build -p csml/bindings/node --release

If you are not familiar with Rust build times, please know that the neon build step can take up to 10 minutes. Be patient!

This method will output this native file: csml/bindings/node/native/index.node that you can simply require() (or import) in your project. For more details about how to use this module in your own projects, you can have a look at our implementation for Docker version.

Please note that if you plan to deploy your project on a different architecture, you will need to recompile the project on that architecture. We recommend using git submodules if you need to integrate CSML Engine in your own Node.js projects.

REST API documentation

CSML Server's HTTP REST API documentation is available in OpenAPIv3 format: swagger.yaml. To read this file easily, you can open it in Swagger Editor.

Additional Information

Play with the language

  • Studio - Create and deploy your chatbot in a matter of minutes.

Getting Help

Information

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].