Skip to main content
This page requires Python familiarity. It covers accessing conversation history from Python functions.
The conv.history attribute contains a chronological list of UserInput and AgentResponse objects representing the conversation so far.
As the platform evolves, conv.history may include new event types beyond UserInput and AgentResponse. Use isinstance() checks rather than event.role comparisons to safely filter events — this ensures your code won’t break if new event types are introduced that don’t have a role attribute.

UserInput

Represents a user turn in the conversation.
for event in conv.history:
    if isinstance(event, UserInput):
        print(f"User said: {event.text}")

Properties

PropertyTypeDescription
textstrThe user’s input text. Can be an empty string when the user is silent or no speech is detected.
rolestrAlways "user"

Methods

MethodReturnsDescription
to_dict()dictReturns {"type": "user", "text": "..."}
to_string()strReturns "User: <text>"

AgentResponse

Represents an agent turn in the conversation.
for event in conv.history:
    if isinstance(event, AgentResponse):
        print(f"Agent said: {event.text}")

Properties

PropertyTypeDescription
textstrThe agent’s response text
rolestrAlways "agent"

Methods

MethodReturnsDescription
to_dict()dictReturns {"type": "agent", "text": "..."}
to_string()strReturns "Agent: <text>"

Example: format history for logging

def log_conversation(conv: Conversation):
    for event in conv.history:
        conv.log.info(event.to_string())

Example: get last user message

def get_last_user_input(conv: Conversation) -> str:
    for event in reversed(conv.history):
        if isinstance(event, UserInput):
            return event.text
    return ""

Notes

  • Empty text values: UserInput.text can be an empty string (e.g., when a user is silent or no speech is detected). Guard against this in your functions if downstream logic depends on non-empty input:
last_input = get_last_user_input(conv)
if last_input.strip():
    # Process the input
    pass
  • Metric events: Metric data is not part of conv.history. To access metrics, use conv.metric_events instead.

See also

  • conv object — full list of conversation methods and attributes.
Last modified on March 22, 2026