Skip to content

Commit fffb252

Browse files
committed
test(llm-observability): Account for LangGraph 0.3.29 changes
1 parent 7a6e185 commit fffb252

File tree

1 file changed

+32
-63
lines changed

1 file changed

+32
-63
lines changed

posthog/test/ai/langchain/test_callbacks.py

Lines changed: 32 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -618,89 +618,58 @@ def test_graph_state(mock_client):
618618
assert isinstance(result["messages"][2], AIMessage)
619619
assert result["messages"][2].content == "It's a type of greeble."
620620

621-
assert mock_client.capture.call_count == 12
621+
assert mock_client.capture.call_count == 6
622622
calls = [call[1] for call in mock_client.capture.call_args_list]
623623

624-
trace_args = calls[11]
625-
trace_props = calls[11]["properties"]
624+
# The trace event is captured at the end
625+
trace_args = calls[-1]
626+
trace_props = calls[-1]["properties"]
626627

627628
# Events are captured in the reverse order.
628629
# Check all trace_ids
629630
for call in calls:
630631
assert call["properties"]["$ai_trace_id"] == trace_props["$ai_trace_id"]
631632

632-
# First span, write the state
633+
# 1. Span, finish initialization
634+
second_state = {
635+
"messages": [HumanMessage(content="What's a bar?"), AIMessage(content="Let's explore bar.")],
636+
"xyz": "abc",
637+
}
638+
639+
640+
# 1. Span - the fake_plain node, which doesn't do anything
633641
assert calls[0]["event"] == "$ai_span"
634-
assert calls[0]["properties"]["$ai_parent_id"] == calls[2]["properties"]["$ai_span_id"]
642+
assert calls[0]["properties"]["$ai_parent_id"] == trace_props["$ai_trace_id"]
635643
assert "$ai_span_id" in calls[0]["properties"]
644+
assert calls[0]["properties"]["$ai_span_name"] == "fake_plain"
636645
assert calls[0]["properties"]["$ai_input_state"] == initial_state
637-
assert calls[0]["properties"]["$ai_output_state"] == initial_state
646+
assert calls[0]["properties"]["$ai_output_state"] == second_state
638647

639-
# Second span, set the START node
648+
# 2. Span - the ChatPromptTemplate within fake_llm's FakeMessagesListChatModel
640649
assert calls[1]["event"] == "$ai_span"
641-
assert calls[1]["properties"]["$ai_parent_id"] == calls[2]["properties"]["$ai_span_id"]
650+
assert calls[1]["properties"]["$ai_parent_id"] == calls[3]["properties"]["$ai_span_id"]
642651
assert "$ai_span_id" in calls[1]["properties"]
643-
assert calls[1]["properties"]["$ai_input_state"] == initial_state
644-
assert calls[1]["properties"]["$ai_output_state"] == initial_state
652+
assert calls[1]["properties"]["$ai_span_name"] == "ChatPromptTemplate"
645653

646-
# Third span, finish initialization
647-
assert calls[2]["event"] == "$ai_span"
654+
# 3. Generation - the FakeMessagesListChatModel within fake_llm's RunnableSequence
655+
assert calls[2]["event"] == "$ai_generation"
656+
assert calls[2]["properties"]["$ai_parent_id"] == calls[3]["properties"]["$ai_span_id"]
648657
assert "$ai_span_id" in calls[2]["properties"]
649-
assert calls[2]["properties"]["$ai_span_name"] == START
650-
assert calls[2]["properties"]["$ai_parent_id"] == trace_props["$ai_trace_id"]
651-
assert calls[2]["properties"]["$ai_input_state"] == initial_state
652-
assert calls[2]["properties"]["$ai_output_state"] == initial_state
658+
assert calls[2]["properties"]["$ai_span_name"] == "FakeMessagesListChatModel"
653659

654-
# Fourth span, save the value of fake_plain during its execution
655-
second_state = {
656-
"messages": [HumanMessage(content="What's a bar?"), AIMessage(content="Let's explore bar.")],
657-
"xyz": "abc",
658-
}
659-
660-
assert calls[4]["event"] == "$ai_span"
661-
assert calls[4]["properties"]["$ai_parent_id"] == calls[5]["properties"]["$ai_span_id"]
660+
# 4. Span - RunnableSequence within fake_llm
661+
assert calls[3]["event"] == "$ai_span"
662+
assert calls[3]["properties"]["$ai_parent_id"] == calls[4]["properties"]["$ai_span_id"]
662663
assert "$ai_span_id" in calls[3]["properties"]
663-
assert calls[4]["properties"]["$ai_input_state"] == second_state
664-
assert calls[4]["properties"]["$ai_output_state"] == second_state
664+
assert calls[3]["properties"]["$ai_span_name"] == "RunnableSequence"
665665

666-
# Fifth span, run the fake_plain node
667-
assert calls[5]["event"] == "$ai_span"
666+
# 5. Span - the fake_llm node
667+
assert calls[4]["event"] == "$ai_span"
668+
assert calls[4]["properties"]["$ai_parent_id"] == trace_props["$ai_trace_id"]
668669
assert "$ai_span_id" in calls[4]["properties"]
669-
assert calls[5]["properties"]["$ai_span_name"] == "fake_plain"
670-
assert calls[5]["properties"]["$ai_parent_id"] == trace_props["$ai_trace_id"]
671-
assert calls[5]["properties"]["$ai_input_state"] == initial_state
672-
assert calls[5]["properties"]["$ai_output_state"] == second_state
673-
674-
# Sixth span, chat prompt template
675-
assert calls[6]["event"] == "$ai_span"
676-
assert calls[6]["properties"]["$ai_parent_id"] == calls[8]["properties"]["$ai_span_id"]
677-
assert "$ai_span_id" in calls[6]["properties"]
678-
assert calls[6]["properties"]["$ai_span_name"] == "ChatPromptTemplate"
679-
680-
# 7. Generation, fake_llm
681-
assert calls[7]["event"] == "$ai_generation"
682-
assert calls[7]["properties"]["$ai_parent_id"] == calls[8]["properties"]["$ai_span_id"]
683-
assert "$ai_span_id" in calls[7]["properties"]
684-
assert calls[7]["properties"]["$ai_span_name"] == "FakeMessagesListChatModel"
685-
686-
# 8. Span, RunnableSequence
687-
assert calls[8]["event"] == "$ai_span"
688-
assert calls[8]["properties"]["$ai_parent_id"] == calls[10]["properties"]["$ai_span_id"]
689-
assert "$ai_span_id" in calls[8]["properties"]
690-
assert calls[8]["properties"]["$ai_span_name"] == "RunnableSequence"
691-
692-
# 9. Span, fake_llm write
693-
assert calls[9]["event"] == "$ai_span"
694-
assert calls[9]["properties"]["$ai_parent_id"] == calls[10]["properties"]["$ai_span_id"]
695-
assert "$ai_span_id" in calls[9]["properties"]
696-
697-
# 10. Span, fake_llm node
698-
assert calls[10]["event"] == "$ai_span"
699-
assert calls[10]["properties"]["$ai_parent_id"] == trace_props["$ai_trace_id"]
700-
assert "$ai_span_id" in calls[10]["properties"]
701-
assert calls[10]["properties"]["$ai_span_name"] == "fake_llm"
702-
703-
# 11. Trace
670+
assert calls[4]["properties"]["$ai_span_name"] == "fake_llm"
671+
672+
# 6. Trace
704673
assert trace_args["event"] == "$ai_trace"
705674
assert trace_props["$ai_span_name"] == "LangGraph"
706675

0 commit comments

Comments
 (0)