Giter Club home page Giter Club logo

unit-uskit's Introduction

USKit

简介

在真实的对话系统中,通常会要求同时支持多种对话技能,比如育儿对话机器人中要求同时支持音乐、故事、古诗、百科等技能。这涉及到多个技能的管理、召回、排序和选择等策略,在具体的实现中,通常由一个统一调度对话中控 US (Unified Scheduler) 来提供这些能力。

USKit 作为 UNIT 的开源对话中控模块,主要负责多个对话技能的接入、调度、排序、选择、回复生成以及多轮对话 session 的管理,无缝对接 UNIT 平台能力,可以方便开发者通过配置快速搭建和定制符合自己业务场景的对话中控,将多种技能整合为统一的对话机器人为用户提供服务。

主要功能

核心概念

在开始之前,我们先定义以下两个概念:

  1. 对话技能 (bot skill):指某个特定场景下的对话能力,一个对话技能对应一个具体的对话场景,例如天气技能负责提供天气场景下的对话能力。
  2. 对话机器人 (bot service):由多个对话技能整合而成的统一对话服务,可以同时支持多个对话场景的人机对话,一个对话机器人对应一个具体业务的整体解决方案,比如车载对话机器人、育儿对话机器人等。USKit 提供的正是快速搭建对话机器人的能力。

功能介绍

USKit 作为 UNIT 的开源中控模块,通过配置驱动和内置表达式运算支持,提供了以下能力:

  • 支持配置表达式运算,内置常用函数,提供丰富的表达能力,通过修改配置即可轻松实现策略的定制
  • 支持定义后端服务的请求构造和接入策略 (后端服务泛指各种通过网络访问的远程服务,比如 UNIT 技能、DMKit 服务、Redis session 服务等),支持的通信协议包括 HTTPRedis
  • 支持定义后端服务结果的抽取 (extract) 和变换 (transform) 策略
  • 支持定义多种对话技能的排序 (ranking) 和选择策略
  • 支持定义对话中控流程 (chatflow) 策略
  • 内置 UNIT 技能协议请求构造和结果解析策略的配置支持,只需配置技能 ID 即可实现对话技能的快速接入

架构

USKit 针对对话中控的能力做了抽象,抽取出不同对话场景中下中控的通用能力,避免不必要的重复开发。同时按照配置化驱动和高扩展性的**进行整体架构的设计,方便开发者通过配置快速构建和定制适用于特定业务场景的对话中控。USKit的整体架构如下图:

USKit整体架构

系统主要由以下4个核心部分组成:

  • 表达式引擎:负责表达式的解析和执行求值,详细的运算支持可以参见配置表达式运算支持,表达式引擎为下面三个引擎提供了基础支持,基于表达式引擎,可以实现根据用户请求动态生成配置
  • 后端服务管理引擎:负责后端服务的接入、请求构造和结果解析抽取等策略的管理,通过 backend.conf 进行策略的配置
  • 排序策略管理引擎:负责技能的排序规则的管理,用于多技能的排序,通过 rank.conf 进行策略的配置
  • 对话流程管理引擎:负责对话中控流程的策略的管理,用于定义机器人中控的逻辑执行流程:包括调用后端服务引擎召回技能 (recall)、调用排序引擎进行技能排序 (rank)、结果选择和输出等,通过 flow.conf 进行策略的配置

开发者在使用 USKit 的时候,只需配置上述3个配置文件,即可完成对话中控的搭建,后续策略的变动和升级也通过修改配置文件即可完成,可以让开发者关注对话机器人中控本身的策略逻辑,不需要重复开发框架代码

3个配置文件的详细说明可以参考详细配置说明

安装

从 GitHub 获取 USKit 的源代码:

git clone https://github.com/baidu/unit-uskit.git
cd unit-uskit

USKit 提供了两种安装方式:使用 Docker 构建镜像和手动安装。推荐使用 Docker 进行安装。

Docker 安装

docker build -t unit-uskit .

我们也提供成功编译的 Docker 镜像,可使用如下命令拉取镜像:

docker pull docker.io/shanetian/unit-uskit:v3.0.0

手动安装

1. 安装依赖

USKit 基于以下工具包进行开发:

  • brpc
  • boost
  • protobuf
  • flex >= 2.6.4
  • bison >= 3.0.4
  • cmake >= 2.8.10

