Code · Dialogue systems
isu
A dialogue manager based on Information State Update theory.
What it is
Information State Update (ISU) is a theory of dialogue from computational linguistics: a conversation is a shared information state (what has been said, what is agreed, which questions are open), and every utterance is a dialogue move that updates it according to rules. The IBIS model organises the state around the questions under discussion.
isu is a Rust implementation of an IBIS-style dialogue manager: domain knowledge (predicates, sorts, individuals), a database interface, plans that say what to find out, and a grammar that maps between text and dialogue moves. It ships with a complete travel-booking example.
Using it
use isu::*;
use std::collections::{HashMap, HashSet};
let preds0 = HashSet::from(["expensive".to_string()]);
let preds1 = HashMap::from([("city".to_string(), "location".to_string())]);
let sorts = HashMap::from([
("location".to_string(), HashSet::from(["paris".to_string(), "london".to_string()]))
]);
let domain = Domain::new(preds0, preds1, sorts);
let mut ibis = IBISController::new(domain, TravelDB::new(), SimpleGenGrammar::new());
ibis.run(); // interactive dialogue in the terminal
Ideas for using it
- A predictable front end for an LLM. Let ISU own the dialogue state and the rules, and use a language model only to paraphrase, so the system never forgets what it was asked.
- Form filling by conversation. Booking, support or intake dialogues where the system must collect specific answers.
- Teaching dialogue theory. Print the information state after each move and watch the rules fire.
Status
Prototype with a working travel domain. The grammar is deliberately simple.