Download the PHP package commune/chatbot without Composer

On this page you can find all versions of the php package commune/chatbot. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package chatbot

Commune 项目介绍

"Commune" 有亲切交谈的意思,CommuneChatbot 项目旨在提供一个对话机器人的开源开发框架。

本项目是作者本人对于 技术领域的个人探索,2019年完成了 v0.1 版本,2020年仍在探索 v0.2版本。

由于作者犯了一些策略上的错误, v0.2 版短期内无法完成开源

简单来说,一个可推广的开源项目应该上手简单,文档清晰,有明确的应用方向,然后是高质量和持续维护。

但由于作者的策略错误(也和 covid-19 疫情有关),用完了开发时间,却没有达到以上标准。

0.2 距离理想状态还差:

接下来的计划是:

您也可以把这个项目当成对话系统的一种探索思路来看待。 如有兴趣,也可以加入讨论 QQ 群 (907985715) 交流。

本文后半部分会介绍作者的开发历程和现阶段的反思,与您分享。

Commune 项目定位

对话机器人目前有两种主流的应用方向,(闲聊,问答,陪伴等) 与 (任务,智能家居,车载对话OS,chatops,声控等)。

Commune 项目本意是实现一个通用的对话机器人框架,而偏重于 。

目前有偏算法和偏工程两条道路,在的场景中(低资源、冷启动、对话轮次较深),目前行业多见偏工程的做法。

Commune 是基于类似工作流的方案,用工程手段实现对话管理。目的在于解决 跨设备对话机器人 等问题。

对标的项目是 botkithubotbotman 等。

Commune 项目现状

2019 年初步完成了 v0.1 版本,相关 Demo 地址在:

2020 年 9月初步完成了 v0.2 的 Demo,相关 Demo 地址在:

v0.2 版核心功能均已实现,但已没有条件推进到开源可用的地步。目前最接近 Ready 的领域:

这几个功能接下来会优先推进。

作者开发经历分享

写于 2020-11-26

为何要开发对话机器人项目?

简单来说,作者对有浓厚的兴趣,并有一系列对话式产品的设想,认为对话交互的优势在于:

关于产品的部分设想:

作者最希望实现的是 ,在 2015年 ~ 2018年的个人探索中,发现现有的各种技术和框架无法实现产品需求, 主要是无法解决 复杂多轮对话 问题。

按作者个人理解, 本质上和其它各种常见交互 (仪表盘/桌面应用/ 触屏应用) 一样,都需要解决 面临的 状态管理/任务调度 等问题。 由于对话交互的产品现阶段还不成熟,导致这个领域的技术实现还未被行业重视,所以没有趁手的工具。

作者在 2017 ~ 2018年在任职公司参与了三版对话机器人的开发,对此积累了许多技术上的思路,于是从 2019年着手独自开发 Commune 项目。

由于我设想的产品功能较为复杂,几乎不可能独立开发完成。因此想加入对话交互系统的开发团队来推进想法。

在 2019 年完成 Commune v0.1 版之后,一度得到了某公司对话系统团队的认可,约定年后入职。但在入职之前遭遇了 covid-19 疫情,对方单位收缩,取消了 HC。

在 19 年与该单位面试交流时,我提出了一些更激进的工业场景解决方案,包括 "跨设备机器人" "非阻塞对话" "多任务调度" "对话式编程" 等。 而在疫情期间进退两难的情况下,选择坚持独自实现了这些技术方案,于是有了 Commune v0.2版的 Demo

目前的开发遭遇的困难

而现阶段作者遇到的困难是:

所有原因归纳起来,是因为我视野、能力和经验均有不足,导致花了很多心血所做的探索,没能力使之立刻转化成对社区的价值。

所以我现在的想法是:

开发策略错误的总结与分享

1. 技术方案错误地超前于行业需求

Commune 在对话系统中探索的方案,如 等,作者仍认为是对话交互技术未来必然要解决的问题。

不过有大佬说得好,。 当对话系统的工业界需求推进到这一步时,相信有工程师作出更成熟的解决方案。

而现阶段对话式产品普遍交互轮次较浅,更谈不上 了。

由于我不在行业内,不拥有业务,这些略超前的探索无法与具体产品形态结合,也无法推动行业发展。

除非基于这些功能,开创出一种远超行业现状的新产品,来自我证明;但目前没有条件,缺乏信心和决心。

对于开源项目而言,这些技术方案又引入了更多不同于主流方案、令开发者费解的新概念,反而增大了推广成本。

2. 技术探索优先于产品

