# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
description: Comprehensive Replicate provider testing

prompts:
  - '{{task}}'

providers:
  # Text generation with Llama 4
  - id: replicate:meta/llama-4-scout-instruct
    config:
      temperature: 0.5
      max_new_tokens: 200

  # Image generation with SDXL
  - id: replicate:image:stability-ai/sdxl:7762fd07cf82c948538e41f63f77d685e02b063e37e496e96eefd46c929f9bdc
    config:
      width: 512
      height: 512
      num_inference_steps: 25

tests:
  # Text generation tests
  - vars:
      task: 'Write a haiku about mountains'
    assert:
      - type: contains-any
        value: ['mountain', 'peak', 'high', 'snow', 'summit']
      - type: javascript
        value: |
          // Basic check for haiku-like structure
          const lines = output.split('\n').filter(line => line.trim().length > 0);
          return {
            pass: lines.length >= 3,
            reason: `Found ${lines.length} lines, expected at least 3 for haiku`
          };
        provider: replicate:meta/llama-4-scout-instruct

  - vars:
      task: 'Explain quantum computing in one paragraph'
    assert:
      - type: contains-any
        value: ['quantum', 'qubit', 'superposition', 'entanglement']
      - type: javascript
        value: 'output.length > 100'
        provider: replicate:meta/llama-4-scout-instruct

  # Image generation test
  - vars:
      task: 'A serene mountain landscape at sunset with a lake reflection'
    assert:
      - type: javascript
        value: |
          // Check that the output contains markdown image format
          return output && typeof output === 'string' && output.includes('![') && output.includes('](http');
        provider: replicate:image:stability-ai/sdxl:7762fd07cf82c948538e41f63f77d685e02b063e37e496e96eefd46c929f9bdc

  - vars:
      task: 'Abstract geometric art with vibrant colors and sharp angles'
    assert:
      - type: javascript
        value: |
          // Check that the output contains markdown image format
          return output && typeof output === 'string' && output.includes('![') && output.includes('](http');
        provider: replicate:image:stability-ai/sdxl:7762fd07cf82c948538e41f63f77d685e02b063e37e496e96eefd46c929f9bdc
