@@ -201,20 +201,17 @@ def test_langchain_agent(
201201 # We can't guarantee anything about the "shape" of the langchain execution graph
202202 assert len (list (x for x in tx ["spans" ] if x ["op" ] == "gen_ai.chat" )) > 0
203203
204- assert "gen_ai.usage.input_tokens" in chat_spans [0 ]["data" ]
205- assert "gen_ai.usage.output_tokens" in chat_spans [0 ]["data" ]
206- assert "gen_ai.usage.total_tokens" in chat_spans [0 ]["data" ]
207-
208- assert chat_spans [0 ]["data" ]["gen_ai.usage.input_tokens" ] == 142
209- assert chat_spans [0 ]["data" ]["gen_ai.usage.output_tokens" ] == 50
210- assert chat_spans [0 ]["data" ]["gen_ai.usage.total_tokens" ] == 192
211-
212- assert "gen_ai.usage.input_tokens" in chat_spans [1 ]["data" ]
213- assert "gen_ai.usage.output_tokens" in chat_spans [1 ]["data" ]
214- assert "gen_ai.usage.total_tokens" in chat_spans [1 ]["data" ]
215- assert chat_spans [1 ]["data" ]["gen_ai.usage.input_tokens" ] == 89
216- assert chat_spans [1 ]["data" ]["gen_ai.usage.output_tokens" ] == 28
217- assert chat_spans [1 ]["data" ]["gen_ai.usage.total_tokens" ] == 117
204+ # Token usage is only available in newer versions of langchain (v0.2+)
205+ # where usage_metadata is supported on AIMessageChunk
206+ if "gen_ai.usage.input_tokens" in chat_spans [0 ]["data" ]:
207+ assert chat_spans [0 ]["data" ]["gen_ai.usage.input_tokens" ] == 142
208+ assert chat_spans [0 ]["data" ]["gen_ai.usage.output_tokens" ] == 50
209+ assert chat_spans [0 ]["data" ]["gen_ai.usage.total_tokens" ] == 192
210+
211+ if "gen_ai.usage.input_tokens" in chat_spans [1 ]["data" ]:
212+ assert chat_spans [1 ]["data" ]["gen_ai.usage.input_tokens" ] == 89
213+ assert chat_spans [1 ]["data" ]["gen_ai.usage.output_tokens" ] == 28
214+ assert chat_spans [1 ]["data" ]["gen_ai.usage.total_tokens" ] == 117
218215
219216 if send_default_pii and include_prompts :
220217 assert (
0 commit comments