开发 Commune 项目前后有数十万行代码,但重点都放在技术方案的实现上,只有不到 1/10 的精力用于产品,且都停留在 Demo 阶段。

一个不够酷的 Demo 无法让用户立刻明白项目的长处。

而一些有用的产品方向,如 等,目前没有一个推进到 开箱即用 的水平。

这使得现阶段推广这个项目缺乏明确应用场景。

3. 过早推行生产级方案

Commune 项目代码中一直考虑生产级可用,许多环节针对生产级场景的需要,做了解决方案。

例如项目需要大量读取对话逻辑的配置,考虑到分布式系统 ,设计了 OptionRegistry 的方案, 可以从设置好的任意存储介质 (Mysql/file/redis 等) 中读取配置。

且不论给出的方案不一定是最佳实践,这要求使用本项目要学会开发和注册 Option Storage,对于一个开源项目而言反而增加了使用成本。

为了降低用户的成本,作者又得开发大量的默认配置方案,又增加了维护成本。

4. 架构设计过大

Commune 项目核心技术是 "复杂多轮对话管理",但项目本身试图实现一个全栈式的对话机器人框架。设计之初,作者一直按一个开发团队的思路去规划功能。

因此框架 3/5 的内容都是 等,战线越来越多。

这对一个工业级框架而言是必要的,但作为个人项目,它不仅意味着开发成本、还意味着线性增加的维护成本。倒过来导致许多个环节都未做到生产级可用。

例如:

尽管基于 IoC 容器都设计了抽象,仍需要开发团队自己在生产环境中完善之。 这对于开源项目反而是负面的。

5. 技术栈脱离行业主流生态

Commune 项目的方案是完全用面向对象的 Interface 先设计完成的。

而项目本身是 PHP + Swoole + Hyperf 的一个实现。

作者认为由于 PHP 的几个优点:

使 PHP 非常适合实现 Commune 的设计。

尽管如此,在我接触对话机器人相关企业时,面临的现状是绝大多数公司都在使用 Java。 Java 在工业级架构里的生态,的确比现阶段 PHP + Swoole 要成熟。

这使得作者用 PHP 实现的解决方案,对于这些公司而言风险过高,缺乏说服力。 已经有多位朋友提出希望用 Java 重构项目的内核。 这也是令人尴尬的现实。

6. 个人的技术瓶颈

设计 Commune 项目时,许多功能组件考虑到了工业级的需求,设计成了 Interface。 但作者自身的技术栈不够完整,许多环节无法给出工业级的实现。

例如 NLU (自然语言理解单元) 部分,由于需要一个可动态添加语料的 NLU,作者找不到成熟项目替代的情况下,只能临时用 SpaCy 做了一个 单点的 NLU 项目

另外接触一些对话系统的公司时,由于在起步阶段,都希望加入的是一个拥有全方位解决方案的总工角色。 而作者本人的技术能力与工作经历,还达不到工业级项目总工的水平。 而自己对话系统的解决方案,又与行业主流的方案有较大差别。

小结

综合以上分析,作者认为自己最大的错误在于没有认清 的定位。 导致:

其结果是既不利于开源推广,也难以立刻得到行业认可,而自己也没有独立的业务可以去推进。 倒过来无人参与,更难独自开发。

这个经验教训供您参考。

Commune 项目接下来的计划

  1. 暂时不把精力用在完善开源上
  2. 优先完成技术方案的介绍文档
  3. 用业余时间推进 钉钉/chatops 等功能
  4. 作为个人项目,开发小的、有价值的应用
  5. 将核心功能 (例如对话管理内核 Ghost)独立拆分,降低开源成本

对此若有任何批评与建议,欢迎您留言。


All versions of chatbot with dependencies

PHP Build Version
Package Version
Requires php Version >=7.2
psr/container Version ^1.0
commune/container Version ^0.2
psr/log Version ^1.0
ramsey/uuid Version ^3.8
clue/stdio-react Version ^2.2
tharos/schematic Version ^1.3
nesbot/carbon Version ^1.2 || ^2.1
illuminate/support Version ^6.0
illuminate/console Version ^6.0
symfony/console Version ^4.2
symfony/event-dispatcher Version ^4.2
symfony/translation Version ^4.2
symfony/validator Version ^4.2
symfony/filesystem Version ^4.2
symfony/finder Version ^4.2
symfony/yaml Version ^4.2
monolog/monolog Version ^1.24
psr/event-dispatcher Version ^1.0
guzzlehttp/guzzle Version ^6.2
overtrue/pinyin Version ~4.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package commune/chatbot contains the following files

Loading the files please wait ....