开源语义理解框架 Clause API 文档:快速实现聊天机器人

在上一篇文章《基于开源语义理解框架 Clause 实现聊天机器人
中,很多读者关心如何使用 Clause,在 Clause Wiki 文档中心 中也有很多指导使用的资料,现将 API 使用整理如下。

开源语义理解框架 Clause API 文档

Clause 使用过程:

在这里插入图片描述

服务端为 C++ 实现,并基于 Apache Thrift 框架实现跨语言 PRC SDK。

服务端已经封装为 Docker 镜像编排服务,部署简单。 SDK 支持多种语言,参考 示例程序

Table of contents

服务端 API 文档

描述Clause中C++实现的服务端核心模块的API接口。

该文档包含在Github源码中,下载源码:

git clone https://github.com/chatopera/clause.git

使用浏览器打开API文档:

cd clause
open docs/index.html

即可查看文档。

在这里插入图片描述

SDK 文档

以下是 SDK 端文档。

以 Python 为例子介绍,其它语言接口相同,调用方法类似。

安装包

pip install clause

数据类型

Data 为主要数据类型,参考:

数据接口设计

不同接口统一使用 Data 对象作为请求和返回值类型。

引入类

from clause import Client, Data
from clause import CustomDict, SysDict, DictWord
from clause import Intent, IntentSlot, IntentUtter
from clause import Entity, ChatMessage, ChatSession

实例化bot对象

bot = Client(CL_HOST, CL_PORT)

创建自定义词典

data = Data()
data.customdict = CustomDict(name=customDictName, 
     chatbotID=chatbot_id)
resp = bot.postCustomDict(data)
# 更新自定义词典
data = Data()
data.chatbotID = chatbot_id
data.customdict = CustomDict(name=customDictName, 
							chatbotID=chatbot_id)
data.dictword = DictWord(word="西红柿", 
							synonyms="狼桃;柿子;番茄")
resp = bot.putDictWord(data)

引用系统词典

data = Data()      
data.chatbotID = chatbot_id
# 系统词典:人名 @PER; 地名 @LOC; 组织机构 @ORG; 任何字符串 @ANY; 时间 @TIME
data.sysdict = SysDict(name="@TIME")
resp = bot.refSysDict(data)

创建意图

data = Data()
data.intent = Intent(chatbotID=chatbot_id, 
					name=intent_name)
resp = bot.postIntent(data)

### 创建意图槽位
data = Data()
data.intent = Intent(chatbotID=chatbot_id, name=intent_name)
data.slot = IntentSlot(name="vegetable", requires=True, 
					question="您需要什么配菜")
data.customdict = CustomDict(chatbotID=chatbot_id, 
					name=customDictName)
resp = bot.postSlot(data)

创建意图说法

data = Data()
data.intent = Intent(chatbotID=chatbot_id, 
					name=intent_name)
data.utter = IntentUtter(utterance="帮我来一份{vegetable},送到											{location}")
resp = bot.postUtter(data)

在意图说法中,使用 {槽位名称}

训练机器人


data = Data()
data.chatbotID = chatbot_id
resp = bot.train(data)
## 训练是一个长时间任务,进行异步反馈
while True:
 sleep(3)
 data = Data()
 data.chatbotID = chatbot_id
 resp = bot.status(data)
 if resp.rc == 0:
     break

对话

## 创建session
data = Data()
data.session = ChatSession(chatbotID=chatbot_id,
  uid="py", # 用户唯一的标识
  channel="testclient", # 自定义,代表该用户渠道由字母组成
  branch="dev" ) # 分支,有连个选项:dev, 调试版本;pro,生产版本
   sessionId = bot.putSession(data).session.id

### 聊天
data = Data()
data.session = ChatSession(id=sessionId)
data.message = ChatMessage(textMessage= "我想点外卖")
resp = bot.chat(data)

关于 Session 的描述,参考 什么是“会话”

其它接口

以上是实现一个聊天机器人创建、训练和对话的过程,还有其它接口,满足定制化开发需求,其使用方法和以上类似。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更多介绍

参考 示例程序 并阅读源码 bot.py 进一步了解 SDK 使用。

其它语言

参考 其它语言 SDK 及示例程序

技术支持

如遇到使用问题,请建立 Issue!

下一步

快速开始

开发环境搭建

王海良@Chatopera 聊天机器人 机器学习 智能客服
Chatopera 联合创始人 & CEO,运营聊天机器人平台 https://bot.chatopera.com,让聊天机器人上线!2015年开始探索聊天机器人的商业应用,实现基于自然语言交互的流程引擎、语音识别、自然语言理解,2018年出版《智能问答与深度学习》一书。