Skip to content

Commit f81ebdb

Browse files
UlookEEcopybara-github
authored andcommitted
fix: Bug when callback_context_invocation_context is missing in GlobalInstructionPlugin
Merge #3163 END_PUBLIC Hello, Since global_instruction has been deprecated, I’m migrating to GlobalInstructionPlugin. During the migration, I encountered an error and am submitting this PR to fix it. In [df05ed6](df05ed6) , GlobalInstructionPlugin references invocation_context, but CallbackContext actually contains _invocation_context. This mismatch always causes an error during execution. COPYBARA_INTEGRATE_REVIEW=#3180 from UlookEE:fix_global_instruction_plugin e289a12 PiperOrigin-RevId: 827682501
1 parent c33a680 commit f81ebdb

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

src/google/adk/plugins/global_instruction_plugin.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,8 @@ async def before_model_callback(
7979
return None
8080

8181
# Resolve the global instruction (handle both string and InstructionProvider)
82-
readonly_context = ReadonlyContext(callback_context.invocation_context)
8382
final_global_instruction = await self._resolve_global_instruction(
84-
readonly_context
83+
callback_context
8584
)
8685

8786
if not final_global_instruction:

tests/unittests/plugins/test_global_instruction_plugin.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async def test_global_instruction_plugin_with_string():
4343
mock_invocation_context.session = mock_session
4444

4545
mock_callback_context = Mock(spec=CallbackContext)
46-
mock_callback_context.invocation_context = mock_invocation_context
46+
mock_callback_context._invocation_context = mock_invocation_context
4747

4848
llm_request = LlmRequest(
4949
model="gemini-1.5-flash",
@@ -80,10 +80,10 @@ async def build_global_instruction(readonly_context: ReadonlyContext) -> str:
8080
)
8181

8282
mock_invocation_context = Mock(spec=InvocationContext)
83-
mock_invocation_context.session = mock_session
8483

8584
mock_callback_context = Mock(spec=CallbackContext)
86-
mock_callback_context.invocation_context = mock_invocation_context
85+
mock_callback_context._invocation_context = mock_invocation_context
86+
mock_callback_context.session = mock_session
8787

8888
llm_request = LlmRequest(
8989
model="gemini-1.5-flash",
@@ -119,7 +119,7 @@ async def test_global_instruction_plugin_empty_instruction():
119119
mock_invocation_context.session = mock_session
120120

121121
mock_callback_context = Mock(spec=CallbackContext)
122-
mock_callback_context.invocation_context = mock_invocation_context
122+
mock_callback_context._invocation_context = mock_invocation_context
123123

124124
llm_request = LlmRequest(
125125
model="gemini-1.5-flash",
@@ -156,7 +156,7 @@ async def test_global_instruction_plugin_leads_existing():
156156
mock_invocation_context.session = mock_session
157157

158158
mock_callback_context = Mock(spec=CallbackContext)
159-
mock_callback_context.invocation_context = mock_invocation_context
159+
mock_callback_context._invocation_context = mock_invocation_context
160160

161161
llm_request = LlmRequest(
162162
model="gemini-1.5-flash",
@@ -191,7 +191,7 @@ async def test_global_instruction_plugin_prepends_to_list():
191191
mock_invocation_context.session = mock_session
192192

193193
mock_callback_context = Mock(spec=CallbackContext)
194-
mock_callback_context.invocation_context = mock_invocation_context
194+
mock_callback_context._invocation_context = mock_invocation_context
195195

196196
llm_request = LlmRequest(
197197
model="gemini-1.5-flash",

0 commit comments

Comments
 (0)