目前支持 Ubuntu,CentOS 等系统环境,Ubuntu 推荐使用 16.04 或以上版本,CentOS 推荐使用 7 以上版本,编译 USKit 前请确保对应版本的依赖已经正确安装:

Ubuntu
sh deps.sh ubuntu
CentOS
sh deps.sh centos

2. 编译USKit

mkdir _build && cd _build && cmake .. && make

注:编译前请检查 gcc 版本,若版本较低不支持 C++14,则使用 source /opt/rh/devtoolset-7/enable 切换到新安装的 gcc 再编译即可。

如果希望打印更多 Debug 信息,可以在生成执行 cmake 时指定为 Debug,在运行 USKit 的过程中将会打出更详细的 log 信息,方便问题定位:

mkdir _build && cd _build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make

注:打开该选项会影响性能,建议只在开发环境中使用。

USKit 代码目录结构

.
├── CMakeLists.txt
├── README.md
├── _build              # 编译产出,在该目录下修改配置文件以及运行 ./uskit 启动服务
│   ├── conf            # 配置目录
│   │   ├── us          # 对话机器人的配置,每个子目录对应一个具体业务场景下的对话机器人
│   │   │   └── demo    # USKit 教程示例的配置及配置生成工具
│   │   │       ├── options.py           # demo 场景里需要开发者自行配置的选项,如技能 ID,API Key 等
│   │   │       ├── conf_generator.py    # 根据 options.py 里声明的配置,自动生成所需配置文件
│   │   │       └── conf_templates       # 配置模板目录
│   │   ├── gflags.conf                  # USKit 启动参数默认参数配置
│   │   └── us.conf                      # USKit 本身相关的配置,用于指定加载的对话机器人
│   └── uskit           # USKit 主程序
├── conf                # 配置目录,编译成功后会被复制到 _build/conf
├── docs                # 详细文档
├── proto               # protobuf 文件
├── src                 # 源代码
└── third_party         # 第三方依赖目录

使用

USKit 主要通过配置来驱动中控的搭建和定制,使用方只需要配置对应目录下的 backend.confrank.conf 以及 flow.conf,然后重启服务即可生效。

新建对话中控

在 USKit 中,新建一个对话场景下的机器人中控,只需在 _build/conf/us 目录下新增对应的目录,例如,新增一个对话机器人 demo_service

mkdir -p _build/conf/us/demo_service

在该目录下,编写对应的配置文件:

  • backend.conf:指定需要接入的资源对应的请求构造和结果解析配置
  • rank.conf:召回结果的排序配置
  • flow.conf:中控整体对话流程的配置

注册对话中控

同时修改 us.conf,注册需要加载的对话机器人,新添如下一行:

load : "demo_service"

启动服务

进入 _build 目录运行 USKit:

./uskit

命令参数说明:

  • --port:指定 USKit 服务的端口,默认为 8888
  • --idle_timeout_s:指定 client 多少秒没有读/写操作即关闭链接,默认为 -1,即不关闭
  • --us_conf:指定 us.conf 的路径,默认为 ./conf/us.conf
  • --url_path:指定 USKit 服务的 url 路径,默认为 /us
  • --http_verbose: 在 stderr 输出 http 网络请求和返回的数据
  • --http_verbose_max_body_length: 指定 http_verbose 输出数据的最大长度
  • --redis_verbose:在 stderr 输出 redis 请求和返回的数据

成功启动 USKit 服务后,可以通过 <HOST>:8888/us 发起 HTTP POST 请求,请求体使用 json 格式,请求参数如下:

  • usid:指定需要请求的对话机器人中控 id,比如上文中创建的 demo_service
  • logid:每个请求对应 id,用于将上下游串起来的唯一 id,方便问题追踪定位
  • query:用户请求的 query
  • uuid:用户对应的 id,用于唯一区分一个用户

样例:

{"usid": "demo_service", "logid": "123456", "query": "北京今天天气怎么样", "uuid": "123"}

返回结果同样采用 json 格式,包含以下三个字段:

  • error_code:错误码
  • error_msg:具体错误信息
  • result:通过对话中控策略执行得到的请求响应

样例:

{"error_code": 0, "error_msg": "OK", "result": "好的"}

更多文档

