CryptoPatrick / code

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.