Skip to content

Commit 6cf6f9d

Browse files
committed
some agent input/output attributes
1 parent 7a4cd05 commit 6cf6f9d

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

sentry_sdk/integrations/langchain.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,11 @@ def new_invoke(self, *args, **kwargs):
715715
return f(self, *args, **kwargs)
716716

717717
try:
718-
agent_name = self.agent.runnable.config.get("run_name")
718+
agent_name = None
719+
if len(args) > 1:
720+
agent_name = args[1].get("run_name")
721+
if agent_name is None:
722+
agent_name = self.agent.runnable.config.get("run_name")
719723
except Exception:
720724
agent_name = ""
721725

@@ -726,6 +730,8 @@ def new_invoke(self, *args, **kwargs):
726730
origin=LangchainIntegration.origin,
727731
) as span:
728732
span.set_data(SPANDATA.GEN_AI_OPERATION_NAME, "invoke_agent")
733+
span.set_data(SPANDATA.GEN_AI_RESPONSE_STREAMING, False)
734+
729735
if agent_name != "":
730736
span.set_data(SPANDATA.GEN_AI_AGENT_NAME, agent_name)
731737

@@ -740,7 +746,23 @@ def new_invoke(self, *args, **kwargs):
740746
if model_name != "":
741747
span.set_data(SPANDATA.GEN_AI_REQUEST_MODEL, model_name)
742748

743-
return f(self, *args, **kwargs)
749+
result = f(self, *args, **kwargs)
750+
751+
input = result.get("input")
752+
if input is not None:
753+
set_data_normalized(
754+
span,
755+
SPANDATA.GEN_AI_REQUEST_MESSAGES,
756+
[
757+
input,
758+
],
759+
)
760+
761+
output = result.get("output")
762+
if output is not None:
763+
span.set_data(SPANDATA.GEN_AI_RESPONSE_TEXT, output)
764+
765+
return result
744766

745767
return new_invoke
746768

@@ -769,6 +791,17 @@ def new_stream(self, *args, **kwargs):
769791
span.__enter__()
770792

771793
span.set_data(SPANDATA.GEN_AI_OPERATION_NAME, "invoke_agent")
794+
span.set_data(SPANDATA.GEN_AI_RESPONSE_STREAMING, True)
795+
796+
input = args[0].get("input") if len(args) > 1 else None
797+
if input is not None:
798+
set_data_normalized(
799+
span,
800+
SPANDATA.GEN_AI_REQUEST_MESSAGES,
801+
[
802+
input,
803+
],
804+
)
772805

773806
model_name = ""
774807
if hasattr(self, "agent") and hasattr(self.agent, "llm"):
@@ -787,8 +820,12 @@ def new_stream(self, *args, **kwargs):
787820
def new_iterator():
788821
# type: () -> Iterator[Any]
789822
for event in old_iterator:
790-
# import ipdb; ipdb.set_trace()
791823
yield event
824+
825+
output = event.get("output")
826+
if output is not None:
827+
span.set_data(SPANDATA.GEN_AI_RESPONSE_TEXT, output)
828+
792829
span.__exit__(None, None, None)
793830

794831
async def new_iterator_async():

0 commit comments

Comments
 (0)