FAQ

  1. 执行 deps.sh 的过程中 clone boost 失败导致后续依赖安装失败

    由于 boost 库较大,GitHub 访问较慢导致下载失败。可以在 boost 官网手动下载包至 third_party/ 并编译:

    tar -zxf boost_1_76_0.tar.gz && mv boost_1_76_0 boost
    cd boost
    mkdir -p _build/output
    ./bootstrap.sh --prefix=./_build/output
    ./b2 install

如何贡献

  • 欢迎提交任何问题到 Github Issues,可以是使用过程中遇到的问题、bug reporting 或者新需求的讨论。
  • 对于 issues 中的问题欢迎贡献并发起 pull request。
  • 定制新的自定义函数和策略,如果足够通用,可以提交 pull request 合入作为内置。

讨论

  • issue 发起问题讨论,如果是问题选择类型为问题即可。
  • 欢迎加入 UNIT QQ群(584835350)交流讨论。

Copyright and License

USKit is licensed under the Apache License, Version 2.0

unit-uskit's People

Contributors

coneycode avatar luckysherry avatar shanetian avatar swpd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unit-uskit's Issues

session 根据dmkit返回清空问题

dmkit 返回的参数怎么让uskit session清空。 现在dmkit配置的技能聊天结束后,重新开始这个技能,uskit仍是上次的session_id。 如果换个技能就换了session_id, 请问如何从dmkit控制session,还有uskit本身怎么控制的。

us-kit编译报错

