Skip to content

Commit f14c89b

Browse files
fix: ensure additionalProperties is recursive
1 parent f202007 commit f14c89b

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

lib/crewai/src/crewai/llms/providers/azure/completion.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from pydantic import BaseModel
99

1010
from crewai.utilities.agent_utils import is_context_length_exceeded
11+
from crewai.utilities.converter import generate_model_description
1112
from crewai.utilities.exceptions.context_window_exceeding_exception import (
1213
LLMContextLengthExceededError,
1314
)
@@ -26,8 +27,8 @@
2627
from azure.ai.inference.models import (
2728
ChatCompletions,
2829
ChatCompletionsToolCall,
29-
StreamingChatCompletionsUpdate,
3030
JsonSchemaFormat,
31+
StreamingChatCompletionsUpdate,
3132
)
3233
from azure.core.credentials import (
3334
AzureKeyCredential,
@@ -279,14 +280,15 @@ def _prepare_completion_params(
279280
}
280281

281282
if response_model and self.is_openai_model:
282-
response_model_json_schema = response_model.model_json_schema()
283-
response_model_json_schema['additionalProperties'] = False
284-
283+
model_description = generate_model_description(response_model)
284+
json_schema_info = model_description["json_schema"]
285+
json_schema_name = json_schema_info["name"]
286+
285287
params["response_format"] = JsonSchemaFormat(
286-
name="Tasks_Response",
287-
schema=response_model_json_schema,
288-
description="Describes the task expected response",
289-
strict=True,
288+
name=json_schema_name,
289+
schema=json_schema_info["schema"],
290+
description=f"Schema for {json_schema_name}",
291+
strict=json_schema_info["strict"],
290292
)
291293

292294
# Only include model parameter for non-Azure OpenAI endpoints
@@ -314,8 +316,8 @@ def _prepare_completion_params(
314316
params["tool_choice"] = "auto"
315317

316318
additional_params = self.additional_params
317-
additional_drop_params = additional_params.get('additional_drop_params')
318-
drop_params = additional_params.get('drop_params')
319+
additional_drop_params = additional_params.get("additional_drop_params")
320+
drop_params = additional_params.get("drop_params")
319321

320322
if drop_params and isinstance(additional_drop_params, list):
321323
for drop_param in additional_drop_params:

0 commit comments

Comments
 (0)