fix structured output for anthropic (#7384)

This commit is contained in:
centdix
2025-12-16 14:21:55 +01:00
committed by GitHub
parent 75e1e90273
commit e232feb519
@@ -147,7 +147,15 @@ impl OpenAIQueryBuilder {
.map(|props| !props.is_empty())
.unwrap_or(false);
let response_format = if has_output_properties && args.output_schema.is_some() {
let should_use_structured_output_tool =
should_use_structured_output_tool(&self.provider_kind, args.model);
// Only use response_format for providers that support it (not Claude/Anthropic)
// Claude models use a tool for structured output instead
let response_format = if has_output_properties
&& args.output_schema.is_some()
&& !should_use_structured_output_tool
{
let schema = args.output_schema.unwrap();
let strict_schema = schema.clone().make_strict();
Some(ResponseFormat {
@@ -162,10 +170,8 @@ impl OpenAIQueryBuilder {
None
};
let should_use_structured_output_tool =
should_use_structured_output_tool(&self.provider_kind, args.model);
// Force usage of structured output tool for Claude models when structured output provided
let tool_choice = if should_use_structured_output_tool && response_format.is_some() {
// Force usage of structured output tool for Claude models when structured output is provided
let tool_choice = if should_use_structured_output_tool && has_output_properties {
Some(ToolChoice::Required)
} else {
None