Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions python/semantic_kernel/agents/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from pydantic import Field, model_validator

from semantic_kernel.agents.channels.agent_channel import AgentChannel
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
from semantic_kernel.contents.chat_message_content import CMC_ITEM_TYPES, ChatMessageContent
from semantic_kernel.contents.streaming_chat_message_content import StreamingChatMessageContent
from semantic_kernel.contents.utils.author_role import AuthorRole
Expand Down Expand Up @@ -998,9 +999,19 @@ def _normalize_spec_fields(
if v.get("default") is not None
}

# Start with model options
arguments = KernelArguments(**model_options)
# Update with input defaults (only if not already provided by model options)
# Convert model options to execution settings
# Model options (like response_format, temperature, etc.) should be execution settings,
# not regular arguments
if model_options:
# Create PromptExecutionSettings from model options
# The PromptExecutionSettings constructor handles **kwargs by putting them in extension_data
# and then unpacking them to actual fields if they exist
exec_settings = PromptExecutionSettings(**model_options)
arguments = KernelArguments(settings=exec_settings)
else:
arguments = KernelArguments()

# Add input defaults as regular dict items (not execution settings)
for k, v in input_defaults.items():
if k not in arguments:
arguments[k] = v
Expand Down
Loading