EvalConversationObserver records a bot’s conversation in the same <stem>.conversation.json format that pipecat eval simulation runs save. This lets you judge a call the eval harness didn’t drive, such as a production call, against a simulation’s success criterion and metrics with pipecat eval judge.
What Gets Recorded
Each side’s turn is what the context aggregators write to the LLM context:- User turns: What the bot heard. Text a client sends with RTVI’s
send-textis also recorded as a user turn. - Bot turns: What the bot said, cut where the user interrupted it.
- Function calls: Each call the bot makes, recorded in place in the conversation. Calls that are cancelled are removed.
Events
The observer emits one event:on_conversation_ended: Emitted once the pipeline is done- Parameters:
observer(EvalConversationObserver),message(EvalConversationEndedMessage)
- Parameters:
Usage
EvalConversationEndedMessage
list[dict]
required
The conversation’s messages, in the format of a conversation file.