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.
- #673 Add support for new Colang 2 keyword
deactivate. - #703 Add bot configuration as variable
$system.config. - #709 Add basic support for most OpenAI and LLame 3 models.
- #712 Add interaction loop priority levels for flows.
- #717 Add CLI chat debugging commands.
- #669 Merged (and removed) utils library file with core library.
- #672 Fixes a event group match bug (e.g.
match $flow_ref.Finished() or $flow_ref.Failed()) - #699 Fix issues with ActionUpdated events and user utterance action extraction.
This second beta version of Colang brings a set of improvements and fixes.
Language and runtime:
- #504 Add colang 2.0 syntax error details by @rgstephens.
- #533 Expose global variables in prompting templates.
- #534 Add
continuation on unhandled user utteranceflow to the standard library (llm.co). - #554 Support for NLD intents.
- #559 Support for the
@activedecorator which activates flows automatically.
Other:
- #591 Unit tests for runtime exception handling in flows.
- #576 Make
if/while/whenstatements compatible with python syntax, i.e., allow:at the end of line. - #596 Allow
not,in,isin generated flow names. - #578 Improve bot action generation.
- #594 Add more information to Colang syntax errors.
- #599 Runtime processing loop also consumes generated events before completion.
- #540 LLM prompting improvements targeting
gpt-4o.
- #525 Fix string expression double braces.
- #531 Fix Colang 2 flow activation.
- #577 Remove unnecessary print statements in runtime.
- #593 Fix
matchstatement issue. - #579 Fix multiline string expressions issue.
- #604 Fix tracking user talking state issue.
- #598 Fix issue related to a race condition.
- 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.