Skip to content

Chat Session Operator

The Chat Session LOP facilitates the creation, management, and control of multi-agent chat conversations within TouchDesigner. It allows users to define agent roles, set conversation rules, inject system or user messages, and monitor the flow of dialogue. This operator is particularly useful for prototyping conversational AI applications, testing agent interactions, and creating controlled chat environments.

  • Properly configured Agent LOPs connected within the network.
  • No additional Python packages required.

None

  • Conversation Log (DAT): Stores complete chat history (roles, messages, agent IDs, timestamps, round numbers).
  • Event History (DAT): Records session events (start, agent additions, round advancements).
  • Agent States (DAT): Tracks the status of each agent (IDLE, READY, ACTIVE, COMPLETE, ERROR).
  • Configuration (DAT): Stores session configuration parameters as JSON.
Status (Status) op('chat_session').par.Status String
Default:
COMPLETE
Chat is Active (Active) op('chat_session').par.Active Toggle
Default:
0
Current Round (Currentround) op('chat_session').par.Currentround Integer
Default:
6
Current Agent (Currentagent) op('chat_session').par.Currentagent Menu
Default:
None
Agent Count (Agentcount) op('chat_session').par.Agentcount Integer
Default:
2
Template Name (Template) op('chat_session').par.Template String
Default:
default
Role Mode (Rolemode) op('chat_session').par.Rolemode Menu
Default:
structured
Options:
default, structured
Max Rounds (Maxrounds) op('chat_session').par.Maxrounds Integer
Default:
6
Max Empty Retries (Maxretries) op('chat_session').par.Maxretries Integer
Default:
4
Set Pars From Python (Setpars) op('chat_session').par.Setpars Toggle
Default:
1
Begin / Restart Session (Beginsession) op('chat_session').par.Beginsession Pulse
Default:
None
Extend Session (+1 round) (Extendsession) op('chat_session').par.Extendsession Pulse
Default:
None
End Session (Endsession) op('chat_session').par.Endsession Pulse
Default:
None
Pause Session (Pausesession) op('chat_session').par.Pausesession Pulse
Default:
None
Play Session (Playsession) op('chat_session').par.Playsession Pulse
Default:
None
Clear Conversation (Clearconversation) op('chat_session').par.Clearconversation Pulse
Default:
None
Chat System Message (Systemmessage) op('chat_session').par.Systemmessage String
Default:
chat back and forth. take turns !
Send User Message (Usermessage) op('chat_session').par.Usermessage Pulse
Default:
None
Message (Message) op('chat_session').par.Message String
Default:
None
Add Single Agent (Addsingleagent) op('chat_session').par.Addsingleagent Pulse
Default:
None
Agent OP (Agentop) op('chat_session').par.Agentop OP
Default:
None
Reset / Remove Agents (Resetsession) op('chat_session').par.Resetsession Pulse
Default:
None
Bypass (Bypass) op('chat_session').par.Bypass Toggle
Default:
0
Show Built-in Parameters (Showbuiltin) op('chat_session').par.Showbuiltin Toggle
Default:
0
Version (Version) op('chat_session').par.Version String
Default:
1.0.0
Last Updated (Lastupdated) op('chat_session').par.Lastupdated String
Default:
2024-11-06
Creator (Creator) op('chat_session').par.Creator String
Default:
dotsimulate
Website (Website) op('chat_session').par.Website String
Default:
https://dotsimulate.com
ChatTD Operator (Chattd) op('chat_session').par.Chattd OP
Default:
/dot_lops/ChatTD
  • Performance depends on agent complexity and conversation length.
  • structured role mode adds JSON parsing overhead.
  • Monitor the Agent States output DAT for agent responsiveness.
# Assume agent1 and agent2 are configured Agent LOPs
chat_session = op('chat_session1')
# Add agents (if not already connected via UI)
# chat_session.par.Agentop = op('agent1')
# chat_session.par.Addsingleagent.pulse()
# chat_session.par.Agentop = op('agent2')
# chat_session.par.Addsingleagent.pulse()
# Configure session
chat_session.par.Systemmessage = "Discuss the weather politely."
chat_session.par.Maxrounds = 10
# Start
chat_session.par.Beginsession.pulse()
chat_session = op('chat_session1')
# Pause if running
if chat_session.par.Status == 'ACTIVE':
chat_session.par.Pausesession.pulse()
# Set message and send
chat_session.par.Message = "Please switch topics to movies."
chat_session.par.Usermessage.pulse()
# Resume
chat_session.par.Playsession.pulse()
  • Prototyping multi-agent conversational AI.
  • Testing agent interactions and responses.
  • Creating controlled chat environments for research.
  • Building interactive narratives with multiple characters.
  • Generating sample multi-agent conversations.