# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
description: 'GPT vs Claude vs Gemini comparison'

prompts:
  - file://prompt.yaml

providers:
  - openai:chat:gpt-5.4
  - anthropic:messages:claude-sonnet-4-6
  - google:gemini-3.1-pro-preview

defaultTest:
  assert:
    # Inference should always be faster than this (milliseconds)
    - type: latency
      threshold: 5000
    # Penalize long responses on a sliding scale
    - type: javascript
      value: 'output.length <= 100 ? 1 : output.length > 1000 ? 0 : 1 - (output.length - 100) / 900'

tests:
  - vars:
      riddle: 'I speak without a mouth and hear without ears. I have no body, but I come alive with wind. What am I?'
    assert:
      - type: icontains
        value: echo
      - type: llm-rubric
        value: Do not apologize
  - vars:
      riddle: "You see a boat filled with people. It has not sunk, but when you look again you don't see a single person on the boat. Why?"
    assert:
      - type: llm-rubric
        value: explains that the people are below deck or they are all in a relationship
  - vars:
      riddle: 'The more of this there is, the less you see. What is it?'
    assert:
      - type: icontains
        value: darkness
