54个版本 (30个稳定版)
1.11.2 | 2022年11月4日 |
---|---|
1.11.1 | 2022年6月21日 |
1.11.0-rc0 | 2022年5月24日 |
1.9.2 | 2022年3月7日 |
1.3.6 | 2020年11月24日 |
#82 in 编程语言
每月153次下载
1MB
32K SLoC
首个专注于构建聊天机器人的编程语言。
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,但通过选择mongodb
、dynamodb
、postgresql
或sqlite
数据库类型,还可以选择使用Amazon DynamoDB、PostgreSQL和SQLite,这需要稍微不同的环境变量集。
在开始之前,请确保您已使用以下选项设置了环境
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
使用可用的二进制文件(仅限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