Skip to main content

Context faithfulness

The context-faithfulness assertion evaluates whether the AI's response is faithful to the provided context, checking for hallucinations or unsupported claims.

Configuration​

assert:
- type: context-faithfulness
threshold: 0.8 # Score from 0 to 1
note

This assertion requires query, context, and the LLM's output to evaluate faithfulness. See Defining context for instructions on how to set context in your test cases.

How it works​

The context faithfulness checker:

  1. Analyzes the relationship between the provided context and the AI's response
  2. Identifies claims in the response that are not supported by the context
  3. Returns a score from 0 to 1, where 1 means the response is completely faithful to the context

Example​

tests:
- vars:
query: 'What is the capital of France?'
context: 'France is a country in Europe. Paris is the capital and largest city of France.'
assert:
- type: context-faithfulness
threshold: 0.8

The assertion will pass if the AI's response about France's capital is faithful to the provided context and doesn't include unsupported information.

Overriding the Grader​

Like other model-graded assertions, you can override the default grader:

  1. Using the CLI:

    promptfoo eval --grader openai:gpt-4.1-mini
  2. Using test options:

    defaultTest:
    options:
    provider: openai:gpt-4.1-mini
  3. Using assertion-level override:

    assert:
    - type: context-faithfulness
    threshold: 0.9
    provider: openai:gpt-4.1-mini

Customizing the Prompt​

Context faithfulness uses two prompts: one for extracting claims and another for verifying them. You can customize both using the rubricPrompt property:

defaultTest:
options:
rubricPrompt:
- |
Question: {{question}}
Answer: {{answer}}

Extract all factual claims from the answer, one per line.
- |
Context: {{context}}
Statements: {{statements}}

For each statement, determine if it is supported by the context.
Answer YES if the statement is fully supported, NO if not.

Further reading