同样的centos7环境,unit-dmkit编译正常。
编译unit-uskit报错,brpc版本都一样。
Linking CXX executable uskit
/usr/bin/ld: warning: libcrypto.so.1.1, needed by /usr/local/lib64/libssl.so, may conflict with libcrypto.so.10
/usr/bin/ld: warning: libcrypto.so.1.1, needed by /usr/local/lib64/libssl.so, may conflict with libcrypto.so.10
../third_party/brpc/_build/output/lib/libbrpc.a(ssl_helper.cpp.o): In function brpc::CreateClientSSLContext(brpc::ChannelSSLOptions const&)': /root/dev/baidu_unit/unit-dmkit/brpc/src/brpc/details/ssl_helper.cpp:445: undefined reference to SSLv23_client_method'
../third_party/brpc/_build/output/lib/libbrpc.a(ssl_helper.cpp.o): In function brpc::CreateServerSSLContext(std::string const&, std::string const&, brpc::ServerSSLOptions const&, std::vector<std::string, std::allocator<std::string> >*)': /root/dev/baidu_unit/unit-dmkit/brpc/src/brpc/details/ssl_helper.cpp:474: undefined reference to SSLv23_server_method'
../third_party/brpc/_build/output/lib/libbrpc.a(global.cpp.o): In function brpc::GlobalInitializeOrDieImpl()': /root/dev/baidu_unit/unit-dmkit/brpc/src/brpc/global.cpp:305: undefined reference to SSL_library_init'
/root/dev/baidu_unit/unit-dmkit/brpc/src/brpc/global.cpp:307: undefined reference to `SSL_load_error_strings'
collect2: error: ld returned 1 exit status
make[2]: *** [uskit] Error 1
make[1]: *** [CMakeFiles/uskit.dir/all] Error 2
make: *** [all] Error 2

uskit 多个rank不生效

在flow.conf 文件中,调用多个排序策略,后面的排序策略不生效

//按技能定义排序
rank {
name : "skill_rank"
order: "get_child_education"
order: "get_health_lecture"
order: "get_animal_sounds"
order: "get_chat"
}
//按技能的分数排序
rank {
name : "skill_sort"

sort_by {
    expr : "get($item, 'data/score')"
    desc : 1
}

}

flow {
name : "recall_skill"
recall: "get_health_lecture"
recall: "get_child_education"
recall: "get_animal_sounds"
recall: "get_chat"
//先按找分数排序取前2个技能
rank {
rule : "skill_sort"
top_k : 2
}
//再按照技能顺序,取第一个
rank {
rule : "skill_rank"
input : "$rank"
top_k : 1
}
output {
key : "skill"
expr : "get($rank, '/')"
}
if {
cond : "len($rank) == 1"
output {
key : "skill"
expr : "get($rank, '0')"
}
output {
key : "data"
expr : "get($backend, get($rank, '0') + '/data')"
}
next : "set_session"
}
next : "default"
}

看日志上输出,结果是有排序的,但是在 if 条件哪里取值的时候,取的是第一次排序后的值

如何拿到引导语

在百度ai后台可以配置意图的回复, 如果需要引导到其他到意图可以配置一段引导语, 请求uskit到接口(127.0.0.1:8888/us),可以得到回复,但是如何拿到引导语了, http是被动请求,无法push到client, 不知道我描述的是否明白。 uskit提供的是http接口,只能client发起请求,uskit回复。
但是引导到其他意图是主动回复,无法push到cient

uskit运行几天突然挂掉

uskit在云服务器上跑了10几天,昨天突然死掉了,抓到的信息如下:
logid=123458 Received response from service [fetch_access_token] remote_service=103.235.46.158:443 latency=53959us
/root/uskits/unit-uskit-2.0.2/src/dynamic_config.cpp logid=123458 output is NULL
/root/uskits/unit-uskit-2.0.2/src/dynamic_config.cpp logid=123458 start generate flow if config
Out of memory : Kill process 1573 (uskit) score 850 or sacrifice child
Killed process 1573 (uskit) total-vm:1554464kB, anon-rss:888640kB, file-rss:0kB

请帮助解决或者指导一下问题原因??多谢

make报错求助

ld: cannot link directly with dylib/framework, your binary is not an allowed client of /usr/lib/libcrypto.dylib for architecture x86_64

make报错'openssl/ssl.h' file not found

执行:mkdir _build && cd _build && cmake .. && make
报错:

/Users/yuemeihui/kit/unit-uskit/third_party/brpc/_build/output/include/brpc/details/ssl_helper.h:24:10: fatal error:
'openssl/ssl.h' file not found
#include <openssl/ssl.h>
^~~~~~~~~~~~~~~
11 warnings and 1 error generated.
make[2]: *** [CMakeFiles/uskit.dir/src/backend.cpp.o] Error 1
make[1]: *** [CMakeFiles/uskit.dir/all] Error 2
make: *** [all] Error 2

版本:
macos 10.15.4 (19E287)
OpenSSL 1.1.1d 10 Sep 2019
git version 2.26.0
getopt from util-linux 2.35.1
gflags 2.2.2
leveldb 1.22
cmake 3.17.0
flex 2.6.4_1
bison 3.5.3

uskit解答不完整的问题

当我们向uskit提问一个问题后, 如果问的很简单,其仅仅给出一个“您要问的是以下哪个问题?”,然后就没有了! 而 在官网中,先机器人提问,在“您要问的是以下哪个问题?”后面,可以列出提示信息! 那么,我怎样才能从uskit中获得这些提示信息。 很明显,从uskit输出的log可以看到其接收到了提示信息,但是返回给我们的应用中,没有了这些信息。 请问如何配置才能获得到这些信息? 或者需要修改uskit源码嘛?

backend配置 UNIT的技能对话接口的URL的问题

向uskit发送请求的时候报错:logid=123456 Failed to receive response from service [faq_1018537] remote_server=163.177.151.89:443 latency=31667us error_msg=[E1010]HTTP/1.1 500 Internal Server Error

backend.conf配置是
backend {
name : "token_backend"
server : "aip.baidubce.com"
protocol : "http"
connect_timeout_ms : 500
timeout_ms : 1000
max_retry : 1

service {
    name : "fetch_access_token"
    request {
        http_method : "post"
        http_uri : "/oauth/2.0/token"

        http_header {
            key : "Content-Type"
            value : "application/json"
        }

        http_header {
            key : "Host"
            value : "aip.baidubce.com"
        }

        http_query {
            key : "grant_type"
            value : "client_credentials"
        }

        http_query {
            key : "client_id"
            # 替换为你的API Key
            value : "KcloAo9At6xxjwbFcCGu0L1i"
        }

        http_query {
            key : "client_secret"
            # 替换为你的Secret Key
            value : "hkkijWm4rpEiyDjeF2aimQy8lXFIOyCu"
        }
    }

Failed to receive response from service [get_access_token]

logid=794248 Failed to receive response from service [get_access_token] remote_server=127.0.0.1:6379 latency=43us error_msg=[E112]Not connected to 127.0.0.1:6379 yet, server_id=1 [R1][E112]Not connected to 127.0.0.1:6379 yet, server_id=1

这需要修改哪个配置文件啊? 之前没问题,现在突然出现这个问题。

后台经常出现连接超时的问题

后台连接经常出现连接超时的问题,不知道是什么问题?
Failed to receive response from service [myrobot_64819] remote_server=39.156.66.177:443 latency=10000383us error_msg=[E110]Fail to connect Socket{id=257 addr=39.156.66.177:443} (0x0x7f306805de30): Connection timed out [R1][E1008]Reached timeout=10000ms @39.156.66.177:443

mkdir _build && cd _build && cmake .. && make 出错

mkdir _build && cd _build && cmake .. && make

-- Build files have been written to: /Users/dreamxyp/Transcend/git/unit-uskit/_build
[ 3%] [FLEX][EXPR_LEXER] Building scanner with flex 2.5.35
[ 6%] Running cpp protocol buffer compiler on proto/us.proto
[ 10%] Running cpp protocol buffer compiler on proto/config.proto
[ 13%] [BISON][EXPR_PARSER] Building parser with bison 2.3
src/expression/parser.yy:18.10-16: require bison 3.0.4, but have 2.3
make[2]: *** [parser.cpp] Error 63
make[1]: *** [CMakeFiles/uskit.dir/all] Error 2
make: *** [all] Error 2

Docker方式启动不了

问题1:使用docker拉取官方镜像,采用默认配置启动不了,是否需要配置啥?
问题2:docker方式启动服务并没有完整的教程,开箱即用体验较差

我操作如下步骤
1、拉取镜像
docker pull docker.io/shanetian/unit-uskit:v3.0.0
2、启动
docker run -d --name unit-uskit -p 8888:8888 shanetian/unit-uskit:v3.0.0

请教一下我改如何修改我的启动命令,或者需启动前再准备什么

backend怎么配置呢

server 不能配置成 http://www.a.com/new 这种形式吗?因我我要通过/new去做负载。

如果不支持/new的话,load_balancer该如何配置呢,可以给个例子吗,谢谢。
brpc不太会用。。

sh deps.sh macos . 报Error

brpc/src/butil/strings/sys_string_conversions_mac.mm:11:
In file included from /Users/yuzidan/Desktop/case/unit-uskit-master/third_party/brpc/src/butil/mac/foundation_util.h:14:
In file included from /Users/yuzidan/Desktop/case/unit-uskit-master/third_party/brpc/src/butil/logging.h:30:
In file included from /Users/yuzidan/Desktop/case/unit-uskit-master/third_party/brpc/src/butil/atomicops.h:147:
/Users/yuzidan/Desktop/case/unit-uskit-master/third_party/brpc/src/butil/atomicops_internals_mac.h:146:9: warning:
'OSAtomicCompareAndSwap64Barrier' is deprecated: first deprecated in macOS
10.12 - Use std::atomic_compare_exchange_strong() from instead
[-Wdeprecated-declarations]
if (OSAtomicCompareAndSwap64Barrier(
^
/usr/include/libkern/OSAtomicDeprecated.h:645:9: note:
'OSAtomicCompareAndSwap64Barrier' has been explicitly marked deprecated
here
bool OSAtomicCompareAndSwap64Barrier( int64_t __oldValue, int64_t __newValue,
^
11 warnings generated.
11 warnings generated.
[ 70%] Built target BUTIL_LIB
make: *** [all] Error 2

启动USkit时报错

image
依赖环境安装都已经装了,配置文件在demo上修改的,启动时报这个错误。不知道哪里出问题了

dockerFile build报错

进行make时从35%开始报错,下面只截取了开始部分

[ 35%] Building CXX object CMakeFiles/uskit.dir/src/dynamic_config.cpp.o
In file included from /unit-uskit/third_party/brpc/_build/output/include/brpc/redis.h:27:0,
from /unit-uskit/src/brpc.h:26,
from /unit-uskit/src/backend_controller.h:19,
from /unit-uskit/src/backend_controller.cpp:15:
/unit-uskit/third_party/brpc/_build/output/include/brpc/proto_base.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
#error This file was generated by a newer version of protoc which is
^~~~~
/unit-uskit/third_party/brpc/_build/output/include/brpc/proto_base.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
#error incompatible with your Protocol Buffer headers. Please update
^~~~~
/unit-uskit/third_party/brpc/_build/output/include/brpc/proto_base.pb.h:14:2: error: #error your headers.
#error your headers.
^~~~~
In file included from /unit-uskit/third_party/brpc/_build/output/include/brpc/redis.h:27:0,
from /unit-uskit/src/brpc.h:26,
from /unit-uskit/src/backend_controller.h:19,
from /unit-uskit/src/backend_controller.cpp:15:
/unit-uskit/third_party/brpc/_build/output/include/brpc/proto_base.pb.h:25:10: fatal error: google/protobuf/generated_message_table_driven.h: No such file or directory
#include <google/protobuf/generated_message_table_driven.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

编译时找不到md5文件

-- Configuring done
-- Generating done
-- Build files have been written to: /www/kit/unit-uskit/_build
[ 2%] [FLEX][EXPR_LEXER] Building scanner with flex 2.5.37
[ 5%] Running cpp protocol buffer compiler on proto/us.proto
[ 8%] Running cpp protocol buffer compiler on proto/config.proto
[ 11%] [BISON][EXPR_PARSER] Building parser with bison 3.0.4
Scanning dependencies of target uskit
[ 14%] Building CXX object CMakeFiles/uskit.dir/src/backend.cpp.o
In file included from /www/kit/unit-uskit/src/common.h:19:0,
from /www/kit/unit-uskit/src/dynamic_config.h:22,
from /www/kit/unit-uskit/src/backend.h:22,
from /www/kit/unit-uskit/src/backend.cpp:15:
/www/kit/unit-uskit/src/butil.h:28:37: 致命错误:butil/md5.h:没有那个文件或目录
#include BUTIL_INCLUDE_PREFIX/md5.h>
^
编译中断。
make[2]: *** [CMakeFiles/uskit.dir/src/backend.cpp.o] 错误 1
make[1]: *** [CMakeFiles/uskit.dir/all] 错误 2
make: *** [all] 错误 2

编译的时候报找不到md

-- Configuring done
-- Generating done
-- Build files have been written to: /www/kit/unit-uskit/_build
[ 2%] [FLEX][EXPR_LEXER] Building scanner with flex 2.5.37
[ 5%] Running cpp protocol buffer compiler on proto/us.proto
[ 8%] Running cpp protocol buffer compiler on proto/config.proto
[ 11%] [BISON][EXPR_PARSER] Building parser with bison 3.0.4
Scanning dependencies of target uskit
[ 14%] Building CXX object CMakeFiles/uskit.dir/src/backend.cpp.o
In file included from /www/kit/unit-uskit/src/common.h:19:0,
from /www/kit/unit-uskit/src/dynamic_config.h:22,
from /www/kit/unit-uskit/src/backend.h:22,
from /www/kit/unit-uskit/src/backend.cpp:15:
/www/kit/unit-uskit/src/butil.h:28:37: 致命错误:butil/md5.h:没有那个文件或目录
#include BUTIL_INCLUDE_PREFIX/md5.h>
^
编译中断。
make[2]: *** [CMakeFiles/uskit.dir/src/backend.cpp.o] 错误 1
make[1]: *** [CMakeFiles/uskit.dir/all] 错误 2
make: *** [all] 错误 2

技能对话API错误:access_token 100 invalid parameter

您好
我在使用技能对话API,使用uskit发送请求到技能开发环境,具体的URL是http://aip.baidubce.com/rpc/2.0/unit/bot/chat?access_token=24.ed3eb20437c9acd599f43f63b975f7bd.2592000.1586672763.282335-18654877,但收到UNIT 错误码100 access_token invalid parameter,请问我具体遇到了什么问题?如何解决?

 另外,我在配置文件中protocol无法配置https,如何才能让uskit发出https消息到UNIT。
  
  期待您的回复,我的邮件地址是[email protected],如果需要具体的消息流我可以邮件给您!

启动时候报错

There have been several failed attempts to sign in from this account or IP address. Please wait a while and try again later.

options.py 中dmkit问题

问一下: uskit的options.py中 有配置 dmkit的部署地址, 那么 dmkit主要解决了哪方面的问题?是业务流程的问题嘛? dmkit解决的这个问题,uskit不能够实现嘛?麻烦解答一下,或者给个详细介绍的文档或者链接。 多谢

USkit收不到建议的回答

USkit did not receive the suggested answer.
Get in unit webpage:
clipboard
But this is only displayed on the uskit command line. How can I adjust to avoid this?
{u'error_code': 0, u'error_msg': u'OK', u'result': {u'skill': u'Quality_Glossary_76319', u'value': u'\u60a8\u8981\u95ee\u7684\u662f\u4ee5\u4e0b\u54ea\u4e2a\u95ee\u9898\uff1f'}}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.