這個 Rust 二進位檔案是早期「聊天機器人」程式ELIZA的實作。最初的程序是由 Joseph Weizenbaum 於 1964 年至 1966 年在麻省理工學院人工智慧實驗室開發的。
ELIZA 透過實施模式匹配和替代方法來模擬對話,讓使用者產生一種理解程式部分的錯覺。有關如何處理輸入的指令由「腳本」提供(最初以 MAD-Slip 編寫,現在以 json 編寫),它允許 ELIZA 透過遵循腳本規則參與對話。魏森鮑姆的目的是證明人與機器之間的溝通是膚淺的。最著名的劇本《DOCTOR》模擬了羅傑斯心理治療師。
Weizenbaum, J. (1996), ELIZA - 用於研究人與機器之間自然語言通信的計算機程序,ACM 通信,第 9 卷,第 1 期
要安裝這個 rust 二進位文件,可以從原始碼或 crates.io 進行安裝。無論哪種情況,您都需要在系統上安裝 Rust 編譯器和 Cargo。
使用 Cargo 從 crates.io 安裝eliza
非常簡單:
user@foo(~)$ cargo install eliza
分叉該項目並將其克隆到本地計算機後,導航到專案目錄並運行:
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
...
讓 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
啟動二進位檔案。