fylhan / posibrain
一个可重复使用的聊天机器人PHP实现,让你不再孤单。嗯,等等...什么?目前没有什么很智能的,只是一系列预定义句子引导另一系列预定义答案。但是,仍然可以定义同义词,可以在答案中使用句子中的数据,当然,相同的答案不会每次都使用。
Requires
- php: >=5.3.0
- monolog/monolog: 1.6.*
- seld/jsonlint: 1.1.*
- symfony/console: 2.3.*
- symfony/http-foundation: 2.3.*
- symfony/http-kernel: 2.3.*
- symfony/routing: 2.3.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-25 12:48:56 UTC
README
一个可重复使用的聊天机器人PHP实现,让你不再孤单。嗯,等等...什么?目前没有什么很智能的,只是一系列预定义句子引导另一系列预定义答案。但是,仍然可以定义同义词,可以在答案中使用句子中的数据,当然,相同的答案不会每次都使用。
Posibrain 的名字灵感来源于阿西莫夫的电子脑机器人。是的,正如预期,R. Sammy 非常愚蠢 ;-)
安装与使用
使用 Composer 下载并安装此库。为此,创建一个文件夹并在此文件夹中创建一个 composer.json 文件。将以下内容添加到以下文件
"require": {
"fylhan/posibrain": "dev-master",
}
然后使用以下命令安装它
> php composer.php install
您也可以下载它,并下载所有依赖项,然后将其粘贴到 "vendor" 文件夹中。由于它只是一个算法,因此不需要进行配置。
您可以在代码中轻松使用它
require '../vendor/autoload.php';
use Posibrain\TchatBot;
// OR without Composer autoload: include_once('src/Posibrain/TchatBot.php');
header("Content-Type: text/html; charset=UTF-8");
$bot = new TchatBot();
$answer = $bot->generateAnswer('Bnmaster', 'Bonjour mon ami !', time());
echo @$answer[1].' : '.$answer[0].'<br />';
// May display for example: 'R. Sammy: Salutations noble ami.'
或者甚至使用命令行
Usage: php app/console submit "User message" ["User name"]
> php app/console submit "Bonjour mon ami"
R. Sammy: Salutations noble ami.
在命令行中,您还可以启动与机器人的交互式聊天
Usage: php app/console discuss ["User name"]
> php app/console discuss
What is your name? (Anonymous) Fylhan
You can start to discuss with the bot... Have a good tchat!
Fylhan: Salut !
R. Sammy: Tu vas bien ?
Fylhan: Oui je vais bien ! Comment fait-on cuire tu riz ?
R. Sammy: Moules à gaufres ! Demande à Wikipédia.
Fylhan: Aurevoir
R. Sammy: A bientôt ! Sale vilaine bête de tonnerre de Brest !
See you soon!
或者列出可用的机器人和正电子(即插件)
> php app/console bots
[0] R. Sammy alias Sammy: made the 11th of July 2013 by Fylhan
[1] R. Sammy ISO: made the 30th of August 2013 by Fylhan
> php app/console positrons
[0] Haddock/HaddockPositron
[1] Instinct/InstinctPositron
或者 REST API
GET /api/bots
GET /api/positrons
GET /api/submit/bot-id/bot-lang?pseudo=Fylhan&msg=Qui est le président des Etats-Unis ?
如何测试?
在浏览器中打开文件 dynamic.php 以打开与 R. Sammy(一个疯狂愚蠢的机器人)的交互式聊天。目前,一个旧的聊天机器人版本也安装在 Bnbox minitchat(fr)上,您可以通过以 "@Hari" 开始句子来用法语尝试与他交谈:"@Hary Salut !"。
对于静态示例,请在浏览器中打开文件 static.php。将显示一系列句子及其机器人的答案。如果遇到问题,请检查 "logs" 文件夹。
您还可以运行单元测试,通过运行 "phpunit" 命令。
如何使用和修改?
此文档将不时进行更新。
创建一个新的正电子
“正电子”是一个插件,可以为机器人添加智能和功能。它是一个扩展 \Posibrain\Positron\Positron 的 PHP 类。文件名和类名遵循以下模式:src/Posibrain/Positron/XXX/XXXPositron.php。类应位于命名空间 \Posibrain\Positron\XXX。
为了查看示例,请参阅 Haddock Positron,它为机器人的答案添加了“Captain Haddock-like insults”。
正电子可以覆盖多个方法,以选择何时启动此正电子,或帮助其他正电子完成工作,或者通过自身执行新功能。
- isPositronTriggered(TchatMessage $request)
- isBotTriggered(TchatMessage $request, $currentValue = true)
- analyseRequest(TchatMessage $request, AnalysedRequest $currentAnalysedRequest = null)
- isPositronStillTriggered(AnalysedRequest $request)
- isBotStillTriggered(AnalysedRequest $request, $currentValue = true)
- loadMemory(AnalysedRequest $request, $currentMemory = null)
- transformLoadedMemory(AnalysedRequest $request, $memory, $currentMemory = null)
- generateSymbolicAnswer(AnalysedRequest $request, $memory, TchatMessage $currentAnswer = null)
- provideMeaning(AnalysedRequest $request, $memory, TchatMessage $answer, TchatMessage $currentAnswer = null)
- beautifyAnswer(AnalysedRequest $request, $memory, TchatMessage $answer, TchatMessage $currentAnswer = null)
- updateMemory(AnalysedRequest $request, $memory, TchatMessage $answer)
工作进行中
有很多事情正在进行中!我已经创建了一个机器人算法的初版,并配备了一个快速的知识数据库。我目前正在改进软件包(命令行,API易用性,大脑选择,语言,插件管理)。这并不是这个项目的目标,但这对使用它,并且(最终)贡献于它来说很重要。然后...我们将能够提高这个聊天机器人的智能:D
- [████100%] 添加 Composer 支持
- [████100%] 找到一个合适的名字 -> Posibrain。灵感来源于艾萨克·阿西莫夫的《机器人》书籍和他的正电子机器人。
- [████ 98%] 提供选择多个大脑的方法。[缺少单元测试]
- [████ 98%] 支持多种语言:好的。只有一个法语大脑可用。[缺少单元测试]
- [██▒▒ 50%] 支持多种字符集,不仅限于 UTF-8。知识加载/存储应该很好(待检查),但机器人回复的字符集还未完成。
- [███▒ 75%] 检查并改进文件夹结构。目前:src/Posibrain,app/brains
- [███▒ 85%] 添加命令行支持:讨论模式,提交一句话,列出机器人和正电子。还有更多!
- [███▒ 75%] 添加 REST API:提交一句话,列出机器人和正电子。还有更多!
- [██▒▒ 50%] 插件管理(修改机器人行为。例如,在 Shaarli 中搜索链接...)。插件被称为“正电子”,必须是一个扩展 Posibrain\Positron\Positron 的类,并且类名以“Positron”结尾。
- [████100%] 创建一个交互式聊天示例
- [█▒▒▒ 10%] 添加适当的文档
- [████100%] 添加单元测试引擎:PHPUnit
- [█▒▒▒ 10%] 添加更多单元测试
- [█▒▒▒ 10%] 更新第一个大脑的知识
- [█▒▒▒ 10%] 增加知识语法可能性(尽可能使用 Twig 语法,在回复或问题中添加 ${name, conceptorName, lang, birthday, userName} 的支持)。
- [▒▒▒▒ 0% ] 添加讨论日志,该日志将被机器人用来学习和变得更聪明一点。
- [▒▒▒▒ 0% ] 添加越来越多的智能!
许可
此代码段是免费的软件,根据 LGPL v3 许可。有关更多信息,请参阅 LICENSE 文件。如果您对此许可有问题,请随时联系我,我对这个非常开放:D
总结
- 必需
- 许可和版权声明
- 如果您重新分发此软件,则必须披露您修改的源代码
- 允许
- 商业用途
- 修改
- 分发
- 再许可
- 专利授权
- 禁止
- 承担责任