# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json

description: 'Helicone AI Gateway provider comparison'

providers:
  # Basic usage with different providers through Helicone AI Gateway
  - id: helicone:openai/gpt-4o-mini
    label: 'OpenAI via Helicone Gateway'
    config:
      temperature: 0.7
      max_tokens: 500

  - id: helicone:anthropic/claude-sonnet-4-6
    label: 'Anthropic via Helicone Gateway'
    config:
      temperature: 0.7
      max_tokens: 500

  - id: helicone:groq/llama-3.1-8b-instant
    label: 'Groq via Helicone Gateway'
    config:
      temperature: 0.7
      max_tokens: 500

prompts:
  - |
    You are a helpful AI assistant. Please answer the following question concisely and accurately.

    Question: {{question}}

    Provide a clear, informative response.

tests:
  - description: 'Basic question answering'
    vars:
      question: 'What is machine learning?'
    assert:
      - type: contains
        value: 'algorithm'
      - type: contains
        value: 'data'
      - type: llm-rubric
        value: 'Response accurately explains machine learning concepts'

  - description: 'Creative writing task'
    vars:
      question: 'Write a short story about a robot learning to paint in exactly 3 sentences.'
    assert:
      - type: llm-rubric
        value: 'Story is exactly 3 sentences long'
      - type: llm-rubric
        value: 'Story is creative and engaging'
      - type: contains
        value: 'robot'

  - description: 'Technical explanation'
    vars:
      question: 'Explain the difference between supervised and unsupervised learning.'
    assert:
      - type: contains
        value: 'supervised'
      - type: contains
        value: 'unsupervised'
      - type: llm-rubric
        value: 'Explanation clearly distinguishes between the two types of learning'

  - description: 'Math problem solving'
    vars:
      question: 'If a train travels 60 miles per hour for 2.5 hours, how far does it travel?'
    assert:
      - type: contains
        value: '150'
      - type: llm-rubric
        value: 'Calculation is correct and clearly explained'

  - description: 'Code explanation'
    vars:
      question: 'What does this Python code do: `[x**2 for x in range(10)]`?'
    assert:
      - type: contains
        value: 'list comprehension'
      - type: contains
        value: 'square'
      - type: llm-rubric
        value: 'Explanation is accurate and includes the output'

defaultTest:
  options:
    # Helicone provides built-in cost tracking
    # Enable cost tracking for comparison
    includeMetrics: true
