Skip to content

Commit 62769a0

Browse files
authored
feat(langchain): export UsageMetadata (#33692)
as well as `InputTokenDetails`, and `OutputTokenDetails` from `langchain_core.messages`
1 parent f94108b commit 62769a0

File tree

8 files changed

+68
-26
lines changed

8 files changed

+68
-26
lines changed

libs/core/langchain_core/messages/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
from langchain_core.messages.ai import (
1010
AIMessage,
1111
AIMessageChunk,
12+
InputTokenDetails,
13+
OutputTokenDetails,
14+
UsageMetadata,
1215
)
1316
from langchain_core.messages.base import (
1417
BaseMessage,
@@ -87,10 +90,12 @@
8790
"HumanMessage",
8891
"HumanMessageChunk",
8992
"ImageContentBlock",
93+
"InputTokenDetails",
9094
"InvalidToolCall",
9195
"MessageLikeRepresentation",
9296
"NonStandardAnnotation",
9397
"NonStandardContentBlock",
98+
"OutputTokenDetails",
9499
"PlainTextContentBlock",
95100
"ReasoningContentBlock",
96101
"RemoveMessage",
@@ -104,6 +109,7 @@
104109
"ToolCallChunk",
105110
"ToolMessage",
106111
"ToolMessageChunk",
112+
"UsageMetadata",
107113
"VideoContentBlock",
108114
"_message_from_dict",
109115
"convert_to_messages",
@@ -145,6 +151,7 @@
145151
"HumanMessageChunk": "human",
146152
"NonStandardAnnotation": "content",
147153
"NonStandardContentBlock": "content",
154+
"OutputTokenDetails": "ai",
148155
"PlainTextContentBlock": "content",
149156
"ReasoningContentBlock": "content",
150157
"RemoveMessage": "modifier",
@@ -154,12 +161,14 @@
154161
"SystemMessage": "system",
155162
"SystemMessageChunk": "system",
156163
"ImageContentBlock": "content",
164+
"InputTokenDetails": "ai",
157165
"InvalidToolCall": "tool",
158166
"TextContentBlock": "content",
159167
"ToolCall": "tool",
160168
"ToolCallChunk": "tool",
161169
"ToolMessage": "tool",
162170
"ToolMessageChunk": "tool",
171+
"UsageMetadata": "ai",
163172
"VideoContentBlock": "content",
164173
"AnyMessage": "utils",
165174
"MessageLikeRepresentation": "utils",

libs/core/langchain_core/messages/ai.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ class InputTokenDetails(TypedDict, total=False):
4848
}
4949
```
5050
51-
!!! version-added "Added in version 0.3.9"
52-
5351
May also hold extra provider-specific keys.
5452
53+
!!! version-added "Added in version 0.3.9"
54+
5555
"""
5656

5757
audio: int
@@ -83,6 +83,8 @@ class OutputTokenDetails(TypedDict, total=False):
8383
}
8484
```
8585
86+
May also hold extra provider-specific keys.
87+
8688
!!! version-added "Added in version 0.3.9"
8789
8890
"""

libs/core/tests/unit_tests/messages/test_imports.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@
5555
"convert_to_openai_data_block",
5656
"convert_to_openai_image_block",
5757
"convert_to_openai_messages",
58+
"UsageMetadata",
59+
"InputTokenDetails",
60+
"OutputTokenDetails",
5861
]
5962

6063

libs/core/tests/unit_tests/prompts/__snapshots__/test_chat.ambr

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -680,9 +680,9 @@
680680
}
681681
```
682682

683-
!!! version-added "Added in version 0.3.9"
684-
685683
May also hold extra provider-specific keys.
684+
685+
!!! version-added "Added in version 0.3.9"
686686
''',
687687
'properties': dict({
688688
'audio': dict({
@@ -798,6 +798,8 @@
798798
}
799799
```
800800

801+
May also hold extra provider-specific keys.
802+
801803
!!! version-added "Added in version 0.3.9"
802804
''',
803805
'properties': dict({
@@ -2092,9 +2094,9 @@
20922094
}
20932095
```
20942096

2095-
!!! version-added "Added in version 0.3.9"
2096-
20972097
May also hold extra provider-specific keys.
2098+
2099+
!!! version-added "Added in version 0.3.9"
20982100
''',
20992101
'properties': dict({
21002102
'audio': dict({
@@ -2210,6 +2212,8 @@
22102212
}
22112213
```
22122214

2215+
May also hold extra provider-specific keys.
2216+
22132217
!!! version-added "Added in version 0.3.9"
22142218
''',
22152219
'properties': dict({

libs/core/tests/unit_tests/runnables/__snapshots__/test_graph.ambr

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,9 +1104,9 @@
11041104
}
11051105
```
11061106

1107-
!!! version-added "Added in version 0.3.9"
1108-
11091107
May also hold extra provider-specific keys.
1108+
1109+
!!! version-added "Added in version 0.3.9"
11101110
''',
11111111
'properties': dict({
11121112
'audio': dict({
@@ -1222,6 +1222,8 @@
12221222
}
12231223
```
12241224

1225+
May also hold extra provider-specific keys.
1226+
12251227
!!! version-added "Added in version 0.3.9"
12261228
''',
12271229
'properties': dict({

libs/core/tests/unit_tests/runnables/__snapshots__/test_runnable.ambr

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2627,9 +2627,9 @@
26272627
}
26282628
```
26292629

2630-
!!! version-added "Added in version 0.3.9"
2631-
26322630
May also hold extra provider-specific keys.
2631+
2632+
!!! version-added "Added in version 0.3.9"
26332633
''',
26342634
'properties': dict({
26352635
'audio': dict({
@@ -2744,6 +2744,8 @@
27442744
}
27452745
```
27462746

2747+
May also hold extra provider-specific keys.
2748+
27472749
!!! version-added "Added in version 0.3.9"
27482750
''',
27492751
'properties': dict({
@@ -4082,9 +4084,9 @@
40824084
}
40834085
```
40844086

4085-
!!! version-added "Added in version 0.3.9"
4086-
40874087
May also hold extra provider-specific keys.
4088+
4089+
!!! version-added "Added in version 0.3.9"
40884090
''',
40894091
'properties': dict({
40904092
'audio': dict({
@@ -4199,6 +4201,8 @@
41994201
}
42004202
```
42014203

4204+
May also hold extra provider-specific keys.
4205+
42024206
!!! version-added "Added in version 0.3.9"
42034207
''',
42044208
'properties': dict({
@@ -5568,9 +5572,9 @@
55685572
}
55695573
```
55705574

5571-
!!! version-added "Added in version 0.3.9"
5572-
55735575
May also hold extra provider-specific keys.
5576+
5577+
!!! version-added "Added in version 0.3.9"
55745578
''',
55755579
'properties': dict({
55765580
'audio': dict({
@@ -5685,6 +5689,8 @@
56855689
}
56865690
```
56875691

5692+
May also hold extra provider-specific keys.
5693+
56885694
!!! version-added "Added in version 0.3.9"
56895695
''',
56905696
'properties': dict({
@@ -6929,9 +6935,9 @@
69296935
}
69306936
```
69316937

6932-
!!! version-added "Added in version 0.3.9"
6933-
69346938
May also hold extra provider-specific keys.
6939+
6940+
!!! version-added "Added in version 0.3.9"
69356941
''',
69366942
'properties': dict({
69376943
'audio': dict({
@@ -7046,6 +7052,8 @@
70467052
}
70477053
```
70487054

7055+
May also hold extra provider-specific keys.
7056+
70497057
!!! version-added "Added in version 0.3.9"
70507058
''',
70517059
'properties': dict({
@@ -8426,9 +8434,9 @@
84268434
}
84278435
```
84288436

8429-
!!! version-added "Added in version 0.3.9"
8430-
84318437
May also hold extra provider-specific keys.
8438+
8439+
!!! version-added "Added in version 0.3.9"
84328440
''',
84338441
'properties': dict({
84348442
'audio': dict({
@@ -8543,6 +8551,8 @@
85438551
}
85448552
```
85458553

8554+
May also hold extra provider-specific keys.
8555+
85468556
!!! version-added "Added in version 0.3.9"
85478557
''',
85488558
'properties': dict({
@@ -9832,9 +9842,9 @@
98329842
}
98339843
```
98349844

9835-
!!! version-added "Added in version 0.3.9"
9836-
98379845
May also hold extra provider-specific keys.
9846+
9847+
!!! version-added "Added in version 0.3.9"
98389848
''',
98399849
'properties': dict({
98409850
'audio': dict({
@@ -9949,6 +9959,8 @@
99499959
}
99509960
```
99519961

9962+
May also hold extra provider-specific keys.
9963+
99529964
!!! version-added "Added in version 0.3.9"
99539965
''',
99549966
'properties': dict({
@@ -11237,9 +11249,9 @@
1123711249
}
1123811250
```
1123911251

11240-
!!! version-added "Added in version 0.3.9"
11241-
1124211252
May also hold extra provider-specific keys.
11253+
11254+
!!! version-added "Added in version 0.3.9"
1124311255
''',
1124411256
'properties': dict({
1124511257
'audio': dict({
@@ -11354,6 +11366,8 @@
1135411366
}
1135511367
```
1135611368

11369+
May also hold extra provider-specific keys.
11370+
1135711371
!!! version-added "Added in version 0.3.9"
1135811372
''',
1135911373
'properties': dict({
@@ -12684,9 +12698,9 @@
1268412698
}
1268512699
```
1268612700

12687-
!!! version-added "Added in version 0.3.9"
12688-
1268912701
May also hold extra provider-specific keys.
12702+
12703+
!!! version-added "Added in version 0.3.9"
1269012704
''',
1269112705
'properties': dict({
1269212706
'audio': dict({
@@ -12801,6 +12815,8 @@
1280112815
}
1280212816
```
1280312817

12818+
May also hold extra provider-specific keys.
12819+
1280412820
!!! version-added "Added in version 0.3.9"
1280512821
''',
1280612822
'properties': dict({

libs/langchain_v1/langchain/messages/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@
2121
FileContentBlock,
2222
HumanMessage,
2323
ImageContentBlock,
24+
InputTokenDetails,
2425
InvalidToolCall,
2526
MessageLikeRepresentation,
2627
NonStandardAnnotation,
2728
NonStandardContentBlock,
29+
OutputTokenDetails,
2830
PlainTextContentBlock,
2931
ReasoningContentBlock,
3032
RemoveMessage,
@@ -36,6 +38,7 @@
3638
ToolCall,
3739
ToolCallChunk,
3840
ToolMessage,
41+
UsageMetadata,
3942
VideoContentBlock,
4043
trim_messages,
4144
)
@@ -52,10 +55,12 @@
5255
"FileContentBlock",
5356
"HumanMessage",
5457
"ImageContentBlock",
58+
"InputTokenDetails",
5559
"InvalidToolCall",
5660
"MessageLikeRepresentation",
5761
"NonStandardAnnotation",
5862
"NonStandardContentBlock",
63+
"OutputTokenDetails",
5964
"PlainTextContentBlock",
6065
"ReasoningContentBlock",
6166
"RemoveMessage",
@@ -67,6 +72,7 @@
6772
"ToolCall",
6873
"ToolCallChunk",
6974
"ToolMessage",
75+
"UsageMetadata",
7076
"VideoContentBlock",
7177
"trim_messages",
7278
]

libs/langchain_v1/uv.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)