The TaskList element is slightly different from other elements in that it is not attached to a Message or Step but can be sent directly to the chat interface.
Copy
import chainlit as cl@cl.on_chat_startasync def main(): # Create the TaskList task_list = cl.TaskList() task_list.status = "Running..." # Create a task and put it in the running state task1 = cl.Task(title="Processing data", status=cl.TaskStatus.RUNNING) await task_list.add_task(task1) # Create another task that is in the ready state task2 = cl.Task(title="Performing calculations") await task_list.add_task(task2) # Optional: link a message to each task to allow task navigation in the chat history message = await cl.Message(content="Started processing data").send() task1.forId = message.id # Update the task list in the interface await task_list.send() # Perform some action on your end await cl.sleep(1) # Update the task statuses task1.status = cl.TaskStatus.DONE task2.status = cl.TaskStatus.FAILED task_list.status = "Failed" await task_list.send()