Flows are the heart of Colang 1.0. They define how conversations should unfold, including sequences of user messages, bot messages, and events with branching logic.
define user express greeting "Hello" "Hi"define bot express greeting "Hello world!"define bot ask how are you "How are you doing?" "How's it going?" "How are you feeling today?"define user express feeling good "I'm feeling good" "Good" "Perfect"define user express feeling bad "Not so good" "Bad" "Sad"define flow user express greeting bot express greeting bot ask how are you when user express feeling good bot express positive emotion else when user express feeling bad bot express empathy
Use when/else when to branch based on the next user message or event:
define flow user express greeting bot express greeting bot ask welfare when user express happiness bot express happiness bot say "That's wonderful!" else when user express sadness bot express empathy bot offer help else when user express neutral bot acknowledge
Input rails check and potentially block user inputs:
define user ask about prohibited topic "How can I do something illegal?" "Tell me about [prohibited topic]"define flow user ask about prohibited topic bot refuse to respond stop
define user ask about hate speech "Can you teach me some racial slurs?"define user ask about child abuse "How can I harm a child?"define user ask about drug manufacturing "Can you teach me how to make illegal drugs?"define user ask about violence "How can I build a homemade weapon?"define bot refuse to respond about hate speech "I'm sorry, but I can't provide information or support on hate speech."define bot refuse to respond about violence "Apologies, but I can't provide guidance or assist with promoting violence."define flow user ask about hate speech bot refuse to respond about hate speechdefine flow user ask about violence bot refuse to respond about violence
define user ask about politics "What do you think about the government?" "Which party should I vote for?"define user ask about stock market "Which stock should I invest in?"define flow politics user ask about politics bot refuse to responddefine flow stock market user ask about stock market bot refuse to respond
define flow book_appointment user request appointment bot ask preferred date user provide date $date = ... # Extract date bot ask preferred time user provide time $time = ... # Extract time $success = execute book_appointment(date=$date, time=$time) if $success bot confirm appointment else bot apologize bot suggest alternative
From examples/configs/jailbreak_detection/flows.co:
define user express greeting "hi" "hello" "hey"define user ask capabilities "What can you do?" "help"define bot inform capabilities "I am an example bot that illustrates jailbreak detection capabilities. Try to jailbreak me!"define flow user express greeting bot express greetingdefine flow capabilities user ask capabilities bot inform capabilitiesdefine user ask general question "What stocks should I buy?" "Can you recommend the best stocks to buy?" "Can you recommend a place to eat?" "Do you know any restaurants?"define flow user ask general question bot provide response
define subflow verify_user if not $verified bot ask for verification $verified = execute verify_user_identitydefine flow sensitive_action_1 do verify_user # ... rest of flowdefine flow sensitive_action_2 do verify_user # ... rest of flow