10个版本 (6个稳定版)
2.0.1 | 2023年12月26日 |
---|---|
2.0.0 | 2020年1月16日 |
1.2.0 | 2020年1月16日 |
1.1.0 | 2019年10月3日 |
0.1.3 | 2017年11月15日 |
在模拟类中排名第19
每月下载量92次
46KB
794 行
eliza-rs
这是一个Rust二进制文件,是早期“聊天机器人”程序ELIZA的实现。原始程序由1964年至1966年在MIT人工智能实验室由Joseph Weizenbaum开发。
简介
ELIZA通过实现模式匹配和一种替换方法来模拟对话,给用户造成程序理解的部分错觉。如何处理输入的指令由“脚本”提供,最初用MAD-Slip编写,现在用json编写,允许ELIZA通过遵循脚本规则进行对话。Weizenbaum的意图是表明人与机器之间的通信是肤浅的。最著名的脚本DOCTOR模拟了一个罗杰斯心理治疗师。
Weizenbaum, J. (1996), ELIZA - 一款用于研究人与机器之间自然语言通信的计算机程序, Communications of the ACM, vol 9, issue 1
安装
要安装此Rust二进制文件,可以从源代码或从crates.io安装。在两种情况下,您需要在系统上安装Rust编译器和cargo 安装。
从crates.io安装
使用cargo从crates.io安装eliza
非常简单
user@foo(~)$ cargo install eliza
从源代码安装
在从GitHub分叉此项目并将其克隆到本地计算机后,导航到项目目录并运行
user@foo(eliza-rs)$ cargo build
您还可以选择运行单元测试以确保ELIZA按预期运行
user@foo(eliza-rs)$ cargo test
用法
要启动ELIZA会话,您必须向二进制文件提供ELIZA脚本的路径。此脚本的形式为json
文件。假设您已从源代码安装并想运行著名的DOCTOR程序,您将在项目根目录中运行的命令类似于此:
user@foo(eliza-rs)$ cargo run scripts/doctor.json
...
如果您是从crates.io安装的,那么doctor.json
的位置将不同。为了方便起见,我决定将doctor.json
脚本与crates.io上的eliza二进制文件捆绑在一起。对于每个用户,它在crates注册表中的位置会有所不同,所以我建议在运行之前将其移动到更容易记住的地方。
user@foo(~)$ cp .cargo/registry/src/[some_hash]/eliza-[ver]/scripts/doctor.json .
user@foo(~)$ eliza doctor.json
...
使用cargo启动eliza然后离开会话
编写自己的ELIZA脚本
ELIZA的设计方法的优点在于程序员和剧作家的角色是分开的。ELIZA的一个重要特性是脚本就是数据——它本身不是程序的一部分。因此,ELIZA不受特定识别模式或响应集的限制,甚至不受任何特定语言的限制。
因此,贡献者可以决定改进原始的doctor.json
脚本,或者从头开始完全创建自己的脚本。为了展示创建有趣内容所需的最少内容,已经包含了一个海盗脚本的简单示例。
有关脚本结构的更多信息,请参阅doc.rs上的script
模块的文档。
测试
由于ELIZA具有某种程度的确定性,您可以编写单元测试来评估脚本规则。例如,在tests/conversation_test.rs
中,您可以添加以下内容
#[test]
fn your_test(){
let mut e = Eliza::new("scripts/your_script.json").unwrap();
assert_eq!("bar", e.respond("foo"));
}
其中'foo'是ELIZA的用户输入,'bar'是响应。
值得注意的是,ELIZA会生成日志输出。要观察程序执行期间的这些日志,请使用环境变量RUST_LOG=eliza
启动二进制文件。
依赖关系
~4–14MB
~153K SLoC