# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json
description: 'OpenAI Responses API with External Schema File Example'
prompts:
  - 'Analyze the following customer support query: "{{query}}" and respond with structured JSON data.'

providers:
  - id: openai:responses:gpt-4.1-nano
    config:
      temperature: 0.3
      max_output_tokens: 600
      top_p: 0.95
      instructions: 'You are an expert customer support analyst. Analyze the customer query and provide structured information following the exact JSON schema provided.'
      response_format: file://schema.responses.yaml # External schema file reference

  - id: openai:responses:gpt-4.1-mini
    label: Responses API (Inline Schema)
    config:
      temperature: 0.2
      max_output_tokens: 800
      instructions: 'You are an expert customer support analyst. Analyze the customer query and provide structured information following the exact JSON schema provided.'
      response_format:
        type: object
        properties:
          query_summary:
            type: string
            description: "A brief summary of the customer's query"
          category:
            type: string
            enum:
              [
                'billing',
                'technical_issue',
                'product_inquiry',
                'complaint',
                'feature_request',
                'other',
              ]
            description: "The main category of the customer's query"
          sentiment:
            type: string
            enum: ['positive', 'neutral', 'negative']
            description: "The overall sentiment of the customer's query"
          urgency:
            type: string
            enum: ['1', '2', '3', '4', '5']
            description: 'The urgency level of the query, where 1 is lowest and 5 is highest'
          suggested_actions:
            type: array
            items:
              type: object
              properties:
                action:
                  type: string
                  description: 'A specific action to be taken'
                priority:
                  type: string
                  enum: ['low', 'medium', 'high']
              required: ['action', 'priority']
              additionalProperties: false
          estimated_resolution_time:
            type: string
            description: "Estimated time to resolve the query (e.g., '2 hours', '1 day')"
        required:
          [
            'query_summary',
            'category',
            'sentiment',
            'urgency',
            'suggested_actions',
            'estimated_resolution_time',
          ]
        additionalProperties: false

tests:
  - vars:
      query: "I've been charged twice for my subscription this month. Can you please refund the extra charge?"

  - vars:
      query: "How do I change my password? I can't find the option in my account settings."
