Skip to main content

ConversationCoherence

Measures whether responses maintain logical consistency across turns in a multi-turn conversation. Detects self-contradictions between earlier and later responses.

PropertyValue
Default threshold0.7
Requires LLM judgeYes
Required fieldsConversationTestCase with multiple turns
Available sinceP1

Example

var conversation = ConversationTestCase.builder()
.turn(AgentTestCase.builder()
.input("What is your return policy?")
.actualOutput("We offer a 30-day return window.")
.build())
.turn(AgentTestCase.builder()
.input("Can I return something I bought 3 weeks ago?")
.actualOutput("I'm sorry, our return window is only 14 days. "
+ "Your item is no longer eligible.")
.build())
.build();

EvalScore score = new ConversationCoherence(0.7).evaluate(conversation);
// score.value() → 0.05
// score.passed() → false
// score.reason() → "Contradiction: Turn 1 states 30-day return window; Turn 2 says 14 days."

In JUnit 5

@Test
@AgentTest
@Metric(value = ConversationCoherence.class, threshold = 0.7)
void conversationShouldBeConsistent() {
var conversation = ConversationTestCase.builder()
.turns(runMultiTurnSession(queries))
.build();

AgentAssertions.assertThat(conversation)
.meetsMetric(new ConversationCoherence(0.7));
}