Colang は、柔軟でありながら制御可能な対話フローを設計するために特別に作られたモデリング言語である。
NVIDIA NeMo Guardrails が、同ツールキットのさまざまな種類のガードレールを設定・実装する手段として
導入しており、その README は構文を Python に似たもの、そしてとりわけ開発者にとって単純かつ直感的であるよう設計された
ものと説明している。定義はガードレール設定フォルダ内の .co ファイルに置かれ、そこでとくにダイアログレールを
与える。
サポートされているバージョンは 1.0 と 2.0 の二つで、1.0 がデフォルトである。
用法
この言語の単位は、プログラムされるのではなく宣言される。define user ブロックは意図に名前を付け、それを表す発話例を
列挙する——挨拶のブロックなら “Hello!” や “Good afternoon!” を挙げる——ことで、意図をパターンではなく例示によって
指定する。define bot ブロックは応答に名前を付け、その文言を与える。そして define flow ブロックがそれらを結び付け、
ユーザーが挨拶を表明し、続いてボットが挨拶を返して手助けを申し出る、という順序を列挙する。
同じ三つの構成要素は、礼儀と同じくらい容易に制約も表現する。README の二つ目の例は、侮辱を表明するユーザーの意図を “You are stupid” を発話例として定義し、それを落ち着いて手助けする意思を示すボットの応答と対にするフローを定義している ——これは、ある種類の入力に対する返答をモデルに任せず固定するダイアログレールである。
これらの定義が生み出す正準形のメッセージこそが、同ツールキットのダイアログレールが働きかける対象であり、アクションを 実行すべきか、次の手順でモデルを呼び出すべきか、それとも代わりにあらかじめ定義された応答を使うべきかを判断する際に 用いられる。
関連用語
- NVIDIA NeMo Guardrails — この言語を導入し、使用するツールキット
- ガードレール — この言語がその一種を表現する、より広い制御の系統
- プロンプトエンジニアリング — そうした制約をプロンプト自体の中に散文で記述するという代替のアプローチ