Skip to content

Commit db0772c

Browse files
constantiniussentrivana
authored andcommitted
fix(integrations): ensure that GEN_AI_AGENT_NAME is properly set for GEN_AI spans under an invoke_agent span
1 parent b3b2eb6 commit db0772c

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

sentry_sdk/integrations/google_genai/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ def new_generate_content_stream(self, *args, **kwargs):
9292
chat_span.set_data(SPANDATA.GEN_AI_REQUEST_MODEL, model_name)
9393
set_span_data_for_request(chat_span, integration, model_name, contents, kwargs)
9494
chat_span.set_data(SPANDATA.GEN_AI_RESPONSE_STREAMING, True)
95+
chat_span.set_data(SPANDATA.GEN_AI_AGENT_NAME, model_name)
9596

9697
try:
9798
stream = f(self, *args, **kwargs)
@@ -165,6 +166,7 @@ async def new_async_generate_content_stream(self, *args, **kwargs):
165166
chat_span.set_data(SPANDATA.GEN_AI_REQUEST_MODEL, model_name)
166167
set_span_data_for_request(chat_span, integration, model_name, contents, kwargs)
167168
chat_span.set_data(SPANDATA.GEN_AI_RESPONSE_STREAMING, True)
169+
chat_span.set_data(SPANDATA.GEN_AI_AGENT_NAME, model_name)
168170

169171
try:
170172
stream = await f(self, *args, **kwargs)
@@ -233,6 +235,7 @@ def new_generate_content(self, *args, **kwargs):
233235
chat_span.set_data(SPANDATA.GEN_AI_OPERATION_NAME, "chat")
234236
chat_span.set_data(SPANDATA.GEN_AI_SYSTEM, GEN_AI_SYSTEM)
235237
chat_span.set_data(SPANDATA.GEN_AI_REQUEST_MODEL, model_name)
238+
chat_span.set_data(SPANDATA.GEN_AI_AGENT_NAME, model_name)
236239
set_span_data_for_request(
237240
chat_span, integration, model_name, contents, kwargs
238241
)

sentry_sdk/integrations/langchain.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,14 @@ def on_chat_model_start(self, serialized, messages, *, run_id, **kwargs):
276276
elif "openai" in ai_type:
277277
span.set_data(SPANDATA.GEN_AI_SYSTEM, "openai")
278278

279+
agent_name = (
280+
sentry_sdk.get_current_scope()
281+
._contexts.get("langchain_agent", {})
282+
.get("agent_name")
283+
)
284+
if agent_name:
285+
span.set_data(SPANDATA.GEN_AI_AGENT_NAME, agent_name)
286+
279287
for key, attribute in DATA_FIELDS.items():
280288
if key in all_params and all_params[key] is not None:
281289
set_data_normalized(span, attribute, all_params[key], unpack=False)
@@ -428,6 +436,14 @@ def on_tool_start(self, serialized, input_str, *, run_id, **kwargs):
428436
if tool_description is not None:
429437
span.set_data(SPANDATA.GEN_AI_TOOL_DESCRIPTION, tool_description)
430438

439+
agent_name = (
440+
sentry_sdk.get_current_scope()
441+
._contexts.get("langchain_agent", {})
442+
.get("agent_name")
443+
)
444+
if agent_name:
445+
span.set_data(SPANDATA.GEN_AI_AGENT_NAME, agent_name)
446+
431447
if should_send_default_pii() and self.include_prompts:
432448
set_data_normalized(
433449
span,
@@ -756,6 +772,9 @@ def new_invoke(self, *args, **kwargs):
756772
name=f"invoke_agent {agent_name}" if agent_name else "invoke_agent",
757773
origin=LangchainIntegration.origin,
758774
) as span:
775+
sentry_sdk.get_current_scope().set_context(
776+
"langchain_agent", {"agent_name": agent_name, "tools": tools}
777+
)
759778
if agent_name:
760779
span.set_data(SPANDATA.GEN_AI_AGENT_NAME, agent_name)
761780

@@ -794,6 +813,8 @@ def new_invoke(self, *args, **kwargs):
794813
):
795814
set_data_normalized(span, SPANDATA.GEN_AI_RESPONSE_TEXT, output)
796815

816+
sentry_sdk.get_current_scope().remove_context("langchain_agent")
817+
797818
return result
798819

799820
return new_invoke
@@ -814,11 +835,15 @@ def new_stream(self, *args, **kwargs):
814835

815836
span = start_span_function(
816837
op=OP.GEN_AI_INVOKE_AGENT,
817-
name=f"invoke_agent {agent_name}".strip(),
838+
name=f"invoke_agent {agent_name}" if agent_name else "invoke_agent",
818839
origin=LangchainIntegration.origin,
819840
)
820841
span.__enter__()
821842

843+
sentry_sdk.get_current_scope().set_context(
844+
"langchain_agent", {"agent_name": agent_name, "tools": tools}
845+
)
846+
822847
if agent_name:
823848
span.set_data(SPANDATA.GEN_AI_AGENT_NAME, agent_name)
824849

@@ -868,6 +893,8 @@ def new_iterator():
868893
):
869894
set_data_normalized(span, SPANDATA.GEN_AI_RESPONSE_TEXT, output)
870895

896+
sentry_sdk.get_current_scope().remove_context("langchain_agent")
897+
871898
span.__exit__(None, None, None)
872899

873900
async def new_iterator_async():
@@ -887,6 +914,8 @@ async def new_iterator_async():
887914
):
888915
set_data_normalized(span, SPANDATA.GEN_AI_RESPONSE_TEXT, output)
889916

917+
sentry_sdk.get_current_scope().remove_context("langchain_agent")
918+
890919
span.__exit__(None, None, None)
891920

892921
if str(type(result)) == "<class 'async_generator'>":

0 commit comments

Comments
 (0)