Chat Session Operator
Overview
Section titled “Overview”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.
Requirements
Section titled “Requirements”- Properly configured Agent LOPs connected within the network.
- No additional Python packages required.
Input/Output
Section titled “Input/Output”Inputs
Section titled “Inputs”None
Outputs
Section titled “Outputs”- 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.
Parameters
Section titled “Parameters”Session Page
Section titled “Session Page” 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
Agent Count (Agentcount)
op('chat_session').par.Agentcount
Integer - Default:
2
Template Name (Template)
op('chat_session').par.Template
String - Default:
default
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
Controls Page
Section titled “Controls Page” 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
About Page
Section titled “About Page” 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 Considerations
Section titled “Performance Considerations”- Performance depends on agent complexity and conversation length.
structured
role mode adds JSON parsing overhead.- Monitor the Agent States output DAT for agent responsiveness.
Usage Examples
Section titled “Usage Examples”Setting up a Basic Session
Section titled “Setting up a Basic Session”# Assume agent1 and agent2 are configured Agent LOPschat_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 sessionchat_session.par.Systemmessage = "Discuss the weather politely."chat_session.par.Maxrounds = 10
# Startchat_session.par.Beginsession.pulse()
Injecting a User Message
Section titled “Injecting a User Message”chat_session = op('chat_session1')
# Pause if runningif chat_session.par.Status == 'ACTIVE': chat_session.par.Pausesession.pulse()
# Set message and sendchat_session.par.Message = "Please switch topics to movies."chat_session.par.Usermessage.pulse()
# Resumechat_session.par.Playsession.pulse()
Common Use Cases
Section titled “Common Use Cases”- 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.