# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json description: 'OpenAI Chat API with External and Inline Schema Examples' prompts: - 'Analyze the following customer support query: "{{query}}" and respond with structured JSON data.' providers: # GPT-5 models with structured output - id: openai:chat:gpt-5.4-nano label: GPT-5.4 Nano External Schema config: max_completion_tokens: 800 seed: 123456 response_format: file://schema.chat.json # External schema file reference - id: openai:chat:gpt-5.4-mini label: GPT-5.4 Mini Inline Schema config: max_completion_tokens: 1000 response_format: type: json_schema json_schema: name: enhanced_customer_support_analysis strict: true schema: 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', 'feedback', 'other', ] description: "The main category of the customer's query" sentiment: type: string enum: ['very_positive', 'positive', 'neutral', 'negative', 'very_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', 'critical'] estimated_time: type: string description: 'Estimated time to complete this action' required: ['action', 'priority', 'estimated_time'] additionalProperties: false estimated_resolution_time: type: string description: "Estimated time to resolve the query (e.g., '2 hours', '1 day')" follow_up_required: type: boolean description: 'Whether a follow-up is required after initial resolution' required: [ 'query_summary', 'category', 'sentiment', 'urgency', 'suggested_actions', 'estimated_resolution_time', 'follow_up_required', ] additionalProperties: false # Legacy models for comparison - id: openai:chat:gpt-4.1-nano label: GPT-4.1 Nano External Schema config: temperature: 0.2 max_tokens: 800 seed: 123456 response_format: file://schema.chat.json # External schema file reference - id: openai:chat:gpt-4.1-mini label: GPT-4.1 Mini Inline Schema config: temperature: 0.3 max_tokens: 1000 response_format: type: json_schema json_schema: name: enhanced_customer_support_analysis strict: true schema: 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', 'feedback', 'other', ] description: "The main category of the customer's query" sentiment: type: string enum: ['very_positive', 'positive', 'neutral', 'negative', 'very_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', 'critical'] estimated_time: type: string description: 'Estimated time to complete this action' required: ['action', 'priority', 'estimated_time'] additionalProperties: false estimated_resolution_time: type: string description: "Estimated time to resolve the query (e.g., '2 hours', '1 day')" follow_up_required: type: boolean description: 'Whether a follow-up is required after initial resolution' required: [ 'query_summary', 'category', 'sentiment', 'urgency', 'suggested_actions', 'estimated_resolution_time', 'follow_up_required', ] 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."