@@ -1051,18 +1051,36 @@ def _get_usage_attributes(usage):
10511051 """
10521052 attributes = {}
10531053
1054- if hasattr (usage , "prompt_tokens" ) and isinstance (usage .prompt_tokens , int ):
1055- attributes [SPANDATA .GEN_AI_USAGE_INPUT_TOKENS ] = usage .prompt_tokens
1056- elif hasattr (usage , "input_tokens" ) and isinstance (usage .input_tokens , int ):
1057- attributes [SPANDATA .GEN_AI_USAGE_INPUT_TOKENS ] = usage .input_tokens
1058- elif hasattr (usage , "completion_tokens" ) and isinstance (
1059- usage .completion_tokens , int
1060- ):
1061- attributes [SPANDATA .GEN_AI_USAGE_OUTPUT_TOKENS ] = usage .output_tokens
1062- elif hasattr (usage , "output_tokens" ) and isinstance (usage .output_tokens , int ):
1063- attributes [SPANDATA .GEN_AI_USAGE_OUTPUT_TOKENS ] = usage .completion_tokens
1064- elif hasattr (usage , "total_tokens" ) and isinstance (usage .total_tokens , int ):
1065- attributes [SPANDATA .GEN_AI_USAGE_TOTAL_TOKENS ] = usage .total_tokens
1054+ if isinstance (usage , dict ):
1055+ # input tokens
1056+ if "prompt_tokens" in usage and isinstance (usage ["prompt_tokens" ], int ):
1057+ attributes [SPANDATA .GEN_AI_USAGE_INPUT_TOKENS ] = usage ["prompt_tokens" ]
1058+ if "input_tokens" in usage and isinstance (usage ["input_tokens" ], int ):
1059+ attributes [SPANDATA .GEN_AI_USAGE_INPUT_TOKENS ] = usage ["input_tokens" ]
1060+ # output tokens
1061+ if "completion_tokens" in usage and isinstance (usage ["completion_tokens" ], int ):
1062+ attributes [SPANDATA .GEN_AI_USAGE_OUTPUT_TOKENS ] = usage ["completion_tokens" ]
1063+ if "output_tokens" in usage and isinstance (usage ["output_tokens" ], int ):
1064+ attributes [SPANDATA .GEN_AI_USAGE_OUTPUT_TOKENS ] = usage ["output_tokens" ]
1065+ # total tokens
1066+ if "total_tokens" in usage and isinstance (usage ["total_tokens" ], int ):
1067+ attributes [SPANDATA .GEN_AI_USAGE_TOTAL_TOKENS ] = usage ["total_tokens" ]
1068+ else :
1069+ # input tokens
1070+ if hasattr (usage , "prompt_tokens" ) and isinstance (usage .prompt_tokens , int ):
1071+ attributes [SPANDATA .GEN_AI_USAGE_INPUT_TOKENS ] = usage .prompt_tokens
1072+ if hasattr (usage , "input_tokens" ) and isinstance (usage .input_tokens , int ):
1073+ attributes [SPANDATA .GEN_AI_USAGE_INPUT_TOKENS ] = usage .input_tokens
1074+ # output tokens
1075+ if hasattr (usage , "completion_tokens" ) and isinstance (
1076+ usage .completion_tokens , int
1077+ ):
1078+ attributes [SPANDATA .GEN_AI_USAGE_OUTPUT_TOKENS ] = usage .completion_tokens
1079+ if hasattr (usage , "output_tokens" ) and isinstance (usage .output_tokens , int ):
1080+ attributes [SPANDATA .GEN_AI_USAGE_OUTPUT_TOKENS ] = usage .output_tokens
1081+ # total tokens
1082+ if hasattr (usage , "total_tokens" ) and isinstance (usage .total_tokens , int ):
1083+ attributes [SPANDATA .GEN_AI_USAGE_TOTAL_TOKENS ] = usage .total_tokens
10661084
10671085 return attributes
10681086
@@ -1081,6 +1099,8 @@ def _get_output_attributes(template, send_pii, result):
10811099 elif hasattr (result , "metadata" ):
10821100 if hasattr (result .metadata , "usage" ):
10831101 attributes .update (_get_usage_attributes (result .metadata .usage ))
1102+ elif isinstance (result , dict ) and "usage" in result :
1103+ attributes .update (_get_usage_attributes (result ["usage" ]))
10841104
10851105 elif hasattr (result , "model" ) and isinstance (result .model , str ):
10861106 attributes [SPANDATA .GEN_AI_RESPONSE_MODEL ] = result .model
0 commit comments