Fix Google LLM system instruction priority

Constructor/settings system_instruction now takes priority over the
context system message. Previously the context value would overwrite
the constructor value on every call. Warn when both are set.
This commit is contained in:
Aleix Conchillo Flaqué
2026-03-10 09:25:42 -07:00
parent 54c767cce3
commit 153705f05b

View File

@@ -997,12 +997,16 @@ class GoogleLLMService(LLMService):
self, params_from_context: GeminiLLMInvocationParams self, params_from_context: GeminiLLMInvocationParams
) -> AsyncIterator[GenerateContentResponse]: ) -> AsyncIterator[GenerateContentResponse]:
messages = params_from_context["messages"] messages = params_from_context["messages"]
if (
params_from_context["system_instruction"] # Constructor/settings system instruction takes priority over context.
and self._settings.system_instruction != params_from_context["system_instruction"] if self._settings.system_instruction and params_from_context["system_instruction"]:
): logger.warning(
logger.debug(f"System instruction changed: {params_from_context['system_instruction']}") f"{self}: Both system_instruction and a system message in context are"
self._settings.system_instruction = params_from_context["system_instruction"] " set. Using system_instruction."
)
system_instruction = (
self._settings.system_instruction or params_from_context["system_instruction"]
)
tools = [] tools = []
if params_from_context["tools"]: if params_from_context["tools"]:
@@ -1015,7 +1019,7 @@ class GoogleLLMService(LLMService):
# Build generation parameters # Build generation parameters
generation_params = self._build_generation_params( generation_params = self._build_generation_params(
system_instruction=self._settings.system_instruction, system_instruction=system_instruction,
tools=tools, tools=tools,
tool_config=tool_config, tool_config=tool_config,
) )