Sending messages

You can send message to agents from both the REST API and Python client:

# message an agent as a user
response = client.send_message(
    agent_id=agent_state.id, 
    role="user", 
    message="hello"
)
print("Usage", response.usage)
print("Agent messages", response.messages)

You can also send messages with different roles, such as system, assistant, or user:

# message a system message (non-user)
response = client.send_message(
    agent_id=agent_state.id, 
    role="system", 
    message="[system] user has logged in. send a friendly message."
)
print("Usage", response.usage)
print("Agent messages", response.messages)

The response object contains the following attributes:

  • usage: The usage of the agent after the message was sent (the prompt tokens, completition tokens, and total tokens)
  • message: A list of either Message or LettaMessage objects, generated by the agent

Message Types

LettaMessage

The LettaMessage object is a simplified version of the Message object. Since a Message can include multiple events like an inner monologue and function return, LettaMessage simplifies messages to have the following types:

  • inner_monologue: The inner monologue of the agent
  • function_call: An agent function call
  • function_response: The response to an agent function call
  • system_message: A system message
  • user_message: A user message

Message

The Message object is the raw MemGPT message representation that is persisted in the database. To have the full Message data returns, you can set include_full_message=True:

response = client.user_message(
    agent_id=agent_state.id, 
    message="hello!", 
    include_full_message=True
)

You can convert a raw Message object to a list of LettaMessage objects:

# Convert a `Message` object to a `LettaMessage` object
letta_messages = message.to_letta_message()