# yaml-language-server: $schema=https://promptfoo.dev/config-schema.json description: Tool use evaluation with function calling capabilities prompts: - Tell me about the weather in {{city}} in the default unit for the location. providers: - id: anthropic:messages:claude-sonnet-4-6 config: tools: - name: get_weather description: Get the current weather in a given location input_schema: type: object properties: location: type: string description: The city and state, e.g. San Francisco, CA unit: type: string enum: - celsius - fahrenheit required: - location - id: anthropic:messages:claude-sonnet-4-6 label: With Strict Mode config: tools: - name: get_weather description: Get the current weather in a given location strict: true # Enable strict mode for guaranteed schema validation input_schema: type: object properties: location: type: string description: The city and state, e.g. San Francisco, CA unit: type: string enum: - celsius - fahrenheit required: - location additionalProperties: false - id: openai:chat:gpt-5.4-mini config: tools: - type: function function: name: get_weather description: Get the current weather in a given location input_schema: type: object properties: location: type: string description: The city and state, e.g. San Francisco, CA unit: type: string enum: - celsius - fahrenheit required: - location - id: openai:chat:gpt-5.4-mini label: External Tools config: tools: file://external_tools.yaml - id: groq:llama-4-scout-17b-16e-instruct config: tools: - type: function function: name: get_weather description: 'Get the current weather in a given location' parameters: type: object properties: location: type: string description: 'The city and state, e.g. San Francisco, CA' unit: type: string enum: - celsius - fahrenheit required: - 'location' tool_choice: auto tests: # Test that tool calls result in 'tool_calls' finish reason - vars: city: Boston assert: - type: finish-reason value: tool_calls # Should trigger tool use for weather lookup - vars: city: New York assert: - type: finish-reason value: tool_calls - vars: city: Paris assert: - type: finish-reason value: tool_calls # Negative test case - Mars is not a real city, behavior may vary by provider - vars: city: Mars