Skip to content

Commit bdfed80

Browse files
committed
token estimation langchain
1 parent d231f90 commit bdfed80

File tree

2 files changed

+14
-0
lines changed
  • src/langtrace_python_sdk/instrumentation

2 files changed

+14
-0
lines changed

src/langtrace_python_sdk/instrumentation/langchain_community/patch.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
from opentelemetry.trace import SpanKind
2525
from opentelemetry.trace.status import Status, StatusCode
26+
from langtrace.trace_attributes import SpanAttributes
2627

2728
from langtrace_python_sdk.constants.instrumentation.common import (
2829
LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
@@ -70,6 +71,9 @@ def traced_method(wrapped, instance, args, kwargs):
7071
result = wrapped(*args, **kwargs)
7172
if trace_output:
7273
span.set_attribute("langchain.outputs", to_json_string(result))
74+
span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, instance.get_num_tokens(result))
75+
span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, instance.get_num_tokens(args[0]))
76+
7377

7478
span.set_status(StatusCode.OK)
7579
return result

src/langtrace_python_sdk/instrumentation/langchain_core/patch.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from importlib_metadata import version as v
3131

3232
from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
33+
from langtrace.trace_attributes import SpanAttributes
3334

3435

3536
def generic_patch(
@@ -78,8 +79,16 @@ def traced_method(wrapped, instance, args, kwargs):
7879
try:
7980
# Attempt to call the original method
8081
result = wrapped(*args, **kwargs)
82+
8183
if trace_output:
8284
span.set_attribute("langchain.outputs", to_json_string(result))
85+
if result.generations[0][0].text:
86+
span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, instance.get_num_tokens(result.generations[0][0].text))
87+
if isinstance(args[0][0], str):
88+
span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, instance.get_num_tokens(args[0][0]))
89+
90+
else:
91+
span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, instance.get_num_tokens(args[0][0].text))
8392

8493
span.set_status(StatusCode.OK)
8594
return result
@@ -156,6 +165,7 @@ def traced_method(wrapped, instance, args, kwargs):
156165
try:
157166
# Attempt to call the original method
158167
result = wrapped(*args, **kwargs)
168+
159169
if trace_output:
160170
outputs = {}
161171
if isinstance(result, dict):

0 commit comments

Comments
 (0)