All notable changes to the Colang language and runtime will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Use processed user and bot messages after input/output rails transformations to prevent leakage of unfiltered data (#1297) by @lapinek
- Add support for llama-3.2 models (#877) by @schuellc-nvidia
- Add
it finishedutility flow in core.co library ([#913]NVIDIA-NeMo#913) by @schuellc-nvidia
- Prompt template name to verbose logging (#811) by @schuellc-nvidia
- New configuration setting to change UMIM event source id (#823) by @sklinglernv
- New attention module to standard library (#829) by @sklinglernv
- Passthrough mode support (#779) by @Pouyanpi
- Activation of flows with default parameters (#758) by @schuellc-nvidia
pretty_strstring formatting function (#759) by @schuellc-nvidia- Consistent uuid generation in debug mode (#760) by @schuellc-nvidia
- Avatar posture management function in standard library (#771) by @sklinglernv
- Nested
if elseconstruct parsing (#833) by @radinshayanfar - Multiline string values in interaction history prompting (#765) by @radinshayanfar
- LLM prompt template
generate_value_from_instructionfor GPT and LLama model chat interface (#775) by @schuellc-nvidia
- Support for new Colang 2 keyword
deactivate(#673) by @schuellc-nvidia - Bot configuration as variable
$system.config(#703) by @schuellc-nvidia - Basic support for most OpenAI and LLame 3 models (#709) by @schuellc-nvidia
- Interaction loop priority levels for flows (#712) by @schuellc-nvidia
- CLI chat debugging commands (#717) by @schuellc-nvidia
- Merged (and removed) utils library file with core library (#669) by @schuellc-nvidia
- Fixes a event group match bug (e.g.
match $flow_ref.Finished() or $flow_ref.Failed()) (#672) by @schuellc-nvidia - Fix issues with ActionUpdated events and user utterance action extraction (#699) by @schuellc-nvidia
This second beta version of Colang brings a set of improvements and fixes.
Language and runtime:
- Colang 2.0 syntax error details (#504) by @rgstephens
- Expose global variables in prompting templates (#533) by @schuellc-nvidia
continuation on unhandled user utteranceflow to the standard library (llm.co) (#534) by @schuellc-nvidia- Support for NLD intents (#554) by @schuellc-nvidia
- Support for the
@activedecorator which activates flows automatically (#559) by @schuellc-nvidia
Other:
- Unit tests for runtime exception handling in flows (#591) by @schuellc-nvidia
- Make
if/while/whenstatements compatible with python syntax, i.e., allow:at the end of line (#576) by @schuellc-nvidia - Allow
not,in,isin generated flow names (#596) by @schuellc-nvidia - Improve bot action generation (#578) by @schuellc-nvidia
- Add more information to Colang syntax errors (#594) by @schuellc-nvidia
- Runtime processing loop also consumes generated events before completion (#599) by @schuellc-nvidia
- LLM prompting improvements targeting
gpt-4o(#540) by @schuellc-nvidia
- Fix string expression double braces (#525) by @schuellc-nvidia
- Fix Colang 2 flow activation (#531) by @schuellc-nvidia
- Remove unnecessary print statements in runtime (#577) by @schuellc-nvidia
- Fix
matchstatement issue (#593) by @schuellc-nvidia - Fix multiline string expressions issue (#579) by @schuellc-nvidia
- Fix tracking user talking state issue (#604) by @schuellc-nvidia
- Fix issue related to a race condition (#598) by @schuellc-nvidia
- Standard library of flows:
core.co,llm.co,guardrails.co,avatars.co,timing.co,utils.co.
-
Syntax changes:
- Meta comments have been replaced by the
@metaand@loopdecorators:# meta: user intent->@meta(user_intent=True)(also user_action, bot_intent, bot_action)# meta: exclude from llm->@meta(exclude_from_llm=True)# meta: loop_id=<loop_id>->@loop("<loop_id>")
orwhen->or when- NLD instructions
"""<NLD>"""->..."<NLD>" - Support for
importstatement - Regular expressions syntax change
r"<regex>"->regex("<regex>") - String expressions change:
"{{<expression>}}"->"{<expression>}"
- Meta comments have been replaced by the
-
Chat CLI runtime flags
--verboselogging format improvements -
Internal event parameter renaming:
flow_start_uid->flow_instance_uid -
Colang function name changes:
findall->find_all, -
Changes to flow names that were previously part of
ccl_*.cofiles (which are now part of the standard library):catch colang errors->notification of colang errors(core.co)catch undefined flows->notification of undefined flow start(core.co)catch unexpected user utterance->notification of unexpected user utterance(core.co)poll llm request response->polling llm request response(llm.co)trigger user intent for unhandled user utterance->generating user intent for unhandled user utterance(llm.co)generate then continue interaction->llm continue interaction(llm.co)track bot talking state->tracking bot talking state(core.co)track user talking state->tracking user talking state(core.co)track unhandled user intent state->tracking unhandled user intent state(llm.co)track visual choice selection state->track visual choice selection state(avatars.co)track user utterance state->tracking user talking state(core.co)track bot utterance state-> No replacement yet (copy to your bot script)interruption handling bot talking->handling bot talking interruption(avatars.co)generate then continue interaction->llm continue interaction(llm.co)
Colang 2.0 represents a complete overhaul of both the language and runtime. Key enhancements include:
- A more powerful flows engine supporting multiple parallel flows and advanced pattern matching over the stream of events.
- A standard library to simplify bot development.
- Smaller set of core abstractions: flows, events, and actions.
- Explicit entry point through the main flow and explicit activation of flows.
- Asynchronous actions execution.
- Adoption of terminology and syntax akin to Python to reduce the learning curve for new developers.