#chat-bot #csml #programming-language #third-party

csml_engine

CSML Engine 是一个对话引擎,旨在使创建丰富强大的聊天机器人变得极其容易

54个版本 (30个稳定版)

1.11.2 2022年11月4日
1.11.1 2022年6月21日
1.11.0-rc02022年5月24日
1.9.2 2022年3月7日
1.3.6 2020年11月24日

#82 in 编程语言

Download history 21/week @ 2024-03-30 1/week @ 2024-04-06

每月153次下载

Apache-2.0

1MB
32K SLoC


CSML

首个专注于构建聊天机器人的编程语言。

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

关键特性示例入门更多信息

在线尝试CSML

CSML-demo

CSML (对话标准元语言) 既是领域特定编程语言也是聊天机器人引擎,旨在使开发复杂聊天机器人变得容易。

具有非常表达性和纯文本的语法,CSML流程易于理解,使得部署和维护对话代理变得容易。CSML处理短期和长期记忆槽、元数据注入以及连接到任何第三方API或在任何编程语言中注入任意代码,归功于其强大的运行时API。

关键特性

  • 纯文本、表达性语法,易于学习和发展复杂的聊天机器人场景
  • 丰富的可扩展对话组件,如轮播、图像、视频、按钮、卡片、输入、日历...
  • 内置短期和长期记忆槽:无需复杂的有限状态机模板
  • 便携、快速、易于部署:只需标准MongoDB、PostgreSQL或SQLite数据库
  • 超过20,000名活跃的CSML开发者的充满活力的社区

示例

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

完整文档可在 https://docs.csml.dev/language 上找到。

入门

开始使用CSML最简单的方法是使用CSML Studio,这是一个免费的在线开发环境,已预先设置好,可以直接在浏览器中开始创建机器人。

要开始使用CSML Studio: https://studio.csml.dev

CSML Studio 为您提供了一个免费的游乐场来尝试语言,以及一键部署聊天机器人的选项。

自托管/云/本地安装

CSML可以作为自托管的Web服务器使用,您可以使用以下选项之一轻松安装。

请注意,您需要一个数据库。默认选择是MongoDB,但通过选择mongodbdynamodbpostgresqlsqlite数据库类型,还可以选择使用Amazon DynamoDBPostgreSQLSQLite,这需要稍微不同的环境变量集。

在开始之前,请确保您已使用以下选项设置了环境

ENGINE_DB_TYPE=mongodb # must be one of mongodb|dynamodb|postgresql|sqlite

# for mongodb
MONGODB_URI=mongodb://username:password@localhost:27017
MONGODB_DATABASE=csml

# for postgresql
POSTGRESQL_URL=postgres://user:password@hostname:port/database

# for sqlite
SQLITE_URL=csml.db

# for dynamodb (requires S3 for storage of large items)
AWS_ACCESS_KEY_ID= # or use a local IAM role
AWS_SECRET_ACCESS_KEY= # or use a local IAM role
AWS_REGION=
AWS_DYNAMODB_ENDPOINT= # optional, defaults to the dynamodb endpoint for the given region.
AWS_DYNAMODB_TABLE=
AWS_S3_ENDPOINT= # optional, defaults to the S3 endpoint for the given region
AWS_S3_BUCKET=

# CSML Server configuration
ENGINE_SERVER_PORT=5000
ENGINE_SERVER_API_KEYS=someAuthKey4CsmlServer,someOtherAuthKey

# Other optional engine configuration
ENGINE_ENCRYPTION_SECRET=some-secret-string # if not set, data will not be stored encrypted
TTL_DURATION=30 # auto-remove chatbot user data after X days
LOW_DATA_MODE=true # do not store contents of sent/received messages
DISABLE_SSL_VERIFY=false # reach trusted endpoints with known invalid certificates
DEBUG=true # print debug output in console
CSML_LOG_LEVEL=error # print log output in stderr. Possible values are error, warn, info, debug, trace.
MODULES_URL= # default module repository base url
MODULES_AUTH= # default module auth token

部署到Heroku

Deploy to Heroku

使用可用的二进制文件(仅限Linux和MacOS)

在您的机器上启动CSML引擎的最简单方法之一是使用我们预先构建的、优化的二进制文件(适用于MongoDB和Amazon DynamoDB)。这些二进制文件自v1.3.0版本以来作为可执行文件提供,在CSML的每个发布版本中都可以找到。

请按照以下博客文章中的安装指南操作(适用于ubuntu,但过程在其他操作系统上也将类似):https://blog.csml.dev/how-to-install-a-self-hosted-csml-engine-on-ubuntu-18-04/

要下载最新的CSML服务器二进制文件,请访问最新版本并确保下载适合您架构的正确版本。

Mac用户:在首次执行此二进制文件时,Mac可能会打开一个警告,说明应用程序未签名(有关更多信息,请参阅Apple的更多信息)。由于这不是一个广泛分发应用程序,我们决定现在不通过签名过程,但您可以安全地忽略此警告!但是,如果您愿意,您始终可以从源代码构建此包

使用Docker

我们提供Docker镜像以方便自托管使用。

docker pull clevy/csml-engine

要开始使用Docker上的CSML引擎:https://github.com/CSML-by-Clevy/csml-engine-docker

使用Rust,从源代码

CSML是用Rust构建的。尽管如此,您无需了解任何Rust即可运行它!请确保您正在运行Rust v1.46+,并且您的机器上已安装openssl(或您Linux发行版的等效版本,例如libssl),然后运行

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

之后,执行您的构建(默认为./targets/release/csml_server),然后访问https://127.0.0.1:5000以查看一些请求示例。

使用Node.js

此存储库提供了此Rust库的Node.js绑定。要在Node.js项目中使用此库,您需要从源代码构建它。有一些要求

  • 当前Rust稳定版本(v1.61.0及以上)
  • Node.js LTS
  • cargo-cp-artifact v0.1.6 所需依赖项
  • libssl-dev(或您架构的等效版本:openssl-dev、libssl-devel...)

要编译CSML引擎为原生Node模块,请运行

git clone https://github.com/CSML-by-Clevy/csml-engine csml
cd csml/bindings/node/native
npm run build -- --release

注意:您可以使用专门的脚本(例如npm run build:mongodb)在package.json中构建针对MongoDB、DynamoDB、SQLite或PostgreSQL的特定版本。

此方法将输出此原生文件:csml/bindings/node/native/index.node,您可以直接在项目中(使用require()import)导入它。有关如何在您的项目中使用此模块的更多详细信息,您可以查看我们的Docker版本实现

请注意,如果您计划在不同的架构上部署您的项目,您需要在该架构上重新编译项目。如果您需要将 CSML 引擎集成到自己的 Node.js 项目中,我们建议使用 git 子模块。

REST API 文档

CSML 服务器的 HTTP REST API 文档以 OpenAPIv3 格式提供:[swagger.yaml](https://github.com/csml-by-clevy/csml-engine/blob/29ea42b5416a2e7a7c9ad0ede99799dc70b63ae1/csml_engine/csml_server/swagger.yaml)。为了轻松阅读此文件,您可以在 [Swagger 编辑器](https://editor.swagger.io) 中打开它。

其他信息

玩转语言

  • Studio - 在几分钟内创建和部署您的聊天机器人。
  • Playground - 在浏览器中测试和学习 CSML。

获取帮助

信息

依赖项

~23–49MB
~1M SLoC