Skip to content
7 changes: 7 additions & 0 deletions sentry_sdk/integrations/langchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,13 @@ def on_tool_start(
SPANDATA.GEN_AI_AGENT_NAME, agent_metadata["lc_agent_name"]
)

run_name = kwargs.get("name")
if run_name:
span.set_data(
SPANDATA.GEN_AI_PIPELINE_NAME,
run_name,
)

if should_send_default_pii() and self.include_prompts:
set_data_normalized(
span,
Expand Down
27 changes: 27 additions & 0 deletions tests/integrations/langchain/test_langchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,33 @@ def test_langchain_chat(
assert chat_spans[0]["data"]["gen_ai.pipeline.name"] == "my-snazzy-pipeline"


def test_langchain_tool_call_with_run_name(
sentry_init,
capture_events,
):
sentry_init(
integrations=[
LangchainIntegration(
include_prompts=True,
)
],
traces_sample_rate=1.0,
send_default_pii=True,
)
events = capture_events()

with start_transaction():
get_word_length.invoke(
{"word": "eudca"},
config={"run_name": "my-snazzy-pipeline"},
)

tx = events[0]
tool_spans = list(x for x in tx["spans"] if x["op"] == "gen_ai.execute_tool")
assert len(tool_spans) == 1
assert tool_spans[0]["data"]["gen_ai.pipeline.name"] == "my-snazzy-pipeline"


@pytest.mark.skipif(
LANGCHAIN_VERSION < (1,),
reason="LangChain 1.0+ required (ONE AGENT refactor)",
Expand Down